一.概念
图像传感器上由于自身工艺技术造成的瑕疵,如光线采集的点存在缺陷,导致在光电转换过程中某些像素值不准确,我们称之为坏点(Defect Pixel)。尤其是对于低成本的sensor来说,坏点数为100 或者1000ppm(parts per million,百万分之一)是正常的。若sensor中存在坏点,经过图像的插值(如demosaic)和滤波等非线性过程,坏点的尺寸会变大(坏点扩散),而且由于色彩校正和串扰补偿,坏点处颜色的强度和饱和度也会明显提高,因此需要在插值等过程之前对坏点进行校正,一般的分类有静态坏点和动态坏点:
-
静态坏点:
亮点:亮点的亮度值明显大于入射光乘以相应比例,随着曝光时间的增加,该点的亮度会显著增加;
暗点:接近于0。
-
动态坏点:
在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor 温度、增益有关,sensor 温度升高或者gain 值增大时,动态坏点会变的更加明显。
坏点的存在一方面会影响图像的画质,另一方面,在某些应用场景下可能会影响CV的识别准确率,因此一般需要对DPC进行矫正。但是DPC的矫正也会带来相应的副作用,例如锐度下降,图像细节损失等,所以进行合适的DPC矫正是必要的。
二.矫正
动态坏点校正和静态坏点校正是两个相互独立的过程。
-
静态坏点矫正:
静态坏点的校正是基于已有的静态坏点表,比较当前点的坐标是否与静态坏点表中的某个坐标一致,若一致则判定为坏点,然后再采用中值滤波的方法对其进行校正。一般来说,需要sensor制造商给出sensor的坏点信息,方便客户的检测和校正,而且可以百分百矫正(每颗生产的sensor都矫正),这样做时sensor厂商会增加供货成本,但对于低成本的sensor来说,由于成本和时间的限制,sensor制造商没有检测sensor的坏点信息,即对于用户来说,静态坏点表是不可得的,需要用户自行对静态坏点进行标定,得到静态坏点表。
-
动态坏点矫正
由于存储坏点信息的memory有限,静态坏点校正有可能无法完全校正sensor中的坏点,因此静态坏点校正应当校正对图像质量影响最大的坏点,而动态坏点校正方法则校正其余的坏点。动态坏点的校正可以实时的检测和校正sensor 的亮点与暗点,并且校正的坏点个数不受限制。动态坏点校正相对静态坏点校正具有更大的不确定性。动态dpc可以分为两个步骤,分别为坏点检测和坏点校正
三.动态坏点矫正
因为静态坏点存在局限性,一方面是这种标定方式需要消耗人力物力,而且存储这些数据对硬件也有一定要求;另一方面随着产品使用时间地增加,坏点地数目会增加,而厂商地数据没法标定这些新增地坏点;还有一方面是有些坏点表现为正常情况下的光电特性正常,只是在长时间使用或者高ISO的情况下才会变为坏点,这部分坏点正常使用时不用当作坏点处理,毕竟插值的数据和真是数据还是有一定的差异;基于以上几点,静态坏点检测方法不进行讨论,下面讨论一种常见的检测算法。
论文认为:坏点往往是在一个邻域中的极亮或极暗点,所以以一个nxn (以5*5为例)的邻域为检测区域,
5x5的邻域内同一颜色通道相对于中心像素都有8个临近像素,可按照下面方式计算:
1.计算中心像素与周围邻域像素值的差;
2.判断每个差值是否都为正值或者都为负值;
3.如果有的为正有的为负,那么就为正常值,否则进行下一步;
4.设置一个阈值,如果八个差值的绝对值都超过阈值,那么就判断为坏点;
判断为坏点后就用八个临近的像素值的中位值来替换当前的像素值;可通过调整模板大小,以及阿尔法融合来调整检测区域大小和整体强度。