用于CMOS图像传感器降噪处理的自适应混合降噪方法
技术领域
本发明涉及一种CMOS图像传感器降噪技术,尤其涉及一种用于CMOS图像传感器降噪处理的自适应混合降噪方法。
背景技术
目前的单片彩色CMOS图像传感器经过CFA(ColorFilterArray)阵列感光后,将光信号通过像素单元转化为电信号,在经过一系列的模拟电路和数字图像处理后,甚至在图像的传输和显示过程中,都会不可避免得引入干扰噪声,导致图像质量下降,影响了视觉效果。因此,为了真实地显示出图像信息、避免图像失真,必须对噪声图像进行降噪处理。
通常情况下,最为常见的图像噪声有高斯噪声和椒盐噪声两种,针对这两种图像噪声问题,现有技术常用的去噪方法是中值滤波和均值滤波;其中,中值滤波属于非线性滤波,是取邻域内像素的中间值作为当前灰度值,主要用来处理椒盐噪声,在噪声密度不高的情况下,处理效果较好,当滤波窗口范围较大时,处理后的图像会损失一些边缘细节;而均值滤波是线性滤波,其采用邻域内像素的平均值作为当前灰度值,主要抑制高斯噪声,在邻域空间不大的情况下,能较好的抑制噪声,随着领域空间变大,图像的模糊程度会变得较为严重。
针对高斯噪声和椒盐噪声组成的混合噪声,均值和中值滤波都无法单独达到预期效果,而现有技术中,用于处理混合噪声的方法的复杂度又较高,不利于硬件实现。
发明内容
针对背景技术中的问题,本发明提出了一种用于CMOS图像传感器降噪处理的自适应混合降噪方法,包括CMOS图像传感器输出的图像,所述图像由R、G、B三种类型的像素单元组成,其特征在于:所述自适应混合降噪方法包括:
所述图像中,由单种类型的像素单元所组成的阵列记为处理单元,其中,R类型的像素单元所对应的处理单元记为处理单元一,G类型的像素单元所对应的处理单元记为处理单元二,B类型的像素单元所对应的处理单元记为处理单元三;降噪处理时,分别对三个处理单元单独进行处理;对处理单元单独进行处理时,按方法一中方式进行;
方法一:
以某一像素单元为中心,建立规模为3×3的滤波阵列,位于滤波阵列正中的像素单元记为中心像素,滤波阵列内除中心像素外的其余8个像素单元记为外围像素;将某一滤波阵列记为阵列一,其对应的中心像素记为像素一,与像素一顺次相邻的像素单元记为像素二,则,阵列一处理完成后,以像素二为新的中心像素建立新的滤波阵列,然后继续对新的滤波阵列进行处理;对单个滤波阵列进行处理时,按方法二中方式进行;
方法二:
1)提取滤波阵列内各个像素单元的灰度值,获得9个灰度值H,然后计算出这9个灰度值的均值M;
2)计算出各个灰度值与均值M的差值的绝对值C,C=|H-M|;
3)将各个绝对值C逐一与阈值T1进行比较,大于阈值T1的绝对值C所对应的像素单元记为椒盐噪声点,小于或等于阈值T1的绝对值C所对应的像素单元记为非椒盐噪声点;
所有绝对值C都与阈值T1进行了比较后,对非椒盐噪声点的数量进行判断:若非椒盐噪声点的数量等于9,则取中心像素的当前灰度值作为滤波输出值q,然后按步骤6)中方式进行处理;若非椒盐噪声点的数量等于0,则继续按步骤4)中方式进行处理;若非椒盐噪声点的数量大于0且小于9,则继续按步骤5)中方式进行处理;
4)按下式计算滤波输出值q,然后进入步骤6):
其中,H5为滤波阵列内中心像素的灰度值,H2为滤波阵列内中心像素正上方的外围像素的灰度值,H4为滤波阵列内中心像素正左方的外围像素的灰度值,H6为滤波阵列内中心像素正右方的外围像素的灰度值,H8为滤波阵列内中心像素正下方的外围像素的灰度值;
5)按数值大小,对各个非椒盐噪声点所对应的灰度值进行排序;
若非椒盐噪声点的数量为1,则以该非椒盐噪声点的所对应的灰度值作为滤波输出值q,然后进入步骤6);
若非椒盐噪声点的数量为2,设2个非椒盐噪声点的灰度值大小关系为Ha<Hb,则按下式计算滤波输出值q,然后进入步骤6):
q=Ha×0.75+Hb×0.25
若非椒盐噪声点的数量为3,设3个非椒盐噪声点的灰度值大小关系为Ha<Hb<Hc,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为4,设4个非椒盐噪声点的灰度值大小关系为Ha<Hb<Hc<Hd,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为5,设5个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为6,设6个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为7,设7个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf<Hg,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为8,设8个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf<Hg<Hh,则按下式计算滤波输出值q,然后进入步骤6):
其中,Ha、Hb、Hc、Hd、He、Hf、Hg和Hh分别代表8个非椒盐噪声点的灰度值;
6)将中心像素的灰度值赋值为q,进入步骤7);
7)计算出滤波阵列内的像素梯度绝对值J,然后将J与阈值T2进行比较:若J大于T2,则将q作为该滤波阵列的中心像素的最终灰度值A并向外输出;
若J小于T2,则按下式计算出该滤波阵列的中心像素的最终灰度值A并向外输出:
A=[q+(H2+H4+H6+H8)×0.75+(H1+H3+H7+H9)×0.25]/9。
其中,H1为滤波阵列内中心像素左上方的外围像素的灰度值,H3为滤波阵列内中心像素右上方的外围像素的灰度值,H7为滤波阵列内中心像素左下方的外围像素的灰度值,H9为滤波阵列内中心像素右下方的外围像素的灰度值。
本发明的总体思路是,以低复杂度的降噪方法,在较小的领域空间(也即滤波阵列的规模)内,对图像中的混合噪声进行高效的降噪处理,在降低硬件开销的同时,保证了图像的处理效果处于合理的水平;具体来说本发明是这样实现的:
椒盐噪声多表现为极值点(极亮:满灰度级,极暗:灰度值为0),因此,可通过对滤波阵列内各像素单元灰度值的差异来识别出椒盐噪声点,于是本发明通过步骤1)来获得滤波阵列内像素单元灰度值的均值,然后通过步骤2)中的阈值T1来将椒盐噪声点甄别出来;椒盐噪声点甄别出来后,可能出现的情况有三类,其一,滤波阵列内的所有像素单元都被椒盐噪声污染了(即非椒盐噪声点的数量等于0),其二,滤波阵列内仅有部分像素单元被椒盐噪声污染了(即非椒盐噪声点的数量大于0且小于9),其三,滤波阵列内不存在椒盐噪声(即非椒盐噪声点的数量等于9);针对第一种情况,由于所有像素单元都被椒盐噪声污染,因此不适合将所有像素单元的灰度值都拿来作加权均值处理,于是选取与中心像素关联性较强的5个像素单元(即中心像素及其正上、正下、正左、正右的四个外围像素)的灰度值来进行加权均值处理,并且各个像素单元的权值均取1,然后用加权均值处理后获得的灰度值来对中心像素的灰度值进行校正;针对第二种情况,就需要用非椒盐噪声点的灰度值来对中心像素的灰度值进行校正,同时,由于非椒盐噪声点的数量可能为1至8个,于是本发明还针对不同数量非椒盐噪声点的情况分别限定了具体的加权中值处理方式;针对第三种情况,由于滤波阵列内不存在椒盐噪声,于是暂时还不需要对中心像素的灰度值进行校正,此时就以中心像素的当前灰度值作为滤波输出值q;
椒盐噪声处理完成后,本发明继续针对高斯噪声进行处理:由于本发明中采用加权均值滤波方法来处理高斯噪声,而加权均值滤波方法容易造成图像边缘细节模糊,于是本发明在进行加权均值滤波之前,先对滤波阵列的中心像素进行边缘检测,以确定中心像素是否处于图像的边沿,若中心像素处于图像的边缘,采用加权均值滤波方法处理后将导致边缘细节模糊,弊大于利,此时就不进行处理,直接以前面的q作为中心像素的最终灰度值A并向外输出,若中心像素没有处于图像的边沿,则采用加权均值滤波方法来对高斯噪声进行处理,具体为:先计算出滤波阵列内的像素梯度绝对值J,然后将J与阈值T2进行比较,若J大于T2,说明滤波阵列的中心像素处于图像的边沿,则将q作为该中心像素的最终灰度值A并向外输出;若J小于T2,说明滤波阵列的中心像素没有处于图像的边沿,则按下式计算出该滤波阵列的中心像素的最终灰度值A并向外输出:
A=[q+(H2+H4+H6+H8)×0.75+(H1+H3+H7+H9)×0.25]/9。
基于前述方案,本发明还提出了如下优选实施方式:对三个处理单元单独进行处理时,或者采用并行方式对三个处理单元进行处理,或者采用串行方式对三个处理单元进行处理。并行方式处理时,处理的效率相对较高,但硬件开销也相对较高,串行方式处理时,处理效率相对较低,但硬件开销相对较小。
由于拉普拉斯算子在图像中的某些边缘会产生双重效应,故本发明采用平滑算子 来计算像素梯度绝对值J,故,优选地,步骤7)中,按如下公式计算像素梯度绝对值J:
J=|4×q-H2-H4-H6-H8|。
前述方案中涉及到了T1和T2两个阈值,通过设定阈值来甄别椒盐噪声和进行边缘检测是本领域技术人员应该具备的基本技能,不同的技术人员可能采用不同的阈值;在本发明中,发明人采用了如下优选方式来设置阈值T1和T2:
按如下公式计算阈值T1:
T1=-k1×M+B;
按如下公式计算阈值T2:
T2=-k2×M+B;
其中,k1为对应阈值T1的调节系数,k2为对应阈值T2的调节系数,B为像素单元灰度值的上限值。当CMOS图像传感器的像素参数确定后,B就为定值。
具体实施时,技术人员通过调节k1和k2的数值来分别对T1和T2进行调节;
本发明的有益技术效果是:提出了一种新的用于CMOS图像传感器降噪处理的自适应混合降噪方法,该方法能对图像中的混合噪声进行高效的降噪处理,处理手段的复杂度较低,在兼顾了处理效果的同时,大大降低了硬件开销。
附图说明
图1、滤波阵列内各个像素单元的位置关系图;
图2、像素阵列图(图中每个像素单元中的两位数字,第一位表示该像素单元所处的行数,第二位表示该像素单元所处的列数)。
具体实施方式
一种用于CMOS图像传感器降噪处理的自适应混合降噪方法,包括CMOS图像传感器输出的图像,所述图像由R、G、B三种类型的像素单元组成,其创新在于:所述自适应混合降噪方法包括:
所述图像中,由单种类型的像素单元所组成的阵列记为处理单元(参见图2,图中所示阵列即为用于形成图像的R、G、B像素阵列,所述处理单元,即R、G或B中的一者,按图中所示位置关系所构成的阵列;图中R、G或B中的下标表示其所处的行和列),其中,R类型的像素单元所对应的处理单元记为处理单元一,G类型的像素单元所对应的处理单元记为处理单元二,B类型的像素单元所对应的处理单元记为处理单元三;降噪处理时,分别对三个处理单元单独进行处理;对处理单元单独进行处理时,按方法一中方式进行;
方法一:
以某一像素单元为中心,建立规模为3×3的滤波阵列,位于滤波阵列正中的像素单元记为中心像素,滤波阵列内除中心像素外的其余8个像素单元记为外围像素;将某一滤波阵列记为阵列一,其对应的中心像素记为像素一,与像素一顺次相邻的像素单元记为像素二,则,阵列一处理完成后,以像素二为新的中心像素建立新的滤波阵列,然后继续对新的滤波阵列进行处理;对单个滤波阵列进行处理时,按方法二中方式进行;
方法二:
1)提取滤波阵列内各个像素单元的灰度值,获得9个灰度值H,然后计算出这9个灰度值的均值M;
2)计算出各个灰度值与均值M的差值的绝对值C,C=|H-M|;
3)将各个绝对值C逐一与阈值T1进行比较,大于阈值T1的绝对值C所对应的像素单元记为椒盐噪声点,小于或等于阈值T1的绝对值C所对应的像素单元记为非椒盐噪声点;
所有绝对值C都与阈值T1进行了比较后,对非椒盐噪声点的数量进行判断:若非椒盐噪声点的数量等于9,则取中心像素的当前灰度值作为滤波输出值q,然后按步骤6)中方式进行处理;若非椒盐噪声点的数量等于0,则继续按步骤4)中方式进行处理;若非椒盐噪声点的数量大于0且小于9,则继续按步骤5)中方式进行处理;
4)按下式计算滤波输出值q,然后进入步骤6):
其中,H5为滤波阵列内中心像素的灰度值,H2为滤波阵列内中心像素正上方的外围像素的灰度值,H4为滤波阵列内中心像素正左方的外围像素的灰度值,H6为滤波阵列内中心像素正右方的外围像素的灰度值,H8为滤波阵列内中心像素正下方的外围像素的灰度值;
5)按数值大小,对各个非椒盐噪声点所对应的灰度值进行排序;
若非椒盐噪声点的数量为1,则以该非椒盐噪声点所对应的灰度值作为滤波输出值q,然后进入步骤6);
若非椒盐噪声点的数量为2,设2个非椒盐噪声点的灰度值大小关系为Ha<Hb,则按下式计算滤波输出值q,然后进入步骤6):
q=Ha×0.75+Hb×0.25
若非椒盐噪声点的数量为3,设3个非椒盐噪声点的灰度值大小关系为Ha<Hb<Hc,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为4,设4个非椒盐噪声点的灰度值大小关系为Ha<Hb<Hc<Hd,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为5,设5个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为6,设6个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为7,设7个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf<Hg,则按下式计算滤波输出值q,然后进入步骤6):
若非椒盐噪声点的数量为8,设8个非椒盐噪声点的大小关系为Ha<Hb<Hc<Hd<He<Hf<Hg<Hh,则按下式计算滤波输出值q,然后进入步骤6):
其中,Ha、Hb、Hc、Hd、He、Hf、Hg和Hh分别代表8个非椒盐噪声点的灰度值;
6)将中心像素的灰度值赋值为q,进入步骤7);
7)计算出滤波阵列内的像素梯度绝对值J,然后将J与阈值T2进行比较:若J大于T2,则将q作为该滤波阵列的中心像素的最终灰度值A并向外输出;
若J小于T2,则按下式计算出该滤波阵列的中心像素的最终灰度值A并向外输出:
A=[q+(H2+H4+H6+H8)×0.75+(H1+H3+H7+H9)×0.25]/9。
其中,H1为滤波阵列内中心像素左上方的外围像素的灰度值,H3为滤波阵列内中心像素右上方的外围像素的灰度值,H7为滤波阵列内中心像素左下方的外围像素的灰度值,H9为滤波阵列内中心像素右下方的外围像素的灰度值。
进一步地,对三个处理单元单独进行处理时,或者采用并行方式对三个处理单元进行处理,或者采用串行方式对三个处理单元进行处理。
进一步地,步骤7)中,按如下公式计算像素梯度绝对值J:
J=|4×q-H2-H4-H6-H8|。
进一步地,按如下公式计算阈值T1:
T1=-k1×M+B;
按如下公式计算阈值T2:
T2=-k2×M+B;
其中,k1为对应阈值T1的调节系数,k2为对应阈值T2的调节系数,B为像素单元灰度值的上限值。