ISP 处理流程

#灵感# 摆烂时间太长了,感觉知识忘光光了。重新学习,常学常新。

因为公司文档都不让摘抄、截取,所以内容是工作的一些自己记录和网络内容,不对的欢迎批评指正。

1、ISP概述

ISP是Image Signal Processor 的简称,也就是图像信号处理器。

ISP内部包含 CPU、SUP IP、IF 等设备,事实上,可以认为 ISP 是一个 SOC(system of chip),可以运行各种算法程序,实时处理图像信号。

ISP 工作机制:

lens 将光信号投射到sensor 的感光区域后,sensor 经过光电转换,将Bayer 格式的原始图像送给ISP,ISP 经过算法处理,输出RGB空间域的图像给后端的视频采集单元。在这个过程中,ISP通过运行在其上的firmware(固件)和ISP逻辑,从而对lens 和sensor 进行相应控制,进而完成自动光圈、自动曝光、自动白平衡等功能。

ISP 由ISP逻辑及运行在其上的Firmware组成,逻辑单元除了完成一部分算法处理外,还可以统计出当前图像的实时信息。Firmware 通过获取ISP 逻辑的图像统计信息,重新计算,反馈控制lens、sensor 和ISP 逻辑,以达到自动调节图像质量的目的。

PQ Tools 工具通过网口或者串口完成对ISP 的在线图像质量调节。(IPC和UVC一般是在线调整,手机一般是先采图,再离线调节)

2、ISP 流程

先看一个手机流程

再看一个MTK的仿真流程:

再看一个流程:

再来一个流程:(我的文章,就多贴几个流程,方便对比)

好了,总结以上4个流程,基本是:

DPC——RNR——BLC(OB)——(DGN)——LSC——AWB——LTM——DMS(RNR)——CCM——gamma——color conversion——YNR——EE(CNR)——color其它特殊处理。

(MTK调了两年,所以我以MTK的流程为标准,且目前的自研ISP流程和MTK 几乎一样)。

ISP流程总共有两个数据转换节点,涉及三个数据域raw——>RGB——>YUV:

1、raw(bayer)数据转换rgb数据

sensor捕获景物的光信号强度,输出图像是黑白的,没有色彩信息。CMOS上的R、G、B三色的滤光片,将图像数据分成RGB三种分量而形成的Bayer raw图。(Bayer格式的RAW数据包含了2个G、1个R和1个B,一般格式有GBRG、GRBG、BGGR、RGGB多种)Bayer的数据是每个像素点只包含了一种色彩信息,呈现了一种“马赛克”的样子,我们需要将RGB数据结合在一个像素点中展现,消除马赛克的样子,也就是这个过程就是 - Demosaic。

demosaic 算法举例:红色像素区域为例,我们需要的是丢失了的绿色与蓝色的值。插值法可以通过分析与这个红色像素相邻的像素计算出这两个值。比如算法发现该区域像素绿色像素均含有大量电荷,但蓝色像素电荷数为零,所以可以推断出,这个红色像素实际上是黄色的。

2、RGB 到YUV的色彩空间转换

原因:

(1)为何会有色彩空间的转换呢?我们图像的采集和处理在RGB空间就已经有很好的效果了,但是显示和信号的处理多数在YUV空间下进行。显示主要指的是电视,使用YUV格式可以兼容黑白电视和彩色电视。

(2)色彩空间转换这个模块将RGB 转换为 YUV444, 然后在YUV 色彩空间上进行后续的彩色噪声去除、 边缘增强等, 也为后续输出转换为jpeg 图片提供方便。在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员,JPEG、MPEG 均采用此格式。 一般人们所讲的YUV 大多是指YCbCr。YCbCr有许多取样格式,如 4∶4∶4,4∶2∶2, 4∶1∶1和 4∶2∶0。(NV12 和 NV21 属于 YUV420 格式。)

-----------------------------------------一个发散问题  start   ------------------------------------------------

其中gamma模块,不同的曲线指数会影响CC的颜色还原程度,理应先调整gamma,再去调整CCM模块。但是以上几个流程中,gamma却都位于CCM 模块之后。

大概的解释Color Constancy=AWB+CCM。Gamma校正就是对图像的灰度进行非线性处理,这个曲线类似于指数关系,最终处理后图像灰度是类似人眼的非线性效果,这个指数就是Gamma。

Gamma矫正会影响到整个图像的对比度。对比度越高,整个图像的通透性越好,让人眼视觉效果更加明显。Gamma矫正也会影响到图像的色彩,对比度越高,整个图像的色彩饱和度也越高。

CC是在RGB域进行的一种映射,这个映射是sensor输出数据——>人眼真实感受值。为了实现这个映射的具体的映射方式,常用的一种方法是标定法。即利用标定好的某种颜色的标准值(比如color checker 色卡)和sensor输出数据做差,来求得CC对该颜色需要做的映射。

结论:使用工具校准时,需要填入饱和度,而gamma 影响饱和度,所以校准CC时要输入使用的gamma。而实际上为了主观表现(亮度、对比度或者噪声),CC校准后gamma 还会进行调整,所以gamma 属于CC的辅助模块,而不是必备模块。gamma 和CC的位置在ISP pline中就没有强相关性。

-----------------------------------------一个发散问题  end  ------------------------------------------------

3、ISP 问题来源

再回顾一下流程:DPC——RNR——BLC(OB)——(DGN)——LSC——AWB——LTM——DMS(RNR)——CCM——gamma——color conversion——YNR——EE(CNR)——color其它特殊处理。

各模块解释:

[转]-- ISP(图像信号处理)算法概述、工作原理、架构、处理流程 - 知乎 (zhihu.com)

问题来源列举:

(1)OB(BLC):物理器件不可能是理想,所以会产生暗电流,出现不合适的black level。(另一种奇怪的解释:实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在n(每家不同)~255之间,目的是为了让暗部的细节完全保留,当然加了之后高光信号溢出,会损失一些亮部细节。当ISP 接收到sensor 的数据时,就要通过标定的方式,确定这个偏移量的具体值。后续的 ISP处理模块,需要先减掉该偏移值,才能保证数据的线性一致性。)

(2)DPC:坏点一般是由于制造工艺的问题使得个别pixel 不良造成的。它是指某个像素点与周围像素有较大的差异。一般是在全黑的环境下出现白点或者高亮的环境下出现黑点。

(3)LSC:由于镜头本身就是一个凸透镜,Lens的光学特性——凸透镜原理,中心的感光必然比周边多,通光量从中心到边角依次较少,导致图像中间亮,四周偏暗; 第二,当Lens CRA(主光线角度,Chief ray angle)小于 Sensor CRA(microlens)导致sensor传感器边缘像素收集光能衰减更大(CRA矫正改善),因此导致传感器中心像素收集光能大于边缘像素,加剧Luma Shading。

color shading :各种颜色的波长不同,经过透镜折射后,折射的角度也不一样,就会造成color Shading的现象,另外由于CRA的原因也会导致shading现象。(当入射光线的CRA角度超过sensor 的CRA时,就会导致经过R-filter的光线,照到了G像素上,造成像素之间的串扰,出现color shading;)

CRA选择:lens CRA 大于 Sensor CRA 会出现明显的 color shading,当 lens CAR 小于 Sensor CRA 会出现 luma shading。建议是选择 lens CRA 小于 sensor CRA 的配置。

(4)NR:sensor在输出图像的时候就会带有一些噪声,原始RAW图经过ISP处理后,会引入一些新的噪声,或者对原有噪声进行了放大。

(5)AWB:人眼具有色彩恒常性,sensor并没有人眼这么强大,为了模拟人眼的成像效果,保证任何色温场景下白色都是白色。(视锥细胞会根据周围环境光的情况独立地调整颜色通道的敏感度,如果一个物体表面对光线的反射特性不随光照条件而变化(除了变色龙外大多数物体都满足),那么该表面的光亮度与环境光亮度的比值也恒等,数值上等于视锥细胞的三刺激值与白场响应的比值,因此该表面在各种光照下激发的颜色知觉都(基本)相同。这就是颜色恒常的原理。)

(6)DMS:从sensor出来的图是通过cmos上透红色、 透绿色和透蓝色的滤镜阵列单元分别接收红(Red)、 绿(Green)、 蓝(Blue)三个分量的信息,将三个分量最终合成一个彩色信息。

(7)gamma: 摄像机感光与输入光强呈线性关系, 而人眼对外界光源的感光值与输入光强呈指数关系。为方便人眼辨识图像, 需要将摄像机采集的图像进行gamma 矫正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/142422.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python---综合案例:通讯录管理系统---涉及点:列表、字典、死循环

需求: 开个一个通讯录的管理系统,主要用于实现存储班级中同学的信息(姓名、年龄、电话) 涉及点:列表、字典、死循环 相关链接:Python--列表及其应用场景---增、删、改、查。-CSDN博客 Python---字典---…

回顾 — SFA:简化快速 AlexNet(模糊分类)

模糊图像的样本 一、说明 在本文回顾了基于深度学习的模糊图像分类(SFA)。在本文中:Simplified-Fast-AlexNet (SFA)旨在对图像是否因散焦模糊、高斯模糊、雾霾模糊或运动模糊而模糊进行分类。 二、大纲 图像模糊建模简要概述简化快速 AlexNet…

Model Inspector—软件模型静态规范检查工具

产品概述 Model Inspector(MI)原厂商是韩国Suresoft,是KOLAS国际公认测评机构,旨在提升安全关键领域软件可信度。MI用于开发过程中模型的静态检查,包括规范检查、复杂度度量,提供MAAB、HIS、CG、MISRA_AC_…

MCU通过KT6368A用SPP透传发送1K左右的数据,手机APP显示是3个包或者4个包,但是我看手册说最大一个包是512,理论应该是两个包吧,请问这正常吗?

一、问题简介 MCU通过KT6368A用SPP透传发送1K左右的数据,手机APP显示是3个包或者4个包,但是我看手册说最大一个包是512,理论应该是两个包吧,请问这正常吗? 详细说明 实际测试的截图如下:使用的是安卓app…

【MySQL】库的相关操作 + 库的备份和还原

库的操作 前言正式开始创建数据库删除数据库编码集查看系统默认字符集以及校验规则字符集校验规则 所有支持的字符集和校验规则所有字符集所有校验规则 指明字符集和校验规则创建数据库相同的字符集用不同的校验规则读取会出现什么情况 alter修改数据库show create databasealt…

深入理解Kafka3.6.0的核心概念,搭建与使用

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…

OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理

导出onnx文件 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolo/yolov3_mobilenetv2_8xb24-ms-416-300e_coco.py checkpoint_file yolov3_mobilenetv2_mstrain-416_300e_coco_20210718_010823-f68a07b3.pth…

跨境电商源码:多语言支持与扩展的终极解决方案

随着全球电商市场的不断扩大,跨境电商源码的需求日益增长。对于想要拓展国际业务的电商企业来说,多语言支持显得尤为重要。在这方面,我们的跨境电商源码产品具备显著优势,不仅全面支持多语言,还方便扩展多个语言的CSDN…

PP-ChatOCRv2、PP-TSv2、大模型半监督学习工具...PaddleX新特性等你来pick!

小A是一名刚刚毕业的算法工程师,有一天,他被老板安排了一个活,要对一批合同扫描件进行自动化信息抽取,输出结构化的分析报表。OCR问题不大,但是怎么进行批量的结构化信息抽取呢?小A陷入了苦苦思索... 小B是…

【06】VirtualService高级流量功能

5.3 weight 部署demoapp v10和v11版本 --- apiVersion: apps/v1 kind: Deployment metadata:labels:app: demoappv10version: v1.0name: demoappv10 spec:progressDeadlineSeconds: 600replicas: 3selector:matchLabels:app: demoappversion: v1.0template:metadata:labels:app…

数据结构:红黑树的原理和实现

文章目录 红黑树的概念红黑树的性质红黑树的模拟实现红黑树的平衡问题 整体实现和测试 本篇用于进行红黑树的拆解和模拟实现,为之后的map和set的封装奠定基础 红黑树的概念 红黑树也是一种二叉搜索树,但是在每一个节点的内部新增了一个用以表示该节点颜…

【python自动化】Playwright基础教程(八)鼠标操作

【python自动化】Playwright基础教程(八)鼠标操作 本文目录 文章目录 【python自动化】Playwright基础教程(八)鼠标操作playwright系列回顾前文代码click模拟鼠标点击dblclick模拟鼠标双击down模拟鼠标按下move模拟鼠标移动up模拟鼠标释放wheel模拟鼠标滚动鼠标长按常用实战引…

mysql数据库可以执行定时任务

在一些业务需要中,经常需要一些定时任务。如Java的schedule,nodejs的node-schedule等。今天第一次接触了使用数据库的存储过程来执行定时任务。 本篇文章以MySQL数据库为例,介绍通过数据库设置定时任务的方法。本文中以介绍操作过程为主&…

三数之和问题

题目描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。…

asp.net core mvc之 布局

一、布局是什么? 布局是把每个页面的公共部分,提取成一个布局页面(头、导航、页脚)。 二、默认布局 _Layout.cshtml 默认的布局是在 /Views/Shared 目录的 _Layout.cshtml文件。通常Shared目录中的视图都是公共视图。该目录下的…

瑞利长度(Rayleigh length)

瑞利长度 Rayleigh length 在光学,特别是激光学中,我们设鞍腰部(如图中所示的最低处)为A,其横截面面积为a,沿光的传播方向,当横截面面积因为散射达到2a时,我们设此处为B,…

二维码智慧门牌管理系统升级解决方案:运营可视化之道

文章目录 前言一、系统概述二、数据可视化与运营决策 前言 随着科技的飞速发展和人们生活水平的提高,传统的门牌管理系统已经无法满足现代社会的需求。在这个信息化、智能化的时代,一款升级版的二维码智慧门牌管理系统应运而生,它将以全新的…

Vmware虚拟机重装 虚拟机能ping通主机,而主机不能ping通虚拟机的问题

CClean,用它把你电脑上已经卸载的软件但是注册表还没删干净的把注册表删干净,之前说的那种情况(虚拟网络编辑器打不上勾)就迎刃而解了。 Ps:CClean:再网上百度就可以查到,软件对用户也很友好&a…

(11.13 知识总结(路由层)

一、路由层 1.1路由匹配 1.1.1 什么是路由? 路由可以看成是跟在 ip 和 port 之后的地址 1.1.2 url( ) 方法 # 示例 urlpatterns [ url(r^admin/, admin.site.urls), url(r^login/, views.login_func), url(r^register/$, views.register_func), ] url…

【异步并发编程】使用aiohttp构建Web应用程序

文章目录 1. 写在前面1. 什么是aiohttp?1.1. 什么是异步编程? 2. 安装aiohttp3. 异步HTTP服务器4. 异步请求5. aiohttp REST实例 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力…