ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 基于PXA255的自动聚焦及图像采集模块设计

基于PXA255的自动聚焦及图像采集模块设计

Linux操作系统 作者:喜欢你的微 时间:2015-04-07 13:35:42 0 删除 编辑
  目前市场上流行的摄像手机一般都不具备自动聚焦功能,这对于传感器分辨率在30万像素以下的摄像手机来说影响不大,但随着百万像素手机的面世,以及手机录像功能的采用,人们对摄像头的自动聚焦功能越来越关注。本文在Xhyper255开发板的基础上,结合项目开发的需要,在开发板上移植QT/embedded作为嵌入式GUI,并设计了自动聚焦和图像采集子模块,其中自动聚焦部分通过verilog HDL在开发板上的FPGA上实现,图像采集部分利用linux内核提供的video 4 linux接口实现。最后的采集程序界面采用嵌入式QT设计工具designer进行设计。


  基于图像处理的自动聚焦系统算法


  与传统的自动聚焦算法相比,基于图像处理的自动聚焦算法的实现不需要额外的信号源和相应的接收传感器,这有利于缩小器件的体积以降低成本,并降低器件的功耗。


  在这类算法中,分析处理模块直接对获得的视频图像进行处理,以得到相应的判决函数,驱动控制模块则根据得到的聚焦判决函数信息来驱动步进电机,带动镜头前后移动,直到获得聚焦清楚的图像。因此,构造合理的判决函数就成了基于图像处理的自动聚焦算法的关键所在。理想的聚焦判决函数应该具有单峰性、无偏性并能反映离焦的极性,同时应具有较强的抗干扰能力。


  在对目前的自动聚焦判决函数做相应的对比后,结合本系统的特点选择2D-DCT变换去除其中的低频成分,其余部分相加作为判决函数。2D-DCT变换的公式如式1所示。


  (1)


  这里C(0)=1/,C(u)=C(v)   (u,v≠0)


  自动聚焦系统的实现


  开发平台的搭建如图1所示。


  采用Xhyper255嵌入式开发板,图像采集子系统采用如下硬件搭建:30万像素CMOS图像传感器OV7620、 MCS51单片机、USB控制器OV511+、 步进电机和变焦镜头。


  OV7620的主要特性为:单片数字式彩色图像传感器;1/3光学格式;数字视频输出格式: 1~500倍的自动曝光范围;自动增益和自动白平衡;能进行亮度、对比度、饱和度、伽马校正等多种调节功能。664×492的图像阵列扫描出原始的R、G、B彩色图像信号,经模拟处理电路进行曝光、校正、白平衡调整等处理后根据输出要求可以转换成YUV等多种信号输出形式。OV511+是为CMOS图像传感器设计的专用USB接口控制芯片。


  DCT变换的FPGA实现


  2D-DCT变换是视频压缩中的常用变换。在压缩过程中,将一幅图像分成许多8×8的小块进行变换。8×8的2D-DCT变换如式(2)所示:


  (2)


  这里C(0)=1/,C(u)=C(v)=1 (u,v≠0时)。


  变换后去除其中的直大悟一中流成份,其余的部分相加作为聚焦判决函数。函数最大值处即为焦点所处位置。


  1. 块准备:给定的大小为640×480的彩色图像矩阵,将其分为三个矩阵,分别为亮度矩阵(Y),每个的大小为8×8,共4800个;剩下的同相矩阵(I)和正交矩阵(Q)分化为两组1200个矩阵,每个大小为8×8,使用下列矩阵将RGB分量映射到Y,I,Q分量上:


  Y=0.30R+0.59G+0.11B


  I=0.60R-0.28G-0.32B


  Q=0.21R-0.52G+0.31B


  对每个8×8矩阵Y,I,Q分量计算DCT,要计算2D-DCT,先对矩阵每行进行1D-DCT,然后对结果矩阵按列进行1D-DCT计算。


  2. DCT模块设计:DCT系数采用case语句用查找表结构实现,程序源代码不在此详述。


  DCT变换的实现过程为:串行数据首先放到输入缓冲(采用环形寄存器来构造),然后进行求积、求和运算,最终以并行数据的形式输出。这些操作要在控制模块下完成,以保证时序的正确。


  DCT变换模块的框图如图2所示。8×8DCT变换实际上就是64个像素点的并行运算。对每个象素点所作的运算为:输入数据和DCT系数相乘,而后相加得到最后结果。流程如图3所示。


  由公式可知,需要计算8×8=64次,每计算一次后,将i,j,u,v做相应变化,并重新在系数表中找到相应的系数,和新的数据相乘,作下一次运算。


  自动聚焦的实现


  去除每个8×8矩阵中的低频成分。然后把相应的高频成分相加,所得的和做为自动聚焦的判决函数,传输到CPU。编程实现一路PWM信号输出,控制步进电机的步长和方向。实现自动聚焦。自动聚焦的流程如图4所示。


  图像采集的实现


  图像采集程序的编写基于linux内核中提供的Video4Linux 接口。Video4Linux是2.2.0版本之后linux内核提供给网络摄像头、视频采集卡、电视卡等设备软件开发的接口标准。这个标准为内核、驱动、应用程序提供一个API进行交流。目前的最新Video4Linux版本为V4L2。
推荐阅读:http://www.steelhome.cn/blog/blogentry.php?entryid=101443

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30007806/viewspace-1519779/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-11-04

  • 博文量
    17
  • 访问量
    50015