当前位置: 首页 > news >正文

ISP图像处理Pipeline

参考:1. 键盘摄影(七)——深入理解图像信号处理器 ISP2. Understanding ISP Pipeline3. ISP图像处理流程介绍4. ISP系统综述5. ISP(图像信号处理)之——图像处理概述6. ISP 框架7. ISP(图像信号处理)算法概述、工作原理、架构、处理流程8. ISP全流程简介9. ISP流程介绍(Raw格式阶段)

ISP Pipeline流程如下:

image

ISP处于整个成像系统的中心地位。

image

ISP功能

器件控制

  • 控制Sensor的Shutter(快门)、Gain(增益)
  • 控制镜头变焦、聚焦
  • 控控制镜头的光圈
  • 控制滤光片的切换
  • 补光灯控制

格式转换

  • RAG转RGB
  • RGB转YUV
  • YUV转HSI
  • YUV444转YUV420等

画质优化

  • 原始图像修正(光通量不均匀、有畸变)
  • 颜色管理
  • 降噪
  • 动态范围控制
  • 清晰度、锐度提升
  • 后处理
  • 数字去抖
    下面左图是没有画质优化的,右图是经过ISP画质优化的。

image

ISP算法流程image

  • Horizontal Flip:做水平翻转

  • Test Pattern:ISP内部产生测试图像,ISP内部调试使用

  • Black Level Correction:黑电平矫正,黑电平是指图像数据为0时对应的信号电平,进行黑电平矫正的目的;一是由于sensor本身会存在暗电流,导致在没有光照进来的条件下pixel也有电压输出,不过这部分一般在sensor端就已经处理掉了,还有一个原因是因为sensor进行模数转换时精度不够,以8bit为例,每个pixel有效范围是0-255,sensor可能无法将接近于0的信息转化出来,由于人眼特性(对暗处细节比较敏感,)所以sensor厂商一般在转换时会加一个固定的偏移量使像素输出在5(非固定值)—255之间,然后传输在ISP端再做一个减法,将5(非固定值)变为0

  • Bad Pixel Correction:坏点消除

  • Lens Shadow Correction:镜头阴影矫正(镜头缺陷、光通量不均匀)

  • AF Statistics in Raw:AF统计信息

  • CFA Interpolation:去马赛克,将RAW转成RGB

  • D65 White Balance:做标定,使得在D65下面,使得白色的物体呈现白色

  • AWB Statistics:做完D65 White Balance后可以做AWB 统计信息

  • AWB:AWB算法根据色温值做白平衡矫正

  • CCM:3×3的颜色矩阵,目的是让成像系统颜色符合人眼睛看到的颜色。AWB已经将白色校准了,CCM就是用来校准白色除白色以外其他颜色的准确度的,用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。Ccm矫正最终结果可以通过拍摄24色卡图片然后用imatest分析来做分析参考

  • Gamma:Gamma矫正,原因是人眼睛的非线性特性,亮度发生变化时,人眼感受到的不是成倍的关系

  • CSC:RGB到YUV色彩空间转换

  • AE Statistics:AE统计信息

  • 2DNR:空间域降噪

  • 3DNR:时间域降噪

  • AF Statistics in YUV:AF 统计信息

  • Local Tone Mapping:图像每一个局部区域都足够清晰

  • Sharpness:锐化让图像变得更清晰

  • WDR:宽动态算法让图像的动态范围变得更大

  • Post-Process:后处理

  • LDC:镜头畸变矫正

  • De-shaking:防抖

下期将逐模块详细介绍各个模块的功能,加油↖(ω)↗

相关文章:

  • 爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)
  • maven配置自定义下载路径,以及阿里云下载镜像
  • 【Python+requests+unittest+excel】实现接口自动化测试框架
  • 【STM32】FreeModbus 移植Modbus-RTU从机协议到STM32详细过程
  • SQL之回炉重造
  • Linux命令(120)之tcpdump
  • C++——友元函数
  • wpf 命令概述
  • 【3】Spring Boot 3 集成mybatis-plus+druid+mysql
  • 竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
  • 【算法练习Day47】两个字符串的删除操作编辑距离
  • ElasticSearch7.x - HTTP 操作 - 查询文档操作
  • C语言从入门到精通之【常量和C预处理器】
  • spring-cloud之consul
  • 修复img实际有正确的链接,但是不显示 (chrome 插件保存的html)--google镜像chatgpt
  • 【comparator, comparable】小总结
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • ➹使用webpack配置多页面应用(MPA)
  • ECMAScript6(0):ES6简明参考手册
  • HTTP--网络协议分层,http历史(二)
  • in typeof instanceof ===这些运算符有什么作用
  • Java到底能干嘛?
  • Java深入 - 深入理解Java集合
  • MYSQL 的 IF 函数
  • NSTimer学习笔记
  • React-flux杂记
  • Spring Boot MyBatis配置多种数据库
  • 分布式任务队列Celery
  • 服务器之间,相同帐号,实现免密钥登录
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 计算机常识 - 收藏集 - 掘金
  • 我的面试准备过程--容器(更新中)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 昨天1024程序员节,我故意写了个死循环~
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Java NIO(一)FileChannel
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (7)STL算法之交换赋值
  • (js)循环条件满足时终止循环
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (第一天)包装对象、作用域、创建对象
  • (转)为C# Windows服务添加安装程序
  • (转载)虚函数剖析
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET成年了,然后呢?
  • .net打印*三角形
  • .NET面试题(二)
  • @RestControllerAdvice异常统一处理类失效原因
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [autojs]autojs开关按钮的简单使用
  • [C/C++] C/C++中数字与字符串之间的转换
  • [C++核心编程](四):类和对象——封装