何为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. 攻防世界 杂项 3.神奇的Modbus

    [目标] 了解modbus协议 [工具] Wireshark [分析过程] 在数据包中寻找flag就行,flag是明文形式存储. 工业设备消息传输使用modbus协议.所以我就采集了modbus的通信 ...

  2. oracle 修改表空间名

    1.登录使用sys用户登录 sqlplus sys/ as sysdba 2.修改表空间名字 SQL> alter tablespace 旧表空间名 rename to 新表空间名; 表空间已更 ...

  3. JMeter学习记录收藏

    1.如何进行一个简单的性能测试 2.JMeter各种功能名词解释,比较全 3.聚合报告分析 4.CSV文件参数化,名词解释 5.JMeter快捷键

  4. Laravel/Lumen 分组求和问题 where groupBy sum

    在Laravel中使用分组求和,如果直接使用Laravel各数据库操作方法,应该会得出来如下代码式: DB::table('table_a') ->where('a','=',1) ->g ...

  5. harbor安装高可用

    harbor架构 下载地址https://github.com/goharbor/harbor/ 高可用架构 解压压缩包 tar -xvf harbor-offline-installer-v1.10 ...

  6. Java学习(十)

    今天学习的是参数的传入,感觉这个和c++差不多. 传一个参数进去,要看这个参数是地址还是一个值,如果是值的话那无论在方法中如何加减,也只是另一个局部变量的事情了,与该参数无关,在原方法中参数的值保持不 ...

  7. 3组-Alpha冲刺-1/6

    一.基本情况 队名:发际线和我作队 组长博客:链接 小组人数:10 二.冲刺概况汇报 黄新成(组长) 过去两天完成了哪些任务 文字描述 组织会议,讨论了alpha冲刺的分工,确定了收集数据的渠道,为拍 ...

  8. python-变量&底层存储原理

    目录 1.变量 1.变量如何使用 2.变量存储的原理 --[ 重点 ] 3.变量存储要遵循印射关系 4.变量三要素 2.常量 3.底层优化 4.垃圾回收机制 1.变量 1.变量如何使用 1.什么是变量 ...

  9. Java设计模式之(四)——原型模式

    1.什么是原型模式 Specify the kinds of objects to create using a prototypical instance,and create new object ...

  10. [loj2245]魔法森林

    枚举携带的"A型守护精灵"数$A_{0}$,那么即只能经过$A_{i}\le A_{0}$的边,并最小化1到$n$路径上最大的$B_{i}$ 将所有边按照$A_{i}$从小到大排序 ...