一,Bayer pattern简要介绍
我们平时所看到的彩色图像每个像素有三个分量组成,分别为红绿蓝。而目前广泛用到的成像传感器为CMOS传感器,其输出的数据格式为每个像素点只有一个颜色分量,一般称为Bayer Pattern数据,格式如下图所示
- 坏点定义
在图像局部区域内,看起来明显过亮、过暗的点即可称为坏点
注意:坏点的值不一定非得是0或者255,比如全零的局部块中间有个128的像素点,此时应该认为是坏点
- 坏点来源
- CMOS图像传感器,在生产环节不能保证每个点都是百分之百好的,一般都会或多或少出现一些异常的点;
- 感光元器件在使用过程中,温度,湿度,光强,电流等发生变化时,也会一定程度上对传感器造成损坏,出现异常;
- 坏点分类
静态坏点和动态坏点
- 坏点去除位置
一般是在bayer域去除,如果不在bayer域并且是isp pipe靠前的位置,经过bayer 域去噪(Bayer NR)和Demosaic(cfa 插值) 后,会极大的放大坏点的影响范围,如图下图所示
- bayer 域2x2的坏点簇,经过Demosaic后会变成6x6的坏点簇,极大的影响图像是的视觉体验,并且这个6x6坏点簇如果想在rgb/yuv域去除,基本很难做到,或者需要花费比raw很多倍的代价才能做到
- 如果BNR/Demosaic算法滤波核太大,demosaic 后6x6的坏点簇可能会更大
- 故一般去坏点一般在ISP Pipe的最前端(或者比较靠前的位置)
- DPC算法的评价指标
- 能够去除所有坏点
- 不能损失图像细节
- 不能使原本正常点,变成不正常的点
- 坏点算法开发流程
- 确定算法去除坏点的能力:
比如去除单坏点,或者2x2坏点簇,或者2x2中含3个坏点等,这个可以通过sensor Spec来确定,或者通过经验来确定;
- 检测坏点:
主要确定当前点是不是坏点,这也是此算法最核心的东西,也有很多种方案,比如:
- ,对于单坏点,一定是局部最大值(最小值),只需找到局部最值,然后与局部均值做差值,与设置的阈值作比较即可
- 对于坏点簇,这个不同的公司由不同的算法,这里就不在详述
注:实际开发过程中需要注意坏点在图像中的位置,比如平坦区,边缘,角点位置等等
- 矫正坏点:
这一步就简单很多了,比如用均值滤波,中值滤波,带方向的滤波等都是可以的
- 效果图