去坏点(Defect Correct)

1.1. 坏点是怎么产生的

坏点在图像传感器中产生的原因多种多样,主要分为静态坏点和动态坏点两种,静态坏点的产生主要包括以下几个方面:

传感器制造缺陷:图像传感器由成千上万的像素组成,每个像素都是一个微小的光电二极管。在制造过程中,可能会因为材料缺陷、制造工艺等问题导致某些像素损坏或性能不达标,从而形成坏点。

物理损伤:传感器可能因为跌落、撞击或其他物理因素导致损坏,产生坏点。

长时间使用:随着使用时间的增加,传感器上的某些像素可能会因为过度使用而退化,表现为坏点。

高温影响:高温环境可能会影响传感器的性能,导致像素损坏或性能下降。

而静态坏点是随机的,其产生的原因也有以下几个方面:

软件问题:在某些情况下,软件错误或固件缺陷也可能导致图像中出现异常像素点,表现为坏点。

图像传输错误:在图像从传感器传输到处理单元的过程中,可能会因为传输错误导致某些像素数据不正确。

电磁干扰:传感器可能受到外部电磁场的干扰,影响像素的正常工作。

像素老化:像素元件随着时间的推移可能会自然老化,导致响应度下降或失效。

​​​​​​​1.2. 坏点是什么样子的

坏点被认为是噪声的一种,其噪声模型为椒盐噪声,从名字就可以看出来,胡椒是黑色,食盐为白色,要在图像上表现出非黑即白,这个噪点要么是最大像素值,要么是最小像素值,但是不一定,总体上来讲,坏点在图像上表现为孤立点。

本节以椒盐噪声模型作为坏点模型,在RAW图上添加坏点,得到的测试图如图1所示,左边是添加了坏点的RAW图,右边是左图经过Demosaic得到的RGB图像。

图1 直接做Demosaic的结果
图1 直接做Demosaic的结果

 如果把图像放大会有一个发现(如图2所示),在Demosaic前坏点是独立的,Demosaic后部分坏点居然连在一起了,这是因为Demosaic的本质是一个插值算法,它成功的把一个坏点插值成了好几个坏点,所以在ISP的pipeline中,去坏点在Demosaic前面。

图2 把图1局部放大的效果
图2 把图1局部放大的效果

 为了能符合ISP的pipeline又方便对比效果,接下来的测试都是在RAW图上去坏点,再将去坏点后的图像用Demosaic插值显示出来。

1.3. 设计一个去坏点算法

算法都是一步一步改进出来的,接下来楼主用去坏点算法做个示例,来展示如何暴露问题逐步改进算法,最终获得满意的结果。

1.3.1. 中值滤波

    去坏点最常用的算法就是中值滤波,异想天开一下,把图1中加了坏点的RAW图直接拿过来做个3x3的中值滤波,效果如图3所示。

图3 直接对RAW图做中值滤波的效果图
图3 直接对RAW图做中值滤波的效果图

 

乍一看效果似乎还不错?坏点都没了?事实是,效果一塌糊涂,楼主的这个idea简直糟透了。了解过Demosaic的都知道,RAW图如图2(a)所示,以2x2像素为最小单位,每个最小单位里面包含两个G分量、一个R分量和一个B分量,三分量的亮度差异很大。在经过中值滤波之后,R、G、B三分量的差异被抹平了,得到了图3(a)的结果,虽然坏点没了,但是RAW图也失效了。对RAW进行Demosaic得到的结果如图3(b)所示,除了帽子的边缘部分能勉强看出一点儿蓝色,其他部分和(a)没太大差异,这说明Demosaic对非RAW图没起作用,这种三通道一起去坏点的方法直接让RAW图失效了。

以上说明直接对RAW做中值滤波去坏点是不可行的,R、G、B三通道不能混在一起用中值滤波,那就试试三通道分别使用中值滤波。

1.3.2. 分通道中值滤波

    常规思路是直接把RAW图拆成R、G、B三个通道各自独立的三张图,但是在实际应用中,存在G通道不平衡的情况,简单来说光在经过滤镜的时候,由于光的能量会溢出,两个G分量会受到旁别颜色的影响,所以和R同一行的G被标记为Gr,和B同一行的被标记为Gb。这种能量溢出造成了虽然都是G分量,但是Gr和Gb存在微小的差距。考虑到实际应用中G通道可能存在不平衡的情况,因此把G也按照Gr和Gb拆成两个通道,这样一幅RAW图就变成了R、Gr、Gb和B四个独立通道的图像,如下图4所示:

图4 RAW图四通道分离
图4 RAW图四通道分离

 对上面的四个通道分别使用3x3中值滤波,得到的四个去噪结果如下图5所示:

图5 分通道中值滤波效果
图5 分通道中值滤波效果

 在图4中坏点被去掉了,图像变得很干净,把4个通道的图像重新拼成RAW图的格式,用Demosaic解析出来看一下去坏点的效果,如图6所示:

图6 最终去坏点结果
图6 最终去坏点结果

 

这次Demosaic效果正常了,这说明分通道使用中值滤波的思路是正确的,但是和原图相比,图像的边缘模糊的很严重,这说明在使用中值滤波结果替换坏点的之前需要一个坏点检测机制,只针对有坏点的位置使用中值滤波。

1.3.3 坏点检测+中值滤波

想把坏点检测出来就要分析坏点的特点,坏点一般是孤立的点,这说明,在3x3窗口内的最大值或者是最小值就有可能是坏点,在3x3窗口内设立判定标准:

  1. 判断3x3的中心点是否是9个像素中的最大值或者最小值
  2. 先计算中心点减去周围8个像素的绝对值,然后计算均值,判断该均值是否超过设定的阈值threshold

以上两个条件如果同时满足,则判断当前3x3窗口的中心点为坏点。按照这个判断标准,得到R、Gr、Gb和B四个分量的坏点检测结果及去坏点结果如下图7所示。

图7 坏点检测结果
图7 坏点检测结果

 图7中的左边是R、Gr、Gb和B有坏点的输入图像,中间是4幅图像的坏点检测结果,白色的点就是标记出的坏点位置,右边是用中值滤波替换坏点后的结果。用Demosaic解析出来看一下去坏点的效果,如图8所示:

图8 坏点检测+中值滤波结果
图8 坏点检测+中值滤波结果

效果提升了很多,但是也不算特别优秀,在帽子的羽毛处可以看出检测的结果并不是很好,羽毛处的一些边缘被标记成了坏点,此外,背景区域也有不少坏点漏检测,这说明坏点检测部分还有可以提升的空间,如果加入边缘检测辅助坏点判断,也许可以获得更好的效果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大凝的IC进阶之路

一起学习一起进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值