isp 图像处理--DPC坏点矫正

一,Bayer pattern简要介绍

我们平时所看到的彩色图像每个像素有三个分量组成,分别为红绿蓝。而目前广泛用到的成像传感器为CMOS传感器,其输出的数据格式为每个像素点只有一个颜色分量,一般称为Bayer Pattern数据,格式如下图所示

  • 坏点定义

在图像局部区域内,看起来明显过亮、过暗的点即可称为坏点

注意:坏点的值不一定非得是0或者255,比如全零的局部块中间有个128的像素点,此时应该认为是坏点

  • 坏点来源
  1. CMOS图像传感器,在生产环节不能保证每个点都是百分之百好的,一般都会或多或少出现一些异常的点;
  2. 感光元器件在使用过程中,温度,湿度,光强,电流等发生变化时,也会一定程度上对传感器造成损坏,出现异常;
  • 坏点分类

静态坏点和动态坏点

  • 坏点去除位置

一般是在bayer域去除,如果不在bayer域并且是isp pipe靠前的位置,经过bayer 域去噪(Bayer NR)和Demosaic(cfa 插值) 后,会极大的放大坏点的影响范围,如图下图所示

  1. bayer 域2x2的坏点簇,经过Demosaic后会变成6x6的坏点簇,极大的影响图像是的视觉体验,并且这个6x6坏点簇如果想在rgb/yuv域去除,基本很难做到,或者需要花费比raw很多倍的代价才能做到
  2. 如果BNR/Demosaic算法滤波核太大,demosaic 后6x6的坏点簇可能会更大
  3. 故一般去坏点一般在ISP Pipe的最前端(或者比较靠前的位置)
  • DPC算法的评价指标
  1. 能够去除所有坏点
  2. 不能损失图像细节
  3. 不能使原本正常点,变成不正常的点
  • 坏点算法开发流程
  1. 确定算法去除坏点的能力:

比如去除单坏点,或者2x2坏点簇,或者2x2中含3个坏点等,这个可以通过sensor Spec来确定,或者通过经验来确定;

  1. 检测坏点:

主要确定当前点是不是坏点,这也是此算法最核心的东西,也有很多种方案,比如:

  1. ,对于单坏点,一定是局部最大值(最小值),只需找到局部最值,然后与局部均值做差值,与设置的阈值作比较即可
  2. 对于坏点簇,这个不同的公司由不同的算法,这里就不在详述

注:实际开发过程中需要注意坏点在图像中的位置,比如平坦区,边缘,角点位置等等

  1. 矫正坏点:

这一步就简单很多了,比如用均值滤波,中值滤波,带方向的滤波等都是可以的

  • 效果图