本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
众所周知, 视觉是人类感知世界的最重要的方式, 而现实生活中的所有物质形态都是以三维空间而客观存在。三维显示能真正地再现客观世界的立体空间, 提供更符合人们观察习惯的交流方式, 有助于人们在综合运用各种深度暗示之后, 通过大脑的计算感知而获得真实、丰富、可靠的视觉体验, 对社会的发展以及在科技、经济等方面的发展具有重要的作用。
目前, 三维显示大致可以分为四类: 体视三维显示、全息三维显示、透视三维显示和体三维显示 ,其显示的原理和特点如表1 所示。
表1 各类三维显示原理及特点
本文通过旋转24×16 二维LED 阵列实现了具有69120个体像素, 空间尺寸为Φ9414 mm ×6618mm 柱体内的三维显示, 文中论述了系统的整体结构、显示原理及其各组成部分的实现方法。最后并以显示“茶壶”为例, 对此体三维显示系统进行了分析和讨论。
1 LED 体三维显示系统设计
1.1 整体方案
由于人眼具有视觉暂留的特性, 即人类视觉对亮度改变的跟踪会由于意识处理延迟而滞后。基于此特性, 利用电机驱动置于对称转轴两侧的发光二极管阵列, 使之高速旋转, 周期性地扫出一个柱体空间。同时, 寻址驱动控制电路根据需要调制不同时刻LED阵列的发光状态, 这样通过快速显示一幅幅二维图像截面序列来实现三维显示。由于人眼视觉暂留时间约为50~100ms, 当电机转速超过10r/s时, 人便不会有闪烁的感觉, 而是看到三维的立体图像。根据此原理可设计如图1 所示的LED体三维显示系统。
利用计算机生成三维数据再通过数据传输电路把数据传输到旋转驱动板上面的存储器中, 并且由角度编码器来测试电机的旋转角度并把信号送给FPGA , 然后由FPGA 根据采集的角度编码器输出信号驱动LED 屏显示并按时刷新LED 显示屏。同时, 整个旋转驱动板在电机的驱动下快速的旋转, 快速显示一幅幅二维截面图像来实现三维显示。
1.2 三维数据生成
利用Matlab 软件的强大功能, 首先可以通过im read ()、im f info ()、m eshgrid ()、m eshc () 和su rf ()等语句来实现具有灰度值的三维图像, 假设获得的三维图像角坐标为P (X0, Y0, Z0)。
令LED阵列旋转所得的圆柱空间中LED 灯的柱坐标为F ( r, H, z ) , 根据柱坐标与直角坐标的转换关系, 求得空间LED灯的三维直角坐标E (X 1, Y 1,Z 1) 可表示如下:
其中r, H, z 均为整数, 且有: - 12< r≤12, 0< H≤360, 0< z ≤16。
最后, 令D(X2, Y2, Z2) = P(X0, Y0, Z0) ∩E (X1, Y1, Z1 ) 求出该显示的L ED 灯的三维直角坐标, 以此作为三维数据的信息源。
从Matlab 610 版本开始,Mathworks 公司在软件中增加了设备控制箱( Instrument control toolbox ) , 提供对RS2232/RS2485 通信标准的串口通信的正式支持。因此本系统使用该工具箱的serial 类及fopen、fw rite 等函数, 通过RS2232 串口并利用数据传输电路把获得的三维图像数据传输到LED 驱动电路板上。
阅读原文请访问电子发烧友,原文地址:http://www.elecfans.com/emb/fpga/20111104235770.html |