论文部分内容阅读
摘要: 图像传感器在采集每一个像素时仅采集它的R、G、B其中一种颜色分量的强度信息.在彩色数字图像系统中,需对传感器图像进行实时处理和颜色插值.邻近插值算法的时间复杂度和空间复杂度都较小,可以通过流处理实现,这使得它容易在FPGA上实现且节省硬件资源.在进行硬件实现之前首先通过MATLAB对邻近插值法的还原效果进行验证.硬件设计中使用移位寄存器连接FIFO的架构,并使用标准Verilog代码编写实现,最终用Modelsim仿真驗证设计.
关键词: 邻近插值法; 流处理; Bayer RGB; FPGA
中图分类号: TP 391.41文献标志码: A文章编号: 10005137(2016)04-0411-06
1图像传感器与Bayer RGB
图像传感器,是组成数字摄像头的重要组成部分.根据原件的不同,可分为电荷耦合元件(CCD)和金属氧化物半导体元件(CMOS).但是不论对于何种类型的图像传感器来说,它们在采集每一个像素时都仅采集它的R、G、B其中一种颜色分量的强度信息.Bayer模式是目前应用最为广泛的像素分布格式,它允许从一个单独平面中得到彩色图像[1].在传感器和镜头之间有一个CFA(Color Filter Array)滤镜.CFA滤镜的每一个滤光单元和传感器像素对应,光线透过CFA滤镜投射在传感器上.CFA图像的结构特点是在CFA图像上每一行每一列的绿色位置是间隔排列的,且绿色分量占了一半[2].这是因为眼睛对绿色分量最敏感,能够辨别更多的细节,这也是绿色的特性所决定的.如图1所示,它是电磁波的可见光谱中的中波部分,其波长是500~570 nm,绿光在光波中占有重要地位.并且绿色和亮度也具有较强的相关性[3].
在Bayer模式中,红色分量的采样率为25%,蓝色分量的采样率为25%,绿色分量的采样率最高为50%,其排列顺序如图2所示.红色分量仅出现在奇数行,偶数列.蓝色分量仅出现在偶数行、奇数列.绿色分量呈菱形分布[4].
2Bayer RGB还原方法
2.1插值法简介
在彩色数字图像系统中,需对传感器图像进行颜色插值.好的插值方法可以提高图像质量,简化硬件实现的难度.随着国内外学者的深入研究,最为流行的几种插值法有邻近插值法、双线性插值法、边缘差值法、中值滤波插值法等,还有许多算法使用了小波变换和空间域转换方法,其优点是恢复的图像效果好,但是运算过程很复杂[5],无法应用在数码相机产品中.
2.2邻近插值法
邻近插值算法的时间复杂度和空间复杂度都较小,容易在FPGA上实现且节省硬件资源.该算法根据邻近像素相关性最强的原理,用邻近位置的颜色分量值来插值该位置的颜色分量值.这种算法在边缘丰富或者色差跳跃很大的图像中处理效果较差,对图像质量要求很高的场景不适合使用邻近插值算法.但是对于图像质量要求并不苛刻的场景,这种算法简单快捷,硬件实现容易,节省硬件资源.
使用邻近插值法进行插值,首先将Bayer RGB模式中的RGB 3种颜色分量分开,看做3个独立的颜色通道,然后分别对单个颜色通道进行插值.首先来看红色分量的插值.去除Bayer RGB中蓝色和绿色分量后可得到如图3所示的红色分量的通道.将红色通道分量的整幅图像分割成一个个只有右上角有红色分量值的2×2小模块,每个2×2小模块中其他3个像素点的红色分量值都为空.插值时,其他3个红色分量为空的像素点位置都插入其所在的2×2小模块右上角的已知值来作为它们的红色分量.插值后如图4所示.
对蓝色分量的插值和红色分量的插值采用类似方法.图5所示为蓝色分量的通道,同样将蓝色通道分量的整幅图像看成2×2的小模块,不同的是每个小模块只有左下角有蓝色值.插值时每个2×2小模块中其他3个像素点的蓝色分量值值都取左下角的已知值来填充.插值后如图6所示.
对于绿色分量,它的分布和红色分量,蓝色分量略有不同,其呈菱形分布,每一行都有绿色值.图7所示为绿色分量的通道,在插值的时候,对于奇数行,取其右边像素的绿色分量进行插值;对于偶数行,取其左边像素的绿色分量进行插值.插值后如图8所示.
3邻近插值算法的FPGA实现
3.1最小子模块
类似于JPEG编码时需要对图像进行8×8子模块的划分.邻近插值算法在还原Bayer RGB的时候需要对图像做2×2子模块的划分.邻近插值算法插入像素的颜色分量是直接从该像素的邻近像素上获取的,只要待插值像素的周边像素中包含了它丢失的RGB分量值即可.在Bayer格式的图像中任意选取一个2×2的子模块,其中都有2个绿色分量,1个红色分量,1个蓝色分量,包含了全部的3种颜色分量.因此2×2的子模块是进行邻近插值的最小子模块.
3.2流处理
流处理具有固定的时钟频率,通常每像素1个时钟周期,时钟速率受输入和输出的限制.在输入端时,传送来的像素必须被处理,否则就会丢失.在输出端时,每个时钟周期必须产生一个像素,否则就没有可显示的数据.因此,流处理系统的设计至少在输入和输出是同步的.输入数据一旦从存储器中读入或者从相机中流入,就传送到第一个操作,不是将结果返回主存储器,而是直接传送下一个操作,这种流处理克服了存储器的数量和速度的瓶颈限制.流处理非常适合低级图像处理操作.
3.3系统架构
CMOS传感器输出像素是按逐行扫描的顺序输出数据的,如果在已经获取了第N行M列像素的时候,需要同时获取第N+1行M列的像素就需要先将第N行M列像素保存起来,并进行一个行扫描的延时,再将保存的像素读出.例如在双线性插值算法还原Bayer RGB时,插入像素值的颜色分量不仅与该像素左右邻近像素呈线性关系,还与该像素上一行位置的像素和下一行位置的像素呈线性关系[6].所以在硬件实现双线性插值算法时至少需要2个行延时来获取周边线性相关的像素[7].类似地,邻近插值算法在硬件实现上也需要进行行延时,由于邻近插值的最小子模块为2行2列.所以在硬件实现的时候只需要进行一个行扫描的延时即可. 移位寄存器和FIFO在保存数据时都具有先入先出的特性.利用这种特性存储传感器按逐行扫描顺序输出的数据,可以作为传感器输出数据的缓存.例如镁光的MT9P006芯片输出的图像一行有2 592个像素,则2 592个相同数据宽度的移位寄存器或者长度为2592的FIFO正好可以存一行像素的颜色分量.但是由于随着移位寄存器增加,编程时Verilog代码量会随之增加,调用2 000个以上移位寄存器会使编程变得困难[8];而FIFO是串行输出,在讀取数据时没有移位寄存器灵活.所以采用移位寄存器连接FIFO的设计实现2×2子模块更加合理.
系统使用4个移位寄存器来存储2×2子模块里的数据.为了使4个移位寄存器在同一时刻存储的值为图像中2×2子模块的值,加入FIFO作为行缓存,FIFO的长度为传感器图像一行所包含的像素个数减2[9],根据FIFO反馈的存储信号,设置外部逻辑控制FIFO的读写.在4个移位寄存器当中,其中2个连接FIFO的输入端,存储第N行M列和第N行M+1列的数据.另外2个移位寄存器连接FIFO的输出端,存储第N+1行M列和第N+1行M+1列的数据,4个移位寄存器和FIFO的连接如图9所示.
3.4子模块类型
将4个移位寄存器命名为:SHIFT2_1、SHIFT2_2、SHIFT1_1、SHIFT1_2,分别对应2×2子模块的第1行第1列、第1行第2列、第2行第1列、第2行第2列.它们在同一时刻,按存储的颜色分量类型不同可以将2×2子模块分为4种类型[10],即RGrGbB块、GrRBGb块、GbBRGr块、BGbGrR块,分别如图10~13所示.
3.5插值算法
如图9所示,对应于子模块第一行的2个移位寄存器SHIFT2_1和SHIFT2_2连接在FIFO的输出端.由于移位寄存器和FIFO都具有先入先出的特性,因此SHIFT2_2中存储的数据和其他3个移位寄存器中的数据相比较是最先被传感器输出的.在SHIFT2_2输出它所存储的像素的同时,需要对该像素进行丢失颜色分量的插值.而根据2×2子模块的类型不同,插值方式也相应不同.当在SHIFT2_2中存储的像素的颜色分量被输出时,应该从其他3个移位寄存器中取出该像素邻近的2个像素的其他2个颜色分量作为该像素的颜色分量.
如图11所示,当SHIFT2_2中存储的为R时,SHITF2_1中存储的为Gr,SHIFT1_2中存储的为Gb,SHIFT1_1中存储的为B,其他3种不再赘述.
3.6系统时序
前端传感器的像素时钟频率作为系统的最低工作频率,在Xilinx的XC7Z020芯片上最高频率可达452.49 MHz,整个系统均为同步触发.
图像传感器输出的一行像素个数为N.FPGA系统获取的传感器输出数据,在第1时钟周期里被存入移位寄存器SHIFT1_1,在第2个时钟该数据被转存到SHIFT1_2,在第3个时钟该数据进入FIFO.进入FIFO后经历N2个系统时钟周期即在第N+1个时钟周期时被转存到SHIFT2_1,在第N+2个时钟周期时被转存到SHIFT2_2中.所以系统从获取第一个传感器输出数据到传出第一个完成插值的像素需要N+3个像素时钟.第一个数据在系统中传输的同时,第二个数据也紧接着在系统中传输,所以传出第一个完成插值的像素到传出第二个完成插值的像素需要一个系统时钟.
由于系统为同步触发,所以当在FIFO中已经存入了N-1个数据的时候需要向系统做出反馈,在下一时刻将对FIFO进行读操作,读出数据并存入SHIFT2_1;当移位寄存器SHIFT2_2存入新数据的时候,用于判断2×2子模块类型的两位计数器开始计数,根据计数器中的数值确定插值类型.
4实验结果与仿真
在进行系统设计之前首先对邻近插值算法进行了MATLAB的仿真.验证邻近插值算法的处理效果如图14所示.
图14依次给出了原始图片、Bayer模式下的红色分量通道、绿色分量通道、蓝色分量通道以及未经过处理的传感器输出图像和经过邻近插值法处理后还原的图像.对比传感器直接输出的图像和经过插值后还原的图像,可以看出Bayer RGB经过邻近插值后消除了彩色马赛克现象,但是存在一定的横竖条纹.
FPGA邻近插值法的系统设计代码在Altera的QuartusII和Xilinx的ISE环境中均编译通过,并在Modelsim中仿真验证了结果的正确性.如图15所示模拟给出0~255的八位像素颜色分量数据.图16中输出得到每个像素的RGB 3种值.
可以看出输入数据一旦从存储器中读入或者从相机中流入,就传送到第一个操作,不是将结果返回主存储器而是直接传送下一个操作,这种流处理的实时性使得对于图像边缘像素的颜色插值存在色差.
5总结
对于相机、摄像头等数码产品需要进行实时图像处理,这就意味着每个操作也必须在有限的执行时间内完成.传感器输出的Bayer格式数据不能直接作为图像显示,为了实时的采集和显示图像,需要快速的还原Bayer RGB.采用邻近插值法进行图像的还原,在色彩跳跃度不大的图像中具有良好的图像还原效果,并且系统占用硬件资源少,处理速度快.在Xilinx FPGA的XC7Z020芯片上综合后显示仅占用782个LUT查找表,占XC7Z020芯片LUT总数的1.4%,最高工作频率可达452.49 MHz;在Altera FPGA较低端系列的CycloneII芯片上综合后只占用195个LE逻辑单元,占CycloneII芯片LE总数的4%.最高工作频率也能达到116.29 MHz.系统设计全部采用标准Verilog语言编写,可移植性好.
参考文献:
[1]Zhang D,Wu X.Color reproduction from noisy CFA data of single sensor digital cameras [J].Image Processing,IEEE Transactions on,2007,16(9):2184-2197. [2]Chung K H,Chan Y H.A lossless compression scheme for Bayer color filter array images [J].Image Processing,IEEE Transactions on,2008,17(2):134-144.
[3]Ma T,Wu D S,Cui W.Compression methods of Bayer image format and FPGA implementation [J].Science Technology and Engineering,2006,(6):1509-1510.
[4]Zhang Y.Color interpolation algorithm of CMOS image [D].Xi′an:Xi′an University of Science and Technology,2013.
[5]Li Y Y,Meng W.Realtime hardware Bayer color format image restoration algorithm and its implementation [J].Chinese optics and Applied Optics,2009,(12):539-541.
[6]Wang Y B.Study on the recovery of Bayer format in real time system based on FPGA [J].Microelectronics and computer,2013(5):78-80.
[7]Yang H,Tong S F.Conversion from Bayer to RGB based on FPGA [J].Modern Electronics technique,2010,33(2):122-124.
[8]Yang J Z.Design and implementation of image acquisition system by industrial camera based on FPGA [D].Chengdu:University of Electronic Science and technology,2014.
[9]Andriani S,Brendel H.Crosstalk correction technique for single sensor camera provided with bayer color filter array [C]//IEEE.International conference on Image Processing.Melbourne:IEEE,2013.
[10]Teng W,An B W.Preprocess of Bayer pattern image based on FPGA+DSP [J].Electronic Design Engineering,2010(10):145-147.
Implementation of restoring Bayer RGB on FPGA through
Nearest Neighbor Interpolation
WANG Jian, YING Jun, ZENG Weijun, ZENG Shuang
(College of Informiation,Mechanical and Electrical Engineering,Shanghai Normal University,Shanghai 200234,China)
Abstract:
Image sensors only sample the intensity information of one color component of RGB when each pixel is collected.In color digital image system,it needs realtime processing and color interpolation for the sensor image.Both time complexity and space complexity of Nearest Neighbor Interpolation(NNI) are smaller and can be achieved by stream processing,which makes it easy to be implemented in the FPGA hardware and is hardware resourcesaving.First,the NNI′s restoration effect of neighbor interpolation method is verified by MATLAB before making hardware implementation.In the hardware design,shift register is used to connect FIFO′s framework,standard Verilog code is used for realization and finally Modelsim is used to simulate and verify design.
Key words:
Nearest Neighbor Interpolation(NNI); sream processing; Bayer RGB; FPGA
(責任编辑:包震宇)
关键词: 邻近插值法; 流处理; Bayer RGB; FPGA
中图分类号: TP 391.41文献标志码: A文章编号: 10005137(2016)04-0411-06
1图像传感器与Bayer RGB
图像传感器,是组成数字摄像头的重要组成部分.根据原件的不同,可分为电荷耦合元件(CCD)和金属氧化物半导体元件(CMOS).但是不论对于何种类型的图像传感器来说,它们在采集每一个像素时都仅采集它的R、G、B其中一种颜色分量的强度信息.Bayer模式是目前应用最为广泛的像素分布格式,它允许从一个单独平面中得到彩色图像[1].在传感器和镜头之间有一个CFA(Color Filter Array)滤镜.CFA滤镜的每一个滤光单元和传感器像素对应,光线透过CFA滤镜投射在传感器上.CFA图像的结构特点是在CFA图像上每一行每一列的绿色位置是间隔排列的,且绿色分量占了一半[2].这是因为眼睛对绿色分量最敏感,能够辨别更多的细节,这也是绿色的特性所决定的.如图1所示,它是电磁波的可见光谱中的中波部分,其波长是500~570 nm,绿光在光波中占有重要地位.并且绿色和亮度也具有较强的相关性[3].
在Bayer模式中,红色分量的采样率为25%,蓝色分量的采样率为25%,绿色分量的采样率最高为50%,其排列顺序如图2所示.红色分量仅出现在奇数行,偶数列.蓝色分量仅出现在偶数行、奇数列.绿色分量呈菱形分布[4].
2Bayer RGB还原方法
2.1插值法简介
在彩色数字图像系统中,需对传感器图像进行颜色插值.好的插值方法可以提高图像质量,简化硬件实现的难度.随着国内外学者的深入研究,最为流行的几种插值法有邻近插值法、双线性插值法、边缘差值法、中值滤波插值法等,还有许多算法使用了小波变换和空间域转换方法,其优点是恢复的图像效果好,但是运算过程很复杂[5],无法应用在数码相机产品中.
2.2邻近插值法
邻近插值算法的时间复杂度和空间复杂度都较小,容易在FPGA上实现且节省硬件资源.该算法根据邻近像素相关性最强的原理,用邻近位置的颜色分量值来插值该位置的颜色分量值.这种算法在边缘丰富或者色差跳跃很大的图像中处理效果较差,对图像质量要求很高的场景不适合使用邻近插值算法.但是对于图像质量要求并不苛刻的场景,这种算法简单快捷,硬件实现容易,节省硬件资源.
使用邻近插值法进行插值,首先将Bayer RGB模式中的RGB 3种颜色分量分开,看做3个独立的颜色通道,然后分别对单个颜色通道进行插值.首先来看红色分量的插值.去除Bayer RGB中蓝色和绿色分量后可得到如图3所示的红色分量的通道.将红色通道分量的整幅图像分割成一个个只有右上角有红色分量值的2×2小模块,每个2×2小模块中其他3个像素点的红色分量值都为空.插值时,其他3个红色分量为空的像素点位置都插入其所在的2×2小模块右上角的已知值来作为它们的红色分量.插值后如图4所示.
对蓝色分量的插值和红色分量的插值采用类似方法.图5所示为蓝色分量的通道,同样将蓝色通道分量的整幅图像看成2×2的小模块,不同的是每个小模块只有左下角有蓝色值.插值时每个2×2小模块中其他3个像素点的蓝色分量值值都取左下角的已知值来填充.插值后如图6所示.
对于绿色分量,它的分布和红色分量,蓝色分量略有不同,其呈菱形分布,每一行都有绿色值.图7所示为绿色分量的通道,在插值的时候,对于奇数行,取其右边像素的绿色分量进行插值;对于偶数行,取其左边像素的绿色分量进行插值.插值后如图8所示.
3邻近插值算法的FPGA实现
3.1最小子模块
类似于JPEG编码时需要对图像进行8×8子模块的划分.邻近插值算法在还原Bayer RGB的时候需要对图像做2×2子模块的划分.邻近插值算法插入像素的颜色分量是直接从该像素的邻近像素上获取的,只要待插值像素的周边像素中包含了它丢失的RGB分量值即可.在Bayer格式的图像中任意选取一个2×2的子模块,其中都有2个绿色分量,1个红色分量,1个蓝色分量,包含了全部的3种颜色分量.因此2×2的子模块是进行邻近插值的最小子模块.
3.2流处理
流处理具有固定的时钟频率,通常每像素1个时钟周期,时钟速率受输入和输出的限制.在输入端时,传送来的像素必须被处理,否则就会丢失.在输出端时,每个时钟周期必须产生一个像素,否则就没有可显示的数据.因此,流处理系统的设计至少在输入和输出是同步的.输入数据一旦从存储器中读入或者从相机中流入,就传送到第一个操作,不是将结果返回主存储器,而是直接传送下一个操作,这种流处理克服了存储器的数量和速度的瓶颈限制.流处理非常适合低级图像处理操作.
3.3系统架构
CMOS传感器输出像素是按逐行扫描的顺序输出数据的,如果在已经获取了第N行M列像素的时候,需要同时获取第N+1行M列的像素就需要先将第N行M列像素保存起来,并进行一个行扫描的延时,再将保存的像素读出.例如在双线性插值算法还原Bayer RGB时,插入像素值的颜色分量不仅与该像素左右邻近像素呈线性关系,还与该像素上一行位置的像素和下一行位置的像素呈线性关系[6].所以在硬件实现双线性插值算法时至少需要2个行延时来获取周边线性相关的像素[7].类似地,邻近插值算法在硬件实现上也需要进行行延时,由于邻近插值的最小子模块为2行2列.所以在硬件实现的时候只需要进行一个行扫描的延时即可. 移位寄存器和FIFO在保存数据时都具有先入先出的特性.利用这种特性存储传感器按逐行扫描顺序输出的数据,可以作为传感器输出数据的缓存.例如镁光的MT9P006芯片输出的图像一行有2 592个像素,则2 592个相同数据宽度的移位寄存器或者长度为2592的FIFO正好可以存一行像素的颜色分量.但是由于随着移位寄存器增加,编程时Verilog代码量会随之增加,调用2 000个以上移位寄存器会使编程变得困难[8];而FIFO是串行输出,在讀取数据时没有移位寄存器灵活.所以采用移位寄存器连接FIFO的设计实现2×2子模块更加合理.
系统使用4个移位寄存器来存储2×2子模块里的数据.为了使4个移位寄存器在同一时刻存储的值为图像中2×2子模块的值,加入FIFO作为行缓存,FIFO的长度为传感器图像一行所包含的像素个数减2[9],根据FIFO反馈的存储信号,设置外部逻辑控制FIFO的读写.在4个移位寄存器当中,其中2个连接FIFO的输入端,存储第N行M列和第N行M+1列的数据.另外2个移位寄存器连接FIFO的输出端,存储第N+1行M列和第N+1行M+1列的数据,4个移位寄存器和FIFO的连接如图9所示.
3.4子模块类型
将4个移位寄存器命名为:SHIFT2_1、SHIFT2_2、SHIFT1_1、SHIFT1_2,分别对应2×2子模块的第1行第1列、第1行第2列、第2行第1列、第2行第2列.它们在同一时刻,按存储的颜色分量类型不同可以将2×2子模块分为4种类型[10],即RGrGbB块、GrRBGb块、GbBRGr块、BGbGrR块,分别如图10~13所示.
3.5插值算法
如图9所示,对应于子模块第一行的2个移位寄存器SHIFT2_1和SHIFT2_2连接在FIFO的输出端.由于移位寄存器和FIFO都具有先入先出的特性,因此SHIFT2_2中存储的数据和其他3个移位寄存器中的数据相比较是最先被传感器输出的.在SHIFT2_2输出它所存储的像素的同时,需要对该像素进行丢失颜色分量的插值.而根据2×2子模块的类型不同,插值方式也相应不同.当在SHIFT2_2中存储的像素的颜色分量被输出时,应该从其他3个移位寄存器中取出该像素邻近的2个像素的其他2个颜色分量作为该像素的颜色分量.
如图11所示,当SHIFT2_2中存储的为R时,SHITF2_1中存储的为Gr,SHIFT1_2中存储的为Gb,SHIFT1_1中存储的为B,其他3种不再赘述.
3.6系统时序
前端传感器的像素时钟频率作为系统的最低工作频率,在Xilinx的XC7Z020芯片上最高频率可达452.49 MHz,整个系统均为同步触发.
图像传感器输出的一行像素个数为N.FPGA系统获取的传感器输出数据,在第1时钟周期里被存入移位寄存器SHIFT1_1,在第2个时钟该数据被转存到SHIFT1_2,在第3个时钟该数据进入FIFO.进入FIFO后经历N2个系统时钟周期即在第N+1个时钟周期时被转存到SHIFT2_1,在第N+2个时钟周期时被转存到SHIFT2_2中.所以系统从获取第一个传感器输出数据到传出第一个完成插值的像素需要N+3个像素时钟.第一个数据在系统中传输的同时,第二个数据也紧接着在系统中传输,所以传出第一个完成插值的像素到传出第二个完成插值的像素需要一个系统时钟.
由于系统为同步触发,所以当在FIFO中已经存入了N-1个数据的时候需要向系统做出反馈,在下一时刻将对FIFO进行读操作,读出数据并存入SHIFT2_1;当移位寄存器SHIFT2_2存入新数据的时候,用于判断2×2子模块类型的两位计数器开始计数,根据计数器中的数值确定插值类型.
4实验结果与仿真
在进行系统设计之前首先对邻近插值算法进行了MATLAB的仿真.验证邻近插值算法的处理效果如图14所示.
图14依次给出了原始图片、Bayer模式下的红色分量通道、绿色分量通道、蓝色分量通道以及未经过处理的传感器输出图像和经过邻近插值法处理后还原的图像.对比传感器直接输出的图像和经过插值后还原的图像,可以看出Bayer RGB经过邻近插值后消除了彩色马赛克现象,但是存在一定的横竖条纹.
FPGA邻近插值法的系统设计代码在Altera的QuartusII和Xilinx的ISE环境中均编译通过,并在Modelsim中仿真验证了结果的正确性.如图15所示模拟给出0~255的八位像素颜色分量数据.图16中输出得到每个像素的RGB 3种值.
可以看出输入数据一旦从存储器中读入或者从相机中流入,就传送到第一个操作,不是将结果返回主存储器而是直接传送下一个操作,这种流处理的实时性使得对于图像边缘像素的颜色插值存在色差.
5总结
对于相机、摄像头等数码产品需要进行实时图像处理,这就意味着每个操作也必须在有限的执行时间内完成.传感器输出的Bayer格式数据不能直接作为图像显示,为了实时的采集和显示图像,需要快速的还原Bayer RGB.采用邻近插值法进行图像的还原,在色彩跳跃度不大的图像中具有良好的图像还原效果,并且系统占用硬件资源少,处理速度快.在Xilinx FPGA的XC7Z020芯片上综合后显示仅占用782个LUT查找表,占XC7Z020芯片LUT总数的1.4%,最高工作频率可达452.49 MHz;在Altera FPGA较低端系列的CycloneII芯片上综合后只占用195个LE逻辑单元,占CycloneII芯片LE总数的4%.最高工作频率也能达到116.29 MHz.系统设计全部采用标准Verilog语言编写,可移植性好.
参考文献:
[1]Zhang D,Wu X.Color reproduction from noisy CFA data of single sensor digital cameras [J].Image Processing,IEEE Transactions on,2007,16(9):2184-2197. [2]Chung K H,Chan Y H.A lossless compression scheme for Bayer color filter array images [J].Image Processing,IEEE Transactions on,2008,17(2):134-144.
[3]Ma T,Wu D S,Cui W.Compression methods of Bayer image format and FPGA implementation [J].Science Technology and Engineering,2006,(6):1509-1510.
[4]Zhang Y.Color interpolation algorithm of CMOS image [D].Xi′an:Xi′an University of Science and Technology,2013.
[5]Li Y Y,Meng W.Realtime hardware Bayer color format image restoration algorithm and its implementation [J].Chinese optics and Applied Optics,2009,(12):539-541.
[6]Wang Y B.Study on the recovery of Bayer format in real time system based on FPGA [J].Microelectronics and computer,2013(5):78-80.
[7]Yang H,Tong S F.Conversion from Bayer to RGB based on FPGA [J].Modern Electronics technique,2010,33(2):122-124.
[8]Yang J Z.Design and implementation of image acquisition system by industrial camera based on FPGA [D].Chengdu:University of Electronic Science and technology,2014.
[9]Andriani S,Brendel H.Crosstalk correction technique for single sensor camera provided with bayer color filter array [C]//IEEE.International conference on Image Processing.Melbourne:IEEE,2013.
[10]Teng W,An B W.Preprocess of Bayer pattern image based on FPGA+DSP [J].Electronic Design Engineering,2010(10):145-147.
Implementation of restoring Bayer RGB on FPGA through
Nearest Neighbor Interpolation
WANG Jian, YING Jun, ZENG Weijun, ZENG Shuang
(College of Informiation,Mechanical and Electrical Engineering,Shanghai Normal University,Shanghai 200234,China)
Abstract:
Image sensors only sample the intensity information of one color component of RGB when each pixel is collected.In color digital image system,it needs realtime processing and color interpolation for the sensor image.Both time complexity and space complexity of Nearest Neighbor Interpolation(NNI) are smaller and can be achieved by stream processing,which makes it easy to be implemented in the FPGA hardware and is hardware resourcesaving.First,the NNI′s restoration effect of neighbor interpolation method is verified by MATLAB before making hardware implementation.In the hardware design,shift register is used to connect FIFO′s framework,standard Verilog code is used for realization and finally Modelsim is used to simulate and verify design.
Key words:
Nearest Neighbor Interpolation(NNI); sream processing; Bayer RGB; FPGA
(責任编辑:包震宇)