简述安霸pipeline及其关键参数–raw域模块

何为pipeline

   sensor输出是一种叫Bayer 格式的RAW数据图像。ISP 对RAW数据图像的处理流程就是我们说的ISP PipeLine。通过PipeLine的处理,我们可以从一副RAW图得到RGB格式图像,再到YUV格式的图像,也就是我们在屏幕上所看到的图像。

   下面,将结合下图为大家介绍一下安霸ISP PipeLine的详细情况。

   

 

 

   

输入:安霸ISP PipeLine的输入是一个有效位为16位的RAW图(12位的数据左移4位),raw图有不同的Baye 格式,常用的Bayer格式有RGGB,、GRBG、GBRG等多种。

   

  sensor的每一个像素点上都有一个rgb三原色的滤镜。红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。人眼对绿色比较敏感,所以一般bayer格式的图片绿色格式的像素是是r和g像素的和。那么根据Sensor的滤镜排列,则会生成不同格式的RAW图。

 

  Raw域的处理主要是static_black_level(BLC), li_auto_bad_pixel_correction(DPC),contrast_enhance,li_cfa_noise_filter等模块。

  RGB域的处理主要是demosaic,tone_curve(类似于gama曲线)

  YUV域的处理主要是rgb_to_yuv_matrix,chroma_scale,ASF,MCTF,SharpenB

 

RAW域处理模块的详细介绍:

 

static_black_level(BLC)这个模块称为黑电平矫正,安霸ISP PipeLine对RAW图处理的第一个模块。黑电平是指图像数据为0时(没有光信号到达sensor)对应的信号电平,但是黑电平常常不为0,原因为如下:

  一是由于sensor本身会存在暗电流,导致在没有光照进来的条件下pixel也有电压输出。还有一个原因是因为sensor进行模数转换时精度不够,以8bit为例,每个pixel有效范围是0-255,sensor可能无法将接近于0的信息转化出来,由于人眼特性(对暗处细节比较敏感,)所以sensor厂商一般在转换时会加一个固定的偏移量使像素输出在5(非固定值)—255之间,然后传输在ISP端再做一个减法,将5(非固定值)变为0。所以可以从已获得的图像信号中减去一定的电平信号,使暗处得到黑平衡。

 

  安霸的黑电平矫正参数如下:

   

 

 

 

  对bayer格式得四个通道分别减去一定得电平信号。这个参数得具体数值是由标定得到的。标定的一些流程如下:

  1. 将光圈、曝光时间设置为最小,最好是再将镜头用遮光片捂住,保证没有光线进入sensor。在这种环境下从0db开始到60db每隔6db拍取一张raw图,用来做BLC标定材料。
  2. 打开安霸工具IQ Lab导入上诉raw图,导入时需要填写raw的Baye 格式,分辨率,BLC等。刚开始标定时可以都写0。
  3. 导入图片后,点击file info,点击Ref并记录下黑电平数值。

 

 

 li_auto_bad_pixel_correction(DPC)坏点矫正,安霸的ISP PipeLine将此模块放在BLC之后。Sensor上像素点的阵列工艺可能会存在缺陷,或光信号进行转化的过程中出现错误,会造成图像上有些像素的信息有误,导致图像中的像素值不准确,这些有缺陷的像素即为图像坏点(Bad pixel)。

  坏点的分类有以下几种:

  静态坏点:

  亮点:一般来说像素点的亮度值是正比于入射光的,而亮点的亮度值明显大于入射光乘以相应比例,并且随着曝光时间的增加,该点的亮度会显著增加;

  暗点:无论在什么入射光下,该点的值接近于0;

  动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor 温度、增益有关,sensor 温度升高或者gain 值增          大时,动态坏点会变的更加明显。

 

  安霸的静态坏点的矫正主要依赖于工具的标定,用生成的Bad Pixel Bitmap(静态坏点表)去处理静态坏点。

  

  安霸的动态坏点矫正参数如下:

   

  其中hot_pixel_detection_strength代表亮点坏点的检测阈值,值越大则越容易被判断为亮点坏点。dark_pixel_detection_strength则是暗点坏点的检测阈值。值越大则越容易被判断为暗点坏点。

  Correction_method则是坏点的矫正强度,取值范围为0-1。值越大矫正力度越强。如果要对亮点坏点和暗点坏点进行不同的矫正力度,就要通过enable参数调节,其取值范围为0-4。1st的矫正力度较小,2nd的矫正力度更大。

  

  注意事项:对于坏点的矫正虽然能降低图像上的噪点,但是不能使用太强的矫正强度。否则会抹去过多的信息,使得图像细节损失。

 

 

contrast_enhance:安霸ISP PipeLine中的重要模块,其中完成了动态范围压缩,细节增强。

 

   

 

 

 

  首先Guided Filter 将图像分为Detail层和Base层,涉及的参数如下,越大就会有越多的信号进行细节增强处理。

  

 

 

   radius、epsilon这两个参数的越大,coring_gain_*对画面的细节增强越明显。

 

   

  Fir_enable 是一个低通滤波的开关,关闭后会有更多的高频信息。

 

   

 

  通过luma_avg将画面分为64个亮度不同的区域,Coring_table数组内的成员是这64个区域的细节增益。值越大则细节越强。

 

   

  Coring_gain_*_strength这组参数是以亮度为横坐标的细节增强曲线,其中coring_gain_low,coring_gain_high这两个数值会将横坐标分为低亮区、中亮区、高亮区。对不同亮度区域可使用不同的增益强度。Coring_gain*_strength。

  最后coring_gain_*_strength 乘上Coring_table则是对图像detail层的细节增强增益。

 

   

  Boost_table是一个64元素的数组,第一个元素对应luma=0,最后一个元素对应luma最大值。增强这个参数的数值,可增强图像的动态范围。

 

  CFA Noise Filter:是作用与raw域的降噪模块,采用中心像素与周围像素做加权平均的思路进行降噪。Filter将图像分为平坦区域(使用Regular滤波)和细节部分(使用Fine滤波)进行各自的降噪设置。

 

   

  Noise_level_blue/green/red作为R/G/B三个通道的Regular降噪滤波门限,低于这组参数的值会被判定为平坦区,采用Regular滤波。该门限的值越高,则滤波强度越强。

   

  Noise_level_blue/green/red乘以strength_fine_blue/green/red作为R/G/B三个通道的Fine滤波的门限。低于这组参数的值会被判定为细节区,使用Fine滤波,高于这个门限的不做处理。

   

  Extern_fine_blue/green/red是Fine滤波的滤波半径。Extern_Regular_blue/green/red是Regular滤波的滤波半径。

 

  Noise_level越强,降噪越强。并可根据R/G/B区分通道,单独处理。Extern越强,加权平均的radius越大,则降噪能力越强。一般不建议在raw域上使用很强的降噪强度,这样会抹去很多细节,后面难以复原。