人眼视觉是立体的,立体的视觉带给人类的不仅仅是可以判断观看对象的空间状态,它和颜色一起,使这个世界更加丰富多彩、变化万千。2010年伊始,随着立体电影《阿凡达》的热映,在世界各地掀起了一股3D的热潮,3D技术成为各界关注的焦点。三菱、索尼、LG、三星等各大显示器厂商相继推出自己的立体电视,并寄希望于立体电视市场的开发。
立体显示技术经历了多年的发展,无论在显示质量,还是实现方法上都有了很大的进步,自由立体显示由于不需要佩戴任何辅助工具,因此正在成为立体显示发展的方向。其中,以LCD为基础,基于视差的立体显示技术由于技术成熟且实现工艺不复杂,成为最有可能实现商业化的热门技术之一。基于AVR单片机的自由立体显示系统正是在这一技术的基础上,利用特殊的光学部件和LED照明阵列实现的。
Kalman滤波是一种线性最小方差估计,算法采用递推形式在时域内滤波,数据存储量小,预测精度高,适用于对多维随机过程进行估计,这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测)。常用于从一组有限的,包含噪声的,对物体位置的观察序列中得到关于物体位置的好的估计。在自由立体显示系统中,单片机在进行电路控制的同时还对人眼位置信息进行Kalman滤波和预测。
1 系统的工作原理及总体方案设计
1.1 立体显示的实现原理
视差立体的实现原理是将一对立体图像分别送入人的左右眼睛,经过大脑融合后就可以产生立体效果。根据这一原理,设计了一款立体显示器,17寸LCD的奇数行和偶数行分别显示左右立体图像,光学部分利用菲涅尔透镜控制光路的走向,垂直分光装置使位于不同垂直位置的两组LED背光源只能分别照亮LCD屏幕的奇数行或偶数行,如图1所示。同时,两组光源的水平位置也有差别,这样就为左右眼分别提供了只能看到奇数行或偶数行的可视区域,如图2所示。当观察者在屏幕前自由移动的时候,通过摄像头探测到人眼的位置信息,用单片机控制LED照明阵列在适当的地方点亮,保证始终提供正确的可视区域,实现自由立体显示。
[page]
1.2 基于单片机的Kalman滤波的预测实现Kalman信号模型包括状态方程和测量方程。状态方程描述了系统当前状态和前一状态的状态转移关系。如下所示:
平稳条件下,Q,R是恒定的。Kalman滤波的过程就是根据观测值和信号模型恢复出原始信号的过程。
滤波器的输出由式(4)给出:
式中:称为测量过程的革新或残余,它代表了预期的测量值和实际测量值之间的误差;K是增益因子,用于最小化后验均方误差,在滤波过程中会动态发生改变,如果测量更准确K将越大,模型估计越准确K越小。K的值和模型估计误差P相关联,K和P由下面式子迭代算出。
式(5),式(6)为Kalman滤波的预测阶段,使用上一状态的估计,做出对当前状态的估计。式(7)~(9)为Kalman滤波的更新阶段,利用对当前状态的观测值优化在预测阶段获得的预测值,以获得一个更精确的滤波值。
Kalman滤波预测跟踪有一个启动过程,经过若干次迭代后。Kalman滤波才会趋于稳定。在该系统中,采用匀速直线运动模型,状态方程为:
式中:x(n)代表眼睛(左眼或右眼)位置的水平坐标;v(n)代表眼睛运动的速度;t代表时间间隔;wk-1代表这两个变量的模型误差,它的协方差阵定义为:
[page]
对于模型参数Q11,Q22和R,由PC机辅助计算得到。给定一组测量位置和实际位置,在Q11,Q22,R三维空间按等量的方法选取格点,分别训练不同参数下的Kalman滤波器对检测数据进行滤波,如果滤波后的位置与真实值越接近,就说明这组滤波器参数越优秀。得到了最优参数后,就可以按照前面的介绍,进行不断“预测一修正”的Kalman滤波,获得精度更高的人眼位置(式(8)),并利用式(5)预测t/2时间后的人眼位置,此时增益矩阵:1.3 系统的总体方案设计
自由立体显示系统由计算机、RS 232通信电路、单片机控制电路、驱动电路和LED照明阵列电路组成,结构框图如图3所示。
上位机完成人眼检测算法,并且把人眼位置信息通过RS 232送给单片机。单片机选择AVR系列中功能最强的ATmega128,主要完成对人眼位置数据的处理,然后按照一定的时序发送给驱动芯片。控制电路更新LED照明阵列时,按地址逐个发送数据“1”或“0”,控制每一列LED的点亮与否。
2 硬件设计
2.1 驱动电路
根据背光源亮度恒定的要求,LED阵列的驱动采用聚积科技生成的16位恒流LED驱动芯片MBI5026,其内建的CMOS移位缓存器与栓锁功能,可以将串行输入的数据转换成并行输出的格式,电流的输出值可以通过一个外接电阻进行调整,高达25 MHz的时钟频率可以满足大量数据传输的要求。
2.2 控制电路
ATmega128是ATMEL公司推出的一款8位RISC结构高速低功耗单片机,在16 MHz时钟频率时系统性能可达16 MIPS,内带128 KB的FLASHRO M,4 KB的E2PROM、4 KB系统SRAM;可扩展64 KB外部存储器;两个8位定时器/计数器,两个16位定时器/计数器;两路UART通信口,可工作在异步或同步方式。在与上位机通信的过程中,需要采用MAX232电平转换芯片将PC机串口输出的RS 232电平转换成单片机能接受的TTL电平。
3 软件设计
软件设计的总体思路是PC机检测到人眼的位置信息,给出左眼的位置数据和右眼的位置数据,单片机在得到这两个数据后,启动TC1开始t/2时间的定时,同时开始Kalman滤波,使用由式(8)得到的滤波值刷新LED照明阵列。定时器中断服务处理程序主要包括清零TCCR1B以停止定时器,按照t/2时刻人眼位置的预测值刷新LED照明阵列。这样,在人眼检测速率为每秒25帧的情况下,可以将LED的刷新速率提升到每秒50次,有效减轻了可视区域随观察者位置变化而带来的跳跃感。
程序实现对系统的初始化,包括I/O端口的初始化、TC1的初始化、中断设置、串行口工作方式选择、各种变量的初值装入。波特率设置为115 200 b/s,数据格式采用8位数据位,1位起始位,1位停止位。初始化完成后,程序进入等待状态,若上位机发送数据,则进入相应的串行口中断服务处理程序,如图4所示。
[page]
4 实验
在实验中采用NASA的航拍视差图像对,观看距离490~550 mm,观看视角±30°以内。实际得到的图像如图5所示,其中图5(a)是观察者左眼看到的图像。图5(b)是观察者右眼看到的图像,由于这两幅图像存在视差,最终就会在大脑中融合成一幅具有立体感的图像。
Kalman预测使得LED背光的刷新频率由25 Hz提高到50 Hz,跳动感有所减弱。此外,为了验证Kalman滤波算法的效果,手工标记了1 500帧图片中左右两眼的精确位置,单片机通过串口将滤波值以及1/2帧处的预测值回发给上位机。定义:
式中:△反映了与真实值的偏移程度。Kalman平衡滤波前,△1=25.56;滤波后,△2=20.45,检测偏差改善了19.99%,由图6可以直观地看出平衡Kalman滤波改善了定位的效果。
5 结语
本文介绍的自由立体显示系统只需要一对立体图片,就可以获得很好的立体效果。采用价格合理、性能优越的单片机控制系统,保证了性能与成本的兼顾。基于匀速运动模型的Kalman滤波器成功改善了系统的性能。
上一篇:AVR单片机定点运算及数制转换子程序
下一篇:基于AVR单片机的实用车载空调控制器电路
推荐阅读最新更新时间:2024-03-16 12:55