一种图像坏点检测及修正算法

2018-11-02 00:48胡云生胡越黎承文龙
关键词:像素点边缘阈值

胡云生, 胡越黎, 燕 明, 承文龙, 王 权

(1.上海市电站自动化技术重点实验室,上海200444;2.上海大学机电工程与自动化学院,上海200444;3.上海大学微电子研究与开发中心,上海200444)

随着图像技术的不断发展,对图像质量的要求越来越高.虽然已有的图像传感器技术有了很大的提高,但由于在制造工艺、运输和储存方法等多个环节存在不足,加之使用时间的延长,使得图像传感器总会存在一些不正常的点,即坏点[1].坏点大小通常仅有一个像素,表现为亮点或暗点.坏点固定存在于感光元件中,不能感应到外界的明暗光线变化以及色彩,导致图像不能真实体现现实场景.因此,在图像处理中,有必要对存在的坏点进行坏点修正(dead pixel correction,DPC).

目前对坏点进行修正的方法一般有两种:①事先记录坏点的位置信息并保存,根据该信息对坏点进行消除,但需要一个较大的存储空间;②通过滤波的方式来滤除坏点,虽然不需要保存坏点位置,但是滤波方式的不同可能会对图像的边缘信息造成较大损失.采用非线性空间滤波的方式[2]可以相对减少图像边缘信息的损失;而采用基于多重统计排序滤波的方式[3],算法中的参数能够根据预估的坏点数量进行自适应调节.

在图像传感器的使用过程中可能会造成硬件损坏,从而不可避免产生新的坏点.因此在坏点修正算法中,通常需要对未知坏点位置的图像进行坏点修正,而如何有效并且准确地判断坏点是很多坏点修正研究的重点.现有的基本方法是在以当前待测像素点为中心,大小为5×5像素的色彩滤波(color filter array,CFA)矩阵[4](见图1)基础上,对当前待测像素点进行坏点判断.

图1 初始5×5 CFA矩阵Fig.1 Original 5×5 CFA matrix

文献[5]利用当前待测像素点邻域数值的均值和标准差,将图像分为平坦区和非平坦区,分别设置高、低阈值.当待测像素点在阈值外时,则判定其为坏点.该算法需要设定平坦区和非平坦区的参数,且可通过调节参数去除多个连续坏点并且保边,但需要确定的参数较多,很难达到满意的效果.文献[6]使用两级坏点检测方法:第一级检测能够很好地检测出60%的坏点,并将保留的30%可疑坏点在第二级检测中进行精细检测,从而避免了对整个图像中可能出现的坏点进行精细检测,减少了一定的检测处理时间.

1 坏点检测及处理算法

本算法针对任何设备获取的任何一张图像,在没有事先得知设备坏点的情况下,对该图像中的坏点进行检测及处理,实现流程如图2所示.首先,选择对应的参考像素矩阵,通过设置亮度阈值,判断待测像素点是否为亮点或暗点,并结合噪点阈值,判断待测像素点是否为坏点,同时对坏点进行替换处理.其次,根据待测像素点与参考像素点的差值判断待测像素点是否处于边缘,并进行边缘保护.最后,考虑了多个坏点连续存在的情况,对可能的坏点同时进行处理,提高算法的处理效果.

1.1 坏点检测

在坏点检测及处理的研究中,多数算法都是在5×5 CFA矩阵(见图1)中选取相同颜色的像素点作为参考,在对比待测像素点与参考像素点差异值的基础上,采用不同的比较判断方法来判断当前像素点是否为坏点[3,5-8].

本算法同样基于5×5 CFA矩阵,通过迭代的方式进行处理.本算法以当前待测像素点为中心,将前面4个相同颜色的像素点作为经过坏点修正后的可靠像素点,并作为当前待测像素点的替代值.由于坏点大小通常只有一个像素,而坏点与亮点或暗点的区别在于当前像素点与邻域像素点之间亮度的差异值较大,因此检测坏点的方法主要是对比当前待测像素点与邻域内其他同颜色像素点之间的亮度差值.当差值大于设定的坏点阈值时,则判断当前待测像素点为坏点.

图2 算法流程图Fig.2 Algorithm flow

本算法基于5×5 CFA矩阵,根据当前像素点是否为G(Green)点,以相同颜色的9个像素点为参考.两种相同颜色像素参考矩阵的选择方式如图3所示:若当前像素点为G点,则以图3(a)为准选取参考像素点;若当前像素点为R(Red)点或B(Blue)点,则以图3(b)为准选择参考像素点.判断当前待测像素点S5是否为亮点或暗点时,设定亮点判断阈值THb以及暗点判断阈值THd,用PSi表示像素点Si的像素值,具体判断方法如下:当PS5>max{PS1,PS2,PS3,PS4}+THb时为亮点;当PS5

图3 Green,Red,Blue像素参考矩阵Fig.3 Referenced pixelmatrix of Green,Red,Blue pixels

1.2 边缘判断

根据1.1节的判断方法得到的坏点有可能处于图像的边缘位置,而坏点修正时的替代值可能不在该边缘位置,从而造成图像边缘的不够连续.为保证对图像质量更好的保护,获得良好的边缘效果,本算法考虑了坏点是否处于图像的边缘位置,并对不同边缘的坏点选择不同的替代值进行修正.

在图像的边缘检测研究中,利用图像当前像素点周围4个方向上的邻域像素差别[9],来判断该像素点是否处于图像的边缘位置是较为简单普遍的方法.此外,也可以采用色彩梯度来判断图像的边缘[10],并对图像进行相应的边缘处理.

本算法在判定坏点是否在图像边缘位置时,对该坏点是否处于水平H、竖直V、正斜I、反斜T 4个方向进行了判断.判断方法是将该坏点在4个方向上像素值的变化量(即∆H,∆V,∆T,∆I的大小)与设定图像的方向阈值进行对比.在5×5 CFA矩阵中,该坏点在4个方向上的变化量为

式中,D∈{H,V,T,I}表示H,V,I,T 4个方向,∆D0表示该方向上坏点两边4个像素值的变化量,∆D−1和∆D+1分别表示相应的方向上坏点两边4个像素值相对于该方向坏点像素值的变化量.

本算法是根据设定的各个方向的方向阈值来进行方向判断.本算法设置4个方向像素值的方向阈值分别为TH1,TH2,THd1,THd2,其中THd1和THd2用于判断当前坏点是处于水平、竖直两个方向,还是处于正斜、反斜两个方向,TH1和TH2用于进一步确定当前坏点具体处于哪个方向.

根据4个方向变化量,结合设定的方向阈值,由式(2)和(3)可以得到水平、竖直和正斜、反斜两组方向的变化量∆HV,∆TI.

(1)当∆HV−∆TI>THd1时,表明该坏点在水平H或竖直V方向上.进一步地,当∆H−∆V>TH1时,则确定该坏点在竖直V方向的边缘上;当∆V−∆H>TH1时,则确定该坏点在水平H方向的边缘上.

(2)当∆TI−∆HV>THd2时,表明该坏点在正斜I或反斜T方向上.进一步地,当∆T−∆I>TH2时,则确定该坏点在正斜I方向的边缘上;当∆I−∆T>TH2时,则确定该坏点在反斜T方向的边缘上.

当该坏点周围像素差值不满足上述4种情况时,则判定该坏点不在图像的边缘,此时坏点不具有方向.

1.3 多个连续坏点的预判

本算法考虑到了图像在初始5×5 CFA矩阵中出现多个连续坏点的情况,因此在坏点判断时,根据设置的去坏点强度,预判后面的4个像素点S6∼S9是否同样为坏点(见图3).当设定为单一坏点时,S6∼S9中无坏点;当两个坏点连续出现时,S6∼S9中与S5像素差值最小的一个像素点为坏点;当3个坏点连续出现时,S6∼S9中与S5像素差值最小的两个像素点为坏点;当4个坏点连续出现时,S6∼S9中与S5像素差值最小的3个像素点为坏点.当预判后续像素点同样为坏点时,对预判为坏点的像素点同样进行处理,即直接将预判的坏点修正.

使用多个坏点连续出现的预判并修正时,不会对当前坏点像素的处理过程造成影响,而且在后续迭代处理后面的像素时,能保证对多个连续坏点的检测不会出现漏检的情况,且对多个坏点连续出现的图像能获得一个较好的处理效果.

1.4 坏点处理

当坏点检测结束后,在确定了当前像素点以及在原始像素矩阵中当前像素点后面相同颜色的像素点是否也为坏点后,再根据坏点是否处在边缘位置进行不同的替代值替换.

当图像只有单一坏点出现时.若当前坏点不在图像的边缘位置时,则直接选择前面4个可靠像素点中与当前像素差值最小的像素点作为当前坏点的替代值,对当前坏点进行处理;若当前坏点在图像的边缘位置时,则根据不同的方向选择对应方向上的可靠像素点作为当前坏点的替代值,对当前坏点进行处理.具体处理如下:若坏点为I方向,则用S1替代坏点;若为V方向,则用S2替代坏点;若为T方向,则用S3替代坏点;若为H方向,则用S4来替代坏点.

当图像中存在2,3,4个坏点连续出现时,除了对当前像素点处理之外,对矩阵中当前像素点之后被预判为坏点的同颜色像素点进行相同的坏点处理.

1.5 算法复杂性分析

本算法主要是在5×5 CFA矩阵中,以中心点为待测像素点,选取矩阵中另外24个像素点中的8个作为参考像素点,通过CFA矩阵中待测像素点前面相同颜色的4个像素值最值.与待测像素点进行1次作差值比较来判断待测像素点是否为坏点,同时利用1次除法二分运算、1次加法运算以及3次作差值比较来判断坏点的方向性.为了实现算法对连续坏点的处理,本算法增加了4次差值比较对后续4个像素点进行坏点的预判.在整个实现过程中,本算法在保证达到处理效果的要求下,采用11次简单的作差值比较运算,以及1次加法运算和1次除法运算,保持了较小的算法复杂性.相比之下,文献[5]算法虽然同样是多次采用作差值比较,相对保持了较小的复杂性,但是在处理效果上并未对图像边缘处出现的坏点进行判断,同时在连续坏点出现的情况下,未能表现出较好的处理能力;而文献[6]算法则多次利用求和以及乘法、除法运算,极大地增加了算法的算法复杂性.3种算法的具体计算次数如表1所示.

表1 3种算法的复杂性对比Table 1 Complexity comparisons of the three algorithms

2 实验结果

为验证本算法的处理效果,选取一张标准Kodak图像,并且人为加入坏点,形成一张坏点图像.本工作分别采用文献[5]算法、文献[6]算法和本算法对坏点图像的去坏点效果,包括单一坏点处理、图像保边效果以及多个连续坏点处理效果进行对比测试.

首先,本工作对比了这3种算法对单一坏点图像处理的效果.本算法经过大量实验数据进行参数调节,在所有像素值为0∼255的情况下,最终确定当亮点判断阈值THb和暗点判断阈值THd均为10,4个方向阈值TH1,TH2,THd1,THd2分别为160,160,80,80时,算法的整体效果达到最佳水平.针对同一个输入坏点数目为942的单坏点图像实验结果进行了对比,结果如图4所示,其中上半部分图片为坏点图像处理原图,下半部分图片为各自图像对应的同一局部的像素级放大图.可以看出,3种算法对图像中的单一坏点皆具有较好的处理效果.

图4 3种算法对单一坏点图像处理的效果Fig.4 Eff ects of the single dead pixel performance of the three algorithms

统计图4中坏点处理的误检数目与漏检数目,结果如表2所示.可以看出,在3种算法参数设置均为最佳时,在保证每种算法都能有效处理掉图像中的坏点,并且坏点漏检数目最少的情况下,本算法对单坏点图像的误检数目相对另外两种算法是最少的,能有效提高算法的处理速度.

表2 3种算法去单一坏点性能比较Table 2 Single dead pixel performance comparisons of the three algorithms

其次,本工作对3种算法的边缘坏点处理效果进行了测试,结果如图5所示.可以看出,本算法在图像边缘的保护上具有一定的优势.

图5 3种算法对边缘坏点的处理效果Fig.5 Eff ects of the dead pixel on edge performance of the three algorithms

最后,本工作为了验证3种算法对多个连续坏点处理的效果,对多个连续坏点图像进行了测试,结果如图6所示,其中上半部分为坏点图像处理原图,下半部分图片为各自图像对应的连续存在几个坏点的局部像素级放大图.可以看出,文献[5]和文献[6]算法对多个连续坏点图像的处理效果有些欠缺,在连续存在3,4个坏点的情况下无法对坏点进行有效处理,而本算法则相对具有较好的处理效果.

图6 3种算法对多个连续坏点的处理效果Fig.6 Eff ects of the multiple dead pixel performance of the three algorithms

3 结束语

针对坏点图像,本工作提出了一种坏点检测及修正算法.经过实验验证,本算法能有效实现坏点检测及修正.同时,相对于现有的一些算法,对减少误检数目、增强图像边缘以及提高多个连续坏点情况下的处理效果有了一定的优化,得到了较好的处理结果.今后的研究还可以进一步优化改进多个连续坏点预判方法,在保证多个连续坏点修正效果的同时,进一步减少误检数目,加快图像坏点处理的研究.

猜你喜欢
像素点边缘阈值
基于局部相似性的特征匹配筛选算法
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
一张图看懂边缘计算
基于迟滞比较器的双阈值稳压供电控制电路
一种改进的小波阈值降噪方法
在边缘寻找自我
走在边缘