何为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域上使用很强的降噪强度,这样会抹去很多细节,后面难以复原。

 

 

简述安霸pipeline及其关键参数--raw域模块的更多相关文章

  1. 安霸pipeline简述之rgb域的处理

    RGB域处理模块的详细介绍: RGB域的处理主要是demosaic,color_correction,tone_curve(类似于gamma曲线).   Demosaic:此模块将bayer Patt ...

  2. 安霸pipeline简述之YUV域的处理

    YUV域处理模块的详细介绍: YUV域的处理主要是rgb_to_yuv_matrix,chroma_scale,ASF(空域降噪),MCTF(时域降噪),SharpenB(锐化模块). RGB2YUV ...

  3. Jenkins pipeline job 根据参数动态获取触发事件的分支

    此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...

  4. Javascript中关键参数this浅析

    自从接触javascript以来,对this参数的理解一直是模棱两可.虽有过深入去理解,但却也总感觉是那种浮于表面,没有完全理清头绪. 但对于this参数,确实会让人产生很多误解.那么this参数到底 ...

  5. JVM内存模型和关键参数设置

    一. JVM内存模型: Jvm内存模型是学好Java很重要的一部分,该部分学习能让我们在系统运维的时候,或者优化服务器的时候能够有方法,懂原理. 二. Jvm关键参数: 1. 堆大小设置参数: -Xm ...

  6. MySQL数据库性能优化的关键参数(转)

    我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...

  7. A Byte of Python 笔记(5)函数:定义、形参、局部变量、默认参数、关键参数

    第7章  函数 函数是重要的程序段.它们允许你给一块语句一个名称,然后你可以在程序的任何地方使用这个名称任意多次地运行这个语句块.这被称为 调用 函数. 定义函数 函数通过 def 关键字定义.def ...

  8. mysql的"双1设置"-数据安全的关键参数(案例分享)

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  9. MySQL数据库详解之"双1设置"的数据安全的关键参数案例分享

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

随机推荐

  1. TT模板的作用及使用

    一.假如你在ef中添加一个实体,没有模板,你需要在DAL层中新建一个"莫某Dal"和"I某某Dal"以及在公共的DbSession中加你的这个dal,然后需要在 ...

  2. 转帖:新版vivado2019.2新增增量综合功能

    从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了.这使用户能够在设计变化较小时减少总的综合运行时间. Vivado IDE 和 Tcl 命令批处理模式都可以启用 ...

  3. Bzoj P2054 疯狂的馒头 | 并查集

    题目链接 思路:因为每次染色都会将某些馒头的颜色彻底更改,所以每个馒头的最终的颜色其实是由最后一次染色决定的,那么我们只考虑最后一次染色即可.对此,我们可以从后往前倒着染色,当目前的染色区间中存在白色 ...

  4. java 垃圾回收及内存分配策略

    一.在垃圾收集器对堆进行回收前,首先需要判断对象是否"存活",对已经"死去"的对象进行回收 判断对象是否存活:引用计数法和可达性分析法 引用计数法:给对象添加一 ...

  5. GoLang设计模式12 - 空对象模式

    空对象设计模式是一种行为型设计模式,主要用于应对空对象的检查.使用这种设计模式可以避免对空对象进行检查.也就是说,在这种模式下,使用空对象不会造成异常. 空对象模式的组件包括: Entity:接口,定 ...

  6. Linux&c 文件操作,线程进程控制,网络编程,简单知识点梳理

    一:文件操作 在linux下,一切皆文件,目录是文件,称为目录文件,内容是该目录的目录项(但是目录只有内核可以编辑,超级用户也不可以编辑),设备也是设备文件,在/dev存放的就是一些设备文件,linu ...

  7. SqlServer修改某个字段的默认值时的操作步骤

    sqlserver有时候需要修改一个字段的默认值,却发现修改(update)不了,也删除(delete)不了,排查发现,需要先删除原有的默认值约束,才行:步骤如下1.2.3.若原来这个字段就没有默认值 ...

  8. 将 ASP.Net Core WebApi 应用打包至 Docker 镜像

    将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...

  9. 如何系统学习C 语言(中)之 联合体、枚举篇

    在C语言中有一个和结构体非常像的数据类型,它的名字叫做联合体,也被称为共用体或公用体. 1,联合体 1,联合体的定义 定义联合体需要使用"union" 关键字,格式如下: unio ...

  10. Django笔记&教程 4-3 模型(models)主键外键

    Django 自学笔记兼学习教程第4章第3节--模型(models)主键外键 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/ref/models ...