立体显示技术经过多年发展已经有了巨大的进步,目前市场上已经商用的立体显示器大多需要佩戴配套的眼镜才能看到立体影像,存在多种不便利因素。已经出现的裸眼立体显示器基于光栅原理,虽然不需要佩戴眼镜,但是水平方向分辨率会降为原始分辨率的一半。因此如何实现不需要佩戴任何辅助设备即可观看全高清3D影像的自由立体显示技术,正成为研究的热点。
在这一背景下,本文提出并实现了一种可控的指向性光学引擎。采用该光学引擎利用普通120 Hz液晶面板即可实现自由立体显示技术。在不佩戴辅助设备的前提下,能达到同时多人观看全高清3D影像的目的。光学引擎采用通过Spartan 3EFPGA控制高亮度LED阵列的指向性背光技术,通过从人眼跟踪模块[1]获得的瞳孔坐标,控制LED驱动电路按照液晶屏的刷新时序准确将光线投射到人的左右眼中。与目前基于Atmega128单片机的光学引擎系统[2]相比,本系统在仅增加很少成本的前提下,具有能够精确控制时序、同步性更好、适应于更大规模LED驱动电路等优势,增加了系统的稳定性和可升级性。整套系统经测试,可在±30°视场角内实现1~5人的实时无辅助立体显示,并能够兼容传统的2D平面显示模式,达到商用标准,具有很好的应用前景。
1 自由立体显示系统工作原理
当场景中同一点在左右视图中具有视差的两点分别投射到对应人眼后,由大脑融合感觉到虚拟立体深度,从而产生立体感。在视差立体显示中能够观看到舒适立体的必要条件主要如下:
(1)左右眼看到的两幅图像各自刷新频率高于46 Hz;
(2)两幅图片的视差小于聚焦一辐辏的容许度;
(3)单视角图像的空间分辨率小于人眼的分辨极限。
根据以上原则,采用商用刷新率为120 Hz、分辨率为1 920×1 080的全高清液晶面板,分别以60 Hz的刷新率显示左右眼图像,利用菲涅尔透镜构成的光学成像系统[3],在液晶屏上的左图像刷新完成后,光学引擎将LED阵列上的对应于左眼位置的固定宽度一段LED点亮并投射到观察者左眼中。同理下一帧右图像刷新完成后,右眼对应位置的LED会将整个屏幕照亮并投射到观察者右眼中。观察者的左右眼将会分别看到以60 Hz刷新的1 920×1 080全高清左右图像,经过大脑融合,就可以实现立体视觉。LED在人眼处投射的光带宽度大致等于人眼的宽度,其余位置几乎没有光线出射。因此本系统的光学利用率极高,只需要几颗高亮LED即可达到可观看的亮度。当有多人观看时,只要LED阵列对应位置不相互重叠,观看者间就不会互相影响,如图1所示。受限于水平方向±30°的视场角,本系统可同时供最多5人互不影响地观看。当观察者在视场角内左右移动时,瞳孔跟踪模块会实时将观察者当前的瞳孔位置发送给光学引擎,由光学引擎实时更新LED位置,使观察者始终能够观看到立体影像。系统可兼容传统2D模式显示,当系统工作在2D模式时,LED阵列以扫描背光模式工作,因此观看者在任何位置看到的画面都与传统2D显示器无异。
2 光学引擎系统设计
2.1 系统总体架构
由上节所介绍的自由立体显示系统原理可知,本系统中光学引擎的主要任务包括视频左右帧同步信号的获取、观看者瞳孔位置坐标的获取和对高亮度LED阵列的控制。目前光学引擎的主控部分采用AVR单片机来完成。受限于单片机的顺序执行单线程架构,无法对系统的时序进行精确控制,很小的功能改变就会导致最终系统的时序错乱,使整个系统的鲁棒性和可定制性较差。并且由于单片机的时钟最高仅能到12 MHz,再加上部分指令执行时间大于一个时钟周期,单片机对TLC5927 LED驱动芯片的配置速率最高仅能达到800 kHz。由于TLC5927采用串行方式配置,当驱动芯片数量为50片时,完成所有驱动芯片的配置需要耗时达1 ms,已经无法满足大规模LED阵列的驱动时序要求。因此本文采用基于FPGA的光学引擎系统。由于FPGA的并行特性,可以方便地对系统时序进行控制,增加和减少功能不会对已有时序产生影响,增强了系统的可定制性和鲁棒性[4]。并且由于FPGA的高时钟频率,系统可以以LED驱动芯片的最大配置时钟频率30 MHz对其进行配置,在1 ms时间内最多可配置1 876片TLC5927,使系统的可扩展性大大增强。系统功能框图如图2所示,其中虚线内的部分由FPGA完成。
2.2 同步信号接收模块设计
从120 Hz液晶面板配套的液晶开关眼镜中可以提取出左右液晶镜片的驱动波形,如图3中lon、loff、ron、roff所示。将该波形经过电平匹配后即可输入FPGA内部的同步信号接收模块,将这4路信号两两异或,即可得到左眼和右眼的同步信号lbuff和rbuff。两路信号的周期均为60 Hz,且相位相差180°。该信号仅仅表示液晶刷新的使能信号,由于液晶翻转需要时间,因此左图和右图LED点亮使能信号需要延时液晶的翻转时间τ,才能输出给主控制器供LED驱动器使用。最后同步信号接收模块输出的波形为图3中的lenable和renable。利用该信号驱动LED驱动器,即可在液晶面板显示左图时点亮左眼LED,显示右图时点亮右眼LED,液晶面板刷新过程中LED不亮。
2.3 串口通信模块设计
为了使光学引擎能够实时更新人眼跟踪模块的瞳孔位置坐标,FPGA使用RS232串口与人眼跟踪模块的DSP通信。右眼的瞳孔位置可以根据左眼瞳孔位置+瞳孔间距得到,在观看者瞳孔间距基本一致的情况下,串口仅需发送左眼瞳孔坐标即可,这样可以大大减少串口的数据量,提高实时性。串口每帧传输10 bit数据,包括一位起始标志位和一位结束标志位[5]。串口通信模块状态机如图4所示。DSP首先发送一个开始字节,内容为56 h,表明新的坐标数据传输开始。第二个字节中传输当前检测到的瞳孔对数(即观看者数量)。根据光学成像系统的参数视场角θ=±30°,最佳观看距离d=1.2 m,人脸宽度w≈0.22 m,可以计算出最大同时观看人数n=[2×(d×tanθ)/w]=6。第三个字节开始传输左眼瞳孔的坐标位置,当串口通信模块获得了所有的瞳孔坐标后,会将这些坐标发送给主控模块,主控模块以这些位置为地址即可从预置在FPGA中的对应表获得显示左图时需要点亮的LED的对应位置。在该地址上加一个偏移量,就可以从同一个对应表中得到显示右图时需要点亮的LED的对应位置。主控模块将这两个位置存放在寄存器中,直到下一次DSP通过串口更新瞳孔位置信息。
在3D显示模式下,LED由主控提供的Enable信号按照120 Hz的帧率刷新,每帧LED熄灭后,LED驱动控制模块从主控获取下一帧的LED位置信息。由于采用8驱动管脚并联的工作方式,因此可以将LED位置信息通过SDI口以3.75 MHz的速率发送给TLC5927阵列,同时以同步方式输出30 MHz的CLK,即可实现每8个CLK周期同步一个SDI电平。SDI信息写入完成后,LED驱动器控制模块发送一个LE信号对TLC5927进行锁存,并在下一次Enable信号到来时将OE信号拉低点亮对应的LED。时序如图6所示。
在实验中,光学引擎系统以Spartan 3E FPGA作为控制处理器,通过RS232串口与DSP瞳孔跟踪模块实时通信,并根据液晶面板同步信号控制大功率LED驱动电路实现对应瞳孔坐标的指向性照明。采用FPGA作为控制处理器实现了对LED驱动芯片时序的精确控制和快速配置,使系统的鲁棒性和可升级性明显提升。实验测试证明,本系统性能达到了市场化要求,具有较好的商业应用前景。
参考文献
[1] Yan Chao,Wang Yuanqing,Zhang Zhaoyang.Robust real-time multi-user pupil detection and tracking under various illumination and large-scale head motion[J].Computer Vision and Image Understanding,2011,115(8):1223-1238.
[2] 张瑞雪,王元庆,张兆扬.基于AVR单片机的自由立体显示背光控制系统[J].现代电子技术,2011,34(23):149-151.
[3] 汪洋,王元庆.多用户自由立体显示技术[J].液晶与显示,2009,24(3):434-437.
[4] 周渝斌.基于FPGA+DSP的智能车全景视觉系统[J].电子技术应用,2011,37(3):38-41.
[5] 王希朝,张毅,程鹏,等.面向物联网应用的UART-WIFI 网关设计[J].微型机与应用,2013,32(8):45-47.
[6] BRAR R S,SURMAN P,SEXTON I,et al.Helium3D:a laser-based 3D display with′3D+′Capability[C].2010 Conference on Visual Media Production(CVMP),IEEE,2010:123-130.
[7] Texas Instruments.16-channel Constant-Current LED sink drivers[DB/OL].(2008-07-xx)[2013-07-15].http://www. ti.com/lit/ds/symlink/tlc5927.pdf.
[8] Texas Instruments.TLC5916 one-wire control-eliminating microprocessor control for LED driver[DB/OL].(2009-07-xx)[2013-07-15].http://www.ti.com/lit/an/slva346/slva346.pdf.