0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

平衡图像质量和硬件消耗的新算法及实现方法

电子设计 来源:中国集成电路 作者:罗碧强 , 李斌 2021-03-17 16:19 次阅读

1.引言

目前,大多数的数字相机的图像传感器,不管是CMOS还是CCD,都是单色的,即只有灰度的变化。为了得到彩色图像,普遍采用的方法是在传感器的表面覆盖一层聚酰亚胺掩膜的彩色滤色器。滤色器的格式有多种,一般为棋盘格式。本文提出的算法针对的是其中最常用的bayer格式,如图1所示,其滤色滤格子分别透过G(绿)、B(蓝)、R(红)三种颜色,其中G的采样率是B、R的两倍,原因是人眼对绿色信息要比蓝色、红色敏感。

图像传感器传来的数据通常对应每个像素点R、G、B三种颜色中的一种颜色信息,图像重组算法(Demosaicing Algorithm)是指把传感器送来的每个像素点信息转化为包含R、G、B三原色信息的图像算法。关于图像重组算法日前主要有独立插值法、按比例插值法、Kimmel法等,本文将在分析这些算法的基础上提出能平衡图像质量和硬件消耗的新算法及实现方法。

平衡图像质量和硬件消耗的新算法及实现方法

2.传统算法

2.1 独立插值算法

最简单的线性方法足R、G、B三分量各自独立进行插值重组,彼此没有关联。以利用相邻像素作平均的插值法为例:

如图2,G2、G4、G6、G8、R1、R3、R7、R9为已知相应像素的相应分量,G5、R2、R4、R6、R8、R5为所求分量,求法如下:

蓝色分量的求法与R相似。

此方法虽然简单,占用硬件资源比较少,但是却会引起色彩混淆和边沿模糊问题,因为其在重组过程中忽略了边沿问题。为了提高图像质量,可以在此基础上加入梯度的控制。因此,该算法采用了梯度小的方向的分量值作均值处理。由于梯度大的方向是边沿变化的方向,若选取了该方向上的值作均值,就会模糊了边沿。以求图2中的G5分量为例:

水平梯度H=|G4-G6|,垂直梯度V=|G2-G8|。

H>V,G5=(G2+G8)/2;H

此外,该算法没有考虑噪声因素,其简单的平均化操作将使一个像素上的噪声扩大到影响九个像素,从而导致信噪比较低。

2.2 按比例插值算法

由于BAYER格式的传感器上G分量比R、B分量要多一倍,于是有人提出利用G分量对R、B分量进行插值。

如图3所示,G1-G9已经插值得到,R1、R3、R7、R9为已知R信息,求R5:

R5={(R1*G5/G1)+(R3*G5/G3)+(R7*G5/G7)+(R9*G5/G9))/4

此算法对消除色彩混淆有一定的作用,但有个致命的缺点,在G分量特别小的区域,两G分量比例(如G5/G1)可能会变得很大;由于R1、R3、R7、R9都只是所要求的R5周围的点,在R5周围很有边沿信息(在图像中,边沿信息与噪声无异)时,如果G5/G1等比例值太大,很可能引入一个非常大的噪声,使得图像失真严重,造成计算R、B分量时对噪声特别敏感,使得图像信噪比降低。

2.3 Kimmel算法

Kimmel算法是图像重组算法中一个常用的经典方法。如图4,Kimmel算法求G5:

其中,E为权重参数,表征该相邻像素参与运算的比例。E由该相邻像素的梯度D决定,梯度D越大,权重E越小。梯度D的定义如下:(其中P代表R,G,B任意一个分量)

从而:Ei=(1+D2(P5)+D2(Pi))1/2,如E3=(1+Dxd2(PS)+Dxd2(P3))1/2。

kimmel算法在求解R、B分量时也同样采用了按比例插值的思想,只是比例权重不同,这样可以较大程度地减弱色彩混淆现象。如图4,用kimmel算法求R5:

Kimmel算法重组得到的图像质量比线性插值的方法提高了很多,但kimmel算法也有其缺点,这是本文提出改进算法的出发点,将在下面讨论。

3.改进的算法

本文在kimmel算法的基础上进行了如下的改进:

(1) 待重组图像像素与周边像素的关联性进一步增强,从而改善图像的边沿特性。

在kimmel算法中梯度简单地以两个像素的某个分量差绝对值表示,本文提出的方法是用一个相应方向上更大范围窗口的像素点的差的平均值来代替原来梯度。

例如,在kimmel算法中,如图1,D=|G[5,5]□G[6,6]|,用本文的方法则为:

这样可进一步加强所求像素点与周边像素已知分量的关联性,从而减弱混淆现象。

(2) 修正kimmel算法在G分量缺少时的缺陷。

在kimmel算法中,在G很小的区域,两像素的G比例就会变得很大,这样会造成图像失真和放大噪声。为此,本文在利用G计算R、B时,可给G设一阈值;此值越大,图像质量越差;此值越小,在G较小区域的图像失真就越严重;因此,此值的设定要经过反复的仿真试验,找到合适的平衡点,本文经过实验对比各参数下的效果,将此值选择为40~60。

(3) 改变kimmel算法所有像素都重新计算其三分量值的做法。

kimmel的算法会改变每个像素三个分量的值,本算法保留原来该像素的已知值,从而可以保留原始图像更多的信息,提高了图像质量。由于本算法要在ASIC上实现,在不影响图像总体质量的前提下,应尽量简化某些运算,节省硬件资源。

①本文在求E时不用开方倒数的方式,而采用查表的方式,即一个范围内的D值对应一个E值,只要所设的值能达到“D大则E小”的效果便可;

②求D时所需的除以21/2的运算可转化成近似移位相加。

4.硬件实现

本算法涉及了大量的算术运算,而且计算中像素相关性的要求需要存储大量像素,所以硬件实现必须适当减少硬件资源和RAM的使用量,从而降低ASIC的面积,本文提出如下的解决方法。

4.1 流水线式的运算处理

由式(1)、式(2)可见,计算插入的R、G、B值要经过大量的运算,而传感器送过来的数据是实时的,对其处理也必须是实时的,也就是说进来像素的分量值就要送出一个像素的R、G、B值。假设模块的主频率和传感器送来的数据频率分别为48MHz和12MHz,则在四个周期就要输出一个像素的R、G、B值。显然,四个48MHz时钟周期是不可能完成如此多的运算的。

本文采用的方法是把众多运算分成m个步骤完成,而每个步骤都占n个周期,一个步骤完成的结果在下一个n个周期运用计算,如此一级一级的计算,输入与输出都是实时的,其设计思想近似于计算机架构中的流水线结构。其中m和n要根据模块时钟与传感器输出数据的频率的比例关系以及所设计ASIC的工艺水平对时序的限制来确定。此方法可使此模块面积减为原始设计的1/2左右。以计算R[5,5](像素坐标如图1)为例:步骤1:求得G[4,3],G[4,5],G[6,3],G[6,5],G[4,7],G[6,7];步骤2:求得R[5,4]和R[5,6];步骤3:求得R[5,5],这样,每个步骤都有4个周期去完成,就可以满足模块的实时性。其中步骤1可再分为前两个周期计算G[4,3],G[4,5]和G[6,3],后两个周期计算G[6,5],G[4,7],G[6,7],从而复用其中除法器、加法器和乘法器,使该运算占用资源减少到一半。同样道理,计算R[5,4]和R[5,6]时也可以复用资源,分别在两个周期内完成其运算。

4.2 堆栈式的RAM操作

此算法要求存储9×9窗口大小的像素信息,也就是要存下9行的传感器送来的数据。本文提出的方法只需要存8行的像素信息即可,但要配合一个9×9的寄存器阵列实现。下面以实例说明RAM操作过程:当第9行数据要送来时,前8行数据已按顺序存储在RAM中。当传感器送来G[1,9]时,模块要进行以下工作:(1)把RAM第1列数据读出;(2)然后把第1列后7行的数据连同G[1,9]写到RAM的第1列中,同时把第1列全部数据连同G[1,9]写到9x9的阵列的第一列中,这样既保存了第1行的数据,又保证第9行数据能写到RAM里,相当于将RAM数据往里推,丢去第1行数据,推入第9行的数据。如此类推,就可以减少一行存储资源。

5.仿真与验证

本文基于摄像头控制器芯片的开发平台进行了仿真验证,并比较了改进的算法与传统算法的优劣。

此模块通过了功能仿真、DC工具时序、面积等分析,并在FPGA板上通过接传感器,经JPEP压缩,由USB传输到计算机验证其效果。本文采用Syn-opsys公司的DC compiler分析了各算法实现的面积代价。同时,本文针对几种算法的图像还原能力作了分析:用线性方法、kimmel方法和本算法处理同一张图片转化的bayer格式图片,设R(x,y)为原图像素值,r(x,y)为处理后像素值:

设满足(3)式的点为还原良好点,其个数为n,本文所用测试图片为640×480大小,令h=n/640×480为算法的还原程度判断。

图5和表1是几种Demosaicing算法的仿真结果图片及其相应的h值和面积代价,可以看到本文提出的方法的图像质量要比其他算法的好,尤其在高频时,混淆现象得到了很好的改善。

6 结论

本文在详细分析传统算法的优劣基础上,提出了新的图象重组算法,而流水线式分时复用资源的实现方法节省了接近一半的资源,很好地克服了模块实时性要求,主频时钟限制和demosaicing算法复杂性带给硬件实现资源成本高的问题。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2545

    文章

    50384

    浏览量

    750655
  • 芯片
    +关注

    关注

    452

    文章

    50117

    浏览量

    420327
  • 控制器
    +关注

    关注

    112

    文章

    16064

    浏览量

    176919
收藏 人收藏

    评论

    相关推荐

    上海 武汉 深圳招聘:图像算法 电机控制算法 ADAS算法 咨询:微信473421885

    硬件实现 6. 有FOC/MRAS/PMSM电机量产项目经验者优先ADAS算法高级工程师-武汉 深圳岗位职责开发并实现汽车高级辅助驾驶系统的计算机视觉
    发表于 08-28 15:29

    【案例分享】改进的图像重组算法及其硬件实现

    图像算法。关于图像重组算法日前主要有独立插值法、按比例插值法、Kimmel法等,本文将在分析这些算法的基础上提出能
    发表于 07-17 04:00

    图像匹配最大互相关算法的专用ASIC硬件实现方法研究

    探讨一种专用ASIC硬件实现方法! 这种方法将DSP的灵活性与ASIC的高效性相结合!构造了单DSP +ASIC多的嵌入式计算机! 对图像
    发表于 12-03 16:23 17次下载

    一种摄像头自动白平衡算法硬件实现

    一种摄像头自动白平衡算法硬件实现王雅君, 吴玉广 ,林万顷(西安电子科技大学微电子所,陕西西安,710071)摘要:提出了一种基于直方图扩展的自动白
    发表于 12-14 11:24 69次下载

    一种改进的图像重组算法及其硬件实现

    一种改进的图像重组算法及其硬件实现罗碧强 李斌(华南理工大学物理科学与技术学院, 广州510640)摘要:图像重组
    发表于 12-24 10:56 10次下载

    图像质量评价方法研究进展

    图像质量评价是图像处理领域的研究热点。该文综合论述了图像质量的主观和客观评价方法,重点阐述了单视
    发表于 02-09 15:08 16次下载

    一种改进的图像重组算法及其硬件实现

    一种改进的图像重组算法及其硬件实现 1.引言 目前,大多数的数字相机的图像传感器,不管是CMOS还是CCD,都是单色的
    发表于 08-15 16:34 861次阅读

    一种低硬件资源消耗快速SVPWM算法

    一种低硬件资源消耗快速SVPWM算法_齐昕
    发表于 01-07 17:16 0次下载

    采用多相位插值算法实现视频图像缩放及其在FPGA硬件平台的验证

    传统的插值算法在视频图像缩放尤其是输出高分辨率的视频图像时,对细节方面的处理性能较差。采用多相位插值算法实现视频
    发表于 11-16 11:48 5046次阅读
    采用多相位插值<b class='flag-5'>算法</b><b class='flag-5'>实现</b>视频<b class='flag-5'>图像</b>缩放及其在FPGA<b class='flag-5'>硬件</b>平台的验证

    色彩复原图像质量评价方法

    方法建立带权值的质量评价函数和对应评价算法流程,利用归一化方法确定权值。通过评价算法流程计算复原的彩色
    发表于 12-18 11:00 1次下载

    图像平衡原理及实现

    本文将详细介绍图像平衡原理及实现,包括内容有白平衡与色温,一种简单的白平衡算法,并且考虑其
    发表于 01-17 11:04 4091次阅读

    如何使用FPGA实现小波图像方法详细说明

    基于小波变换的滤波方法应用于红外图像处理中可以在降低噪声的同时提升图像细节,有效改善图像画质。介绍了一种采用FPGA的小波图像处理
    发表于 02-01 14:54 6次下载
    如何使用FPGA<b class='flag-5'>实现</b>小波<b class='flag-5'>图像</b>的<b class='flag-5'>方法</b>详细说明

    如何使用FPGA实现图像动态范围压缩算法

    灰度动态范围压缩是一种基本的图像增强处理方法,广泛应用于图像识别,视频监控等领域中。结合这一应用,提出了一种基于非线性变换的动态范围压缩算法,并且以FPGA为基础,针对一幅
    发表于 02-05 17:00 22次下载
    如何使用FPGA<b class='flag-5'>实现</b><b class='flag-5'>图像</b>动态范围压缩<b class='flag-5'>算法</b>

    基于FPGA自动白平衡算法的介绍和实现

    基于FPGA自动白平衡算法实现 一、白平衡介绍 对于白平衡基本概念的详细介绍请查看文章《白平衡
    的头像 发表于 04-08 17:20 1894次阅读

    基于视差信息的无参考立体图像质量评价方法

    ,并分析了不同视差图对模型性能的影响。该方法将左右视图以及视差图小块作为输入,自动提取特征,通过训练得到回归模型,从而实现对立体图像的预测。文中使用了5种不同立体匹配算法来生成视差图,
    发表于 05-07 14:09 24次下载