何为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. 攻防世界 杂项 7.Aesop_secret

    打开发现是个gif,以为有个二维码扫一下就给flag,结果被欺骗.呜呜呜 好了,还是使用编辑器看一下吧 发现了好玩的,U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sR ...

  2. 高频面试题:一张图彻底搞懂Spring循环依赖

    1 什么是循环依赖? 如下图所示: BeanA类依赖了BeanB类,同时BeanB类又依赖了BeanA类.这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖.同理,再如下图的情况: 上图中 ...

  3. Luogu P3758 [TJOI2017]可乐 | 矩阵乘法

    题目链接 让我们先来思考一个问题,在一张包含$n$个点的图上,如何求走两步后从任意一点$i$到任意一点$j$的方案数. 我们用$F_p(i,j)$来表示走$p$步后从$i$到$j$的方案数,如果存储原 ...

  4. SpringCloud微服务实战——搭建企业级开发框架(十三):OpenFeign+Ribbon实现高可用重试机制

      Spring Cloud OpenFeign 默认是使用Ribbon实现负载均衡和重试机制的,虽然Feign有自己的重试机制,但该功能在Spring Cloud OpenFeign基本用不上,除非 ...

  5. ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable

    首先进入EXSi开启SSH(ESXi的主机控制台,非web控制台,是安装esxi的控制台) 然后 /etc/init.d/hostd status 显示已停止, 使用 /etc/init.d/host ...

  6. nginx + tomcat 实现负载均衡

    1.环境准备 服务器A上安装 nginx 作为代理服务器 服务器B上安装 tomcat,~/webapps 下创建 /test目录,创建 /index.html 内容为T1(生产环境中一般是一样的wa ...

  7. java中的泛型设计

    1.为什么要使用泛型程序设计 ArrayList<String> files = new ArrayList<>() 等价于 var files = new ArrayList ...

  8. mysql查询报错this is incompatible with sql_mode=only_full_group_by

    临时改法:select @@GLOBAL.sql_mode;查询当前mysql的模式去掉ONLY_FULL_GROUP_BY重新设置:set @@GLOBAL.sql_mode='STRICT_TRA ...

  9. layui使用html+servlet+ajax实现登录验证

    我们一般使用的都是form表单提交到Servlet来实现前端和后端的交互的.这次我使用的是ajax提交数据,实现登录操作. 首先我们需要的是一套layui模板,这里用到layui的js和css界面. ...

  10. python实现拉普拉斯图像金字塔

    一,定义 二,代码: 要求:拉普拉斯金字塔时,图像大小必须是2的n次方*2的n次方,不然会报错 1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 #高斯金 ...