李 红,李明伟
编码曝光相机设计与实现
李 红,李明伟
( 大连理工大学电子信息与电气工程学部,辽宁大连 116024 )
为了用普通监控相机的资源获取快速运动物体的清晰图像,本文设计了一种基于硬件摄像技术的编码曝光相机。其方法是在CCD时序电路中预设二进制编码序列控制曝光方式,用FPGA技术实现并驱动CCD图像传感器获取图片。然后在ARM的微处理器核中,用反卷积方法对拍摄图片进行去模糊处理。使用编码序列控制曝光方式拍摄的图像能够充分的保留图像的高频信息,这样卷积去模糊能够转变为常态问题,最后得到较高质量的图像。实验表明,对比常规曝光获取的图像,编码曝光方式拍摄的快速运动物体图像信息清晰,效果满意。
摄影技术;编码曝光;曝光方式;ARM;FPGA
相机同被拍摄物体之间的相对运动而导致的图像模糊称为运动模糊,许多监控拍摄场景是无法重复,一旦发生这样情况,就会失去一张珍贵的资料照片,解决运动模糊问题是图像处理技术的一个重要课题[1],本文介绍一种基于硬件摄像技术的解决方案。
除了一些特殊场合,如天文拍摄,相机拍摄时一般都采用单次曝光。单次曝光在时域中可以看作是一个窄带滤波器,在和运动图像进行卷积之后,破坏图像中非常重要的高频信息。在通过去卷积恢复图像时出现严重的振铃效应,图像变得模糊,这就使得通过去卷积方法去模糊成为一个病态问题。为了解决这一问题,Ramesh Raskar等人提出了一种新颖的方法,即通过编码控制曝光时间拍摄照片[2]。编码曝光的一般做法是,通过提前设定好二进制序列,在图像传感器曝光的过程中控制相机快门的开合,这种方法与在曝光时间一直将快门张开的传统方法有着很大的区别。这种曝光方式将窄带滤波器变为宽带滤波器,其傅里叶变换很好地保留了高频信息,从而使因去模糊过程引起的病态问题转换为常态问题。
图1(a) 传统曝光过程示意图
Fig.1(a) Schematic diagram of traditional exposure
图1(b) 编码曝光示意图
Fig.1(b) Schematic diagram of coded exposure
基于编码曝光的思想,本文设计了一款使用CCD图像传感器的编码曝光相机。这种相机是一种基于硬件拍摄技术的解决方案,其最大特点是具有编码曝光和去模糊功能,使用单个普通相机清晰拍摄高速运动的物体[3-4],曝光时间可以用不同的编码控制,去模糊过程简单。编码曝光相机是编码曝光技术的研究平台,不同的编码会取得不同的效果。本文采用一个简单的去卷积方法达到去模糊效果[5-6]。相机采用连续可调的电子快门,通过特定的二进制序列控制相机进行编码曝光,得到编码曝光图像。然后运用此序列来估算点扩散函数(PSF),对获得的图像进行去模糊处理,得到清晰的图像。
编码相机系统的两种曝光过程示意图如图1所示,本文的主要任务就是要控制相机的曝光方式。
编码相机主要由两个子系统组成,分别是图像采集系统和图像处理系统,共同完成相机编码曝光控制、图像采集和图像解码过程。系统结构如图2所示。
图2 系统结构图
1.1 图像采集系统
图像采集系统大体由三部分组成,分别为CCD图像传感器、CCD信号处理器以及时序驱动器。CCD图像传感器选用索尼公司的低噪声CCD传感器ICX204。ICX204最大有效分辨力为1 034×779,高帧率模式可达60 f/s,并且具有电子快门,电子快门是实现编码曝光的关键所在。CCD信号处理器选用AD9949,AD9949主要有两大功能,一是为像素输出提供水平寄存器转移时钟和复位时钟;二是能够接收ICX204产生的模拟图像信号,通过可变增益放大器放大、相关双采样(CDS)和A/D(模数)转换等操作之后,换算成12位并行数据发送给ARM。将CXD3400N用于传感器的垂直时序驱动,CXD3400N能够对FPGA生成的垂直驱动时序进行电平转换,驱动CCD图像传感器进行电荷转移。
1.2 图像处理系统
图像处理系统使用ARM-A9处理器搭载Linux操作系统,主要功能是原始图像采集、去模糊和压缩存储。该部分由ARM处理器通过相机接口接收AD9949输出的数字图像数据,通过去卷积等方法对模糊图像进行去模糊,得到清晰图像,用于显示和网络传输。
编码相机的主要工作流程为:系统上电以后,FPGA对AD9949相关寄存器进行配置,等待AD9949产生CCD所需要的复位时钟和水平寄存器转移时钟,之后由FPGA生成垂直驱动信号,通过CXD3400N进行电平转换,驱动CCD进行曝光以及电荷转移。CCD稳定工作以后,ARM向FPGA发送编码曝光序列和曝光时间以及其他的命令信息,FPGA确认接收命令后修改AD9949的相关寄存器,并且更新相机的曝光时间并产生曝光序列。FPGA接收AD9949输出的图像数据之后,进行同步处理,接着将图像数据发送给ARM处理器,ARM对编码图像进行去模糊和存储。
2.1 驱动电路
CCD是一类半导体器件,可以把光学影像转换成数字信号。ICX204是行间转移式图像传感器。图像的产生过程为:首先由基底时钟(SUB)控制传感器曝光,感光单元将光信号转换为电荷信号,存储在垂直移位寄存器中,再由垂直寄存器转移时钟(V1,V2A,V2,V3)控制将每一行电荷移动到水平寄存器中,然后由水平寄存器转移时钟(H1,H2)和复位时钟(RG)驱动,在每个时钟周期输出一个像素的电信号。只有几种时钟配合使用,才能使CCD图像传感器正常工作。
ICX204所需垂直寄存器转移时钟和基底时钟(SUB)的几种电平分别为15 V、0 V和-7.5 V,而FPGA输出的是3.3 V电平,所以FPGA和ICX204AL之间需要使用驱动器来提供电平转换和电流驱动。CXD3400N作为一款CCD图像传感器垂直时钟驱动芯片,支持六通道的高速读出模式,包括四个三电平驱动器、两个两电平驱动器以及一个电子快门驱动器。垂直驱动电路示意图如图3所示。
图3 垂直驱动电路
表1 CXD3400N真值表
由于CXD3400N必须输入两电平3.3 V TTL信号,而输出三电平的V2A和V2B信号,所以需要使用时序脉冲XSG2配合XV2A/XV2B产生。其真值见表1。其中:H代表高电平15 V,M代表中间电平0 V,L代表低电平-7.5 V。
水平移位寄存器时钟和复位时钟控制着单个像素的顺序输出,频率最高达36 MHz,所以时序要求非常严格,该时序由AD9949产生,水平驱动电路如图4(a)所示。AD9949将输入时钟CLK的每个周期等分为48个位置,通过配置寄存器H1CONTROL和RGCONTROL,设置H1和RG每个时钟周期上升沿及下降沿位置。其中H1和H3波形相同,H2和H4相同且和H1反相,波形如图4(b)所示,位置3和4分别为H1的上升沿和下降沿位置。
2.2 信号采集
在驱动时序的控制下CCD图像传感器会在每个时钟周期输出一个像素信号,然后通过采样和A/D转换获得数字量。理想的CCD输出信号如图5所示,在1时刻复位时钟为高电平,清除输出电荷;在2时刻,复位时钟为低电平,H1为高电平,CCD输出是复位电压;在3时刻,复位时钟是低电平,H1是低电平,CCD将感光元件转化的电荷输出。2时刻同3时刻电压差即是像素的电压值。
实际情况下CCD输出的信号不但包含像素信息,还夹杂着各类噪声。CCD图像传感器输出信号中主要包含以下几种主要噪声:转移噪声、散粒噪声、暗电流噪声、复位噪声和光子噪声,其中在输出结构中生成的复位噪声占了很大比重[7-8]。CCD器件两个相邻的门脉冲之间输出的热杂波电平是相关的,并没有显著的变化,所以可以利用热杂波的电平相关性来清除杂波。根据热杂波的电平相关性,我们可以确认,2处的复位噪声和3处的复位噪声相当,其中3处电压值为像素电压和复位噪声电压之和。只要消除噪声,就能够获得比较理想的像素电压。相关双采样(CDS)是消除复位噪声的有效办法之一。相关双采样于每个像素周期给CCD输出像素信号进行两次采样,提取去除噪声的像素信息。即在图中2处进行一次采样(SHP),在3处进行一次采样(SHD),两处采样值相减即可得到消除复位噪声的像素值。而实际上CCD输出模拟信号往往不如图中信号这么理想,所以相关双采样的两个位置SHP和SHD非常重要,选取得当才能得到高质量的图像。
图4(a) 水平驱动电路
Fig.4(a) Horizontal drive circuit
图4(b) 可编程时钟位置
Fig.4(b) Programmable clock positions
AD9949集成了模拟前端处理器,主要包括可变增益放大器(VGA)、相关双采样器和12位模数转换器(ADC)。这不仅减少了设计的复杂度,而且减少了分立器件的使用,进一步降低整个系统的噪声。同水平移位寄存器驱动H1类似,相关双采样的每个周期也分为48个位置,SHP和SHD可以通过设置寄存器SAMPCONTROL来配置。在图5中,SHP位于2处,SHD位于3处,就是像素值。再通过VGA放大,A/D转换等模块处理,得到各个像素值的数字量。经过ADC转换之后的数据取高8位,通过相机接口(CAMIF)采集到ARM处理器中进行图像去模糊处理。
图5 相关双采样
3.1 编码曝光设计
编码曝光相机是编码曝光技术的研究平台,通过设置不同的二进制编码序列控制相机曝光时间,若要保留图片的高频信息,则必须使用宽带二进制码。可选用的序列包括:Walsh-Hadamard码、最大长度序列和MURA码等。本文选用一种近似最优编码作为默认编码序列:1111111111111000010011101000111。用户也可以通过相机中的应用设置程序设置自定义编码序列。
传统连续曝光时序如图6(a)所示,从SUB信号下降沿到V2A/V2B信号上升沿为一幅图像曝光时间。这种曝光方式会使图片损失高频分量,导致去模糊图像产生振铃效应等一些负面效果。编码曝光相机重新设计了相机的曝光时间。在曝光时间确定的情况下,将其等分为个时间片,则单个时间片的时间为。时间片上快门的打开与闭合与长度为的二进制序列的值相对应。如图6(b)所示,从第行开始的三行对应的编码曝光序列为“101”,其中“1”表示此行时间内曝光,“0”表示此行时间内不曝光。每次曝光产生的电荷全部转移到垂直移位寄存器中,然后按照传感器所需时序,将垂直移位寄存器中累积的电荷逐个输出。这种曝光方式就保留了图像中的高频分量,使用最简单的反卷积方法就足以得到高质量的图像。
3.2 图像解码
图6(a) 常规曝光时序
Fig.6(a) Traditional exposure timing
图6(b) 编码曝光时序
Fig.6(b) Coded exposure timing
相机和物体之间的相对运动会导致运动模糊,在传统的单曝光照片中,曝光时间可以看作是窄带滤波器,使图像损失高频信息,卷积去模糊成为一个病态问题。使用编码曝光替代单次曝光,则在模糊图像中保留了高频信息,通过卷积去模糊成为一个常态问题。本文的去模糊是使用最简单的反卷积方法,其模型如下:
这里使用线性代数描述卷积,其中表示模糊图像,表示去模糊图像,表示模糊矩阵,用来描述输入图像和点扩散函数(PSF)的卷积,表示由噪声、量化等导致的不确定量,可忽略。
运动模糊的产生就是时间向空间的投射,如图7所示,在秒内的运动导致个像素模糊。因此,在一个时间片内的运动会导致/个像素的模糊。如果点扩散函数(PSF)的长度为,物体在运动方向上的长度为,则总共的模糊长度为(1)。解码的目标就是从观测到的个像素中找到个像素的估计。
图7 一维模糊过程
模糊矩阵可以用如下方法得到。模糊矩阵中第一列为长度为的PSF向量和-1个0。之后各列由其前面那列整体移动一位获得。解码步骤如下:
1) 获取编码序列长度和模糊长度;
2) 根据因子扩大(或缩小)模糊图像;
3) 计算前景的模糊矩阵f;
4) 计算背景向量;
5) 由前景矩阵和背景向量得到模糊矩阵;
6) 根据公式等公式计算去模糊图像;
7) 根据模糊长度调整图像大小。
3.3 解码软件设计
如前所述,通过控制CCD图像传感器曝光时间获取的图像使用ARM处理器上的Linux系统进行解码和保存。AD9949输出的像素数据高8位通过相机接口(CAMIF)连接到ARM处理器,在ARM内部由FIMC控制器控制图像获取。Linux以其开源、稳定、良好的移植性、强大的网络功能、对各类文件系统全面的支持等特点而被广泛应用于各类嵌入式设备的开发中,包括视频监控以及视频通信设备等。V4L2作为Linux系统下的一个通用的视频架构运用到很多视频设备中。本文中的Linux系统的图像采集就是采用V4L2框架来实现,然后通过去模糊算法进行图像解码,解码软件的实现流程图如图8所示。
图8 图像解码流程图
实验方法:相机固定置于桌面之上,设置好曝光编码序列等参数之后,调整视野范围,运动物体在镜头前方快速通过,当运动物体进入镜头视野之后,相机开始拍摄。拍摄得到的图像在ARM中进行去模糊获得清晰图像。实验中将编码长度定为31位。该长度既保证运动目标的信息能够在编码过程中能够被尽量多的保存,又保证了编码拍摄过程的实时性。在实验中,使用目前得到的最佳编码码型“1111111111111000010011101000111”,其中编码中的“1”代表快门开启,“0”代表快门关闭。实验结果如图9所示。图9(a)是通过传统相机拍摄和去模糊的图像,从图中可以看出用传统方式拍摄运动物体并去模糊得到的图像,虽然能大致看出物体细节,但是振铃效应严重,恢复结果用眼睛观察效果非常差。图9(b)是用编码相机拍摄方法拍摄和去模糊的图像,去模糊处理后可以看到图片中的信息非常清晰,细节丰富,图像质量非常高,和图9(a)相比,效果高出很多。
图9(a) 传统相机拍摄和去模糊图像
Fig.9(a) Traditional motion blur image and deblurred image
图9(b) 编码相机拍摄和去模糊图像
Fig.9(b) Coded exposure motion blur image and deblurred image
[1] Giacomo B,Alessandro F. Modeling the performance of image restoration from motion blur [J]. IEEE Transactions on Image Processing(S1057-7149),2012,21(8):3502-3517.
[2] Raskar R,Agrawal A,Tumblin J. Coded exposure photography:motion deblurring using fluttered shutter [J]. Acm Transactions on Graphics(S0730-0301),2006,25(3):795-804.
[3] Agrawal A,Raskar R. Resolving Objects at Higher Resolution from a Single Motion-blurred Image [C]// IEEE Conference on Computer Vision and Pattern Recognition,Minneapolis, USA,June 18,2007:1-8.
[4] 田宇. 单幅运动模糊图像去模糊研究 [D]. 长春:吉林大学,2011:4-24.
TIAN Yu. Research on a Single Image Motion Deblurring [D]. Changchun:Jilin University,2011:4-24.
[5] Jansson P A,Richardson M. Deconvolution of Images and Spectra,2nd Edition [J]. Optical Engineering(S0091-3286),1997,36(11):3224-3225.
[6] Yitzhaky Y,Mor I,Lantzman A,. Direct method for restoration of motion-blurred images [J]. Josa A(S1084-7529),1998,15(6):1512-1519.
[7] 许秀贞,李自田,薛利军. CCD噪声分析及处理技术 [J]. 红外与激光工程,2004,33(4):343-346.
XU Xiuzhen,LI Zitian,XUE Lijun. Analysis and processing of CCD noise [J].Infrared and Laser Engineering,2004,33(4):343-346.
[8] 李云飞,司国良,郭永飞. 科学级CCD相机的噪声分析及处理技术 [J]. 光学精密工程,2005,13(增):158-163.
LI Yunfei,SI Guoliang,GUO Yongfei. Noise analyzing and processing for scientific grade CCD camera[J]. Optics and Precision Engineering,2005,13(Suppl):158-163.
Design and Implementation of Coded Exposure Camera
LI Hong,LI Mingwei
( Faculty of Electronic Information and Electrical Engineering, Dalian University of Technology, Dalian 116024, Liaoning, China)
A coded exposure camera based on the technology of hardware camera is proposed to get the unambiguous image of fast moving objects. A binary code sequence is pre-set in the sequential circuits of CCD to control the pattern of exposure and the imaging sensor in CCD is driven by FPGA. The deconvolution algorithm is applied in a microprocessor of ARM to deblur the image in the next step. The high frequency information could be preserved by using the code sequence to control the exposure pattern. Therefore, a high quality image could be obtained thanks to the fact that the deconvolution algorithm of deblurring could be converted from an ill-posed problem to a well-posed one. The experiments show that the images taken by the coded exposure camera are clearer and better than the images taken by traditional camera.
photography; coded exposure; pattern of exposure; ARM; FPGA
1003-501X(2016)09-0072-06
TB852.1; TB86
A
10.3969/j.issn.1003-501X.2016.09.013
2015-12-15;
2016-03-10
国家科技支撑计划子课题(2013BAK02B04-05)
李红(1990-),男(汉族),安徽亳州人。硕士研究生,主要研究工作是嵌入式图像技术研究。E-mail: 1134842026@qq.com。