ISP 处理流程

news2024/11/22 22:58:59

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

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

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 矫正。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】VLAN原理和配置

目录 1、VLAN的原理 1.1、什么是VLAN 1.2、为什么要使用VLAN 1.3、VLAN的三种端口类型 1.4、VLAN的划分方法 2、VLAN的配置 1、VLAN的原理 1.1、什么是VLAN VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上…

key的性能保障,事件处理器,表单控件等介绍

4-2key设置-性能的保障 不能修改原数组的方法,如果想要修改原数组,就进行重新赋值 this.items this.items.filter((item) > item.message.match(/Foo/)) keyCode键的值**key设置-性能的保障**提高性能,可以对比老的虚拟dom,一样的就留着,不一样就补上Vue默认按照"就地…

2024年孝感初中级工程师职称评审要求

孝感工程类初级职称、中级职称职称评审相关要求,满足什么条件可以评审孝感职称呢?秋禾火告诉你 什么人可以在孝感申报职称 1.在孝感本地注册登记1年以上,按规定缴纳社保的的制造业、建筑业等生产类民营企业。2.参加评审的人员与所属企业签订…

使用CXF调用WSDL(二)

简介 本篇文章主要解决了上篇文章中遗留的对象嵌套问题,要想全面解析无限极的对象嵌套需要使用递归去解决 上文链接: 使用CXF调用WSDL(一) 上文回顾 上文使用了单方法“ call() ”解决了List和基本类型(含String&…

用户登录信息如何存放

放到ThreadLocal LoginUserInfoDto 缓存登录信息的实体,我这里只放了一个手机号就够了。可以根据自己的需要修改,比如角色权限等等 package com.fox.domain.dto;/*** author * 当前登录人信息*/ public class LoginUserInfoDto {/*** 当前登录人 手机号…

什么是变更管理?对IT管理有什么帮助?

变更管理是指在最短的中断时间内完成基础架构,或服务的任一方面的变更而对其进行控制的服务管理流程。变更管理的目标是确保在变更实施过程中使用标准的方法和步骤,尽快地实施变更,以便最小化由变更所导致的业务中断,将变更对业务的影响减小到…

使用Tauri开发桌面应用

本文是对视频 Tauri入门教程[1]的学习与记录 Tauri官网[2] 对 node版本有要求 创建项目及目录介绍: 项目的目录结构如下 可以安装推荐的插件 执行npm run tauri build出错,根据 https://github.com/tauri-apps/tauri/issues/7430 执行 yarn add -D tauri-apps/cli && y…

【Windows】安装绿色版Mysql数据库 -- 可支持所有版本安装教程

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

【Python数据结构与算法】线性结构小结

🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON学习系列专栏 💫"没有罗马,那就自己创造罗马~" 目录 线性数据结构Linear DS 1.栈Stack 栈的两种实现 1.左为栈顶,时间复杂度为O(n) 2.右为栈顶,时间复杂度O(1) 2.队列Queue 3.…

SpringCloudalibaba2

一、nacos简介 Nacos(全称为"Nano Service")是一个用于动态服务发现、配置管理和服务元数据的开源平台。它由阿里巴巴集团于2018年开源,并逐渐成为云原生应用中的重要组件之一。 Nacos提供了以下主要功能: 1. 服务发…

Mysql5.7创建远程账号和新建数据库

文章目录 Mysql5.7创建远程账号和新建数据库创建远程账号新建默认数据库默认数据库指定字符集数据库写法一写法二 查看数据库列表查看数据库的定义声明 Mysql5.7创建远程账号和新建数据库 创建远程账号 CREATE USER mm% IDENTIFIED WITH mysql_native_password BY mm1122;Que…

iceoryx(冰羚)-Service Discovery

Service Discovery Summary and problem description IPC通道(例如消息队列或UNIX域套接字)上的服务发现是不可执行的,因为传输的数据较大,这可能会导致多个帧的传输。如果发现大量高频服务,例如在启动时&#xff0c…

易点易动固定资产管理系统助您轻松应对复杂的固定资产管理挑战

在现代企业运营中,固定资产是企业的重要财产,对于企业的发展和运营至关重要。然而,随着企业规模的扩大和业务的复杂化,固定资产管理面临着越来越多的挑战。传统的手工管理方法已经无法满足企业的需求,因此,…

Sentinel底层原理(下)

1、概述 Sentinel的核心原理,也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。 Sentinel会为每个资源创建一个处理链条,就是一个责任链,第一次访问这个资源的时候创建,之后就一直复用,所以这个处理链条每…

开源软件 FFmpeg 生成模型使用图片数据集

本篇文章聊聊,成就了无数视频软件公司、无数在线视频网站、无数 CDN 云服务厂商的开源软件 ffmpeg。 分享下如何使用它将各种视频或电影文件,转换成上万张图片数据集、壁纸集合,来让下一篇文章中的模型程序“有米下锅”,这个方法…

Genio 700安卓核心板-MT8390安卓核心板规格参数

Genio 700(MT8390)安卓核心板是一款专门针对智能家居、互动零售、工业和商业应用的高性能边缘人工智能物联网平台。它集成了高度响应的边缘处理、先进的多媒体功能、各种传感器和连接选项,并支持多任务操作系统。 )安卓核心板采用高效的芯片内人工智能多处理器(APU)…

Meta开源支持1000多种语言的文本转语音与语音识别大语言模型

据不完全统计,地球上有超过7000多种语言,而现在的大语言模型仅仅只涉及到了主流的100多种语言。相对全球7000多种语言来讲,这仅仅只是其中的一小部分。如何让全球的人获益,把大语言模型扩展到更多的语言上,一直是大语言模型研究的重点。Meta发布了涵盖 1406 种语言的预训练…

缺陷预测(一)——论文复现

运行CGCN文件 问题一:CNN输入维度的问题出现的问题解决问题原因 问题二:mix时,输入的train_in和train_gen.inputs数据格式不一致出现的问题解决问题 最终结果 问题一:CNN输入维度的问题 出现的问题 数据集改好之后,出…

WebStorm配置less编译wxss或css

文章目录 前言先下载安装less程序:实参:要刷新的输出路径成功 前言 使用WebStorm写微信小程序,wxss写着很麻烦,就想着用less,接下来是配置less编译 先下载安装less npm install -g lessless会安装在你当前目录下(以D…

记录第一次

1.看接口 看控制台 报错吗? 控制台 空指针报错 前端控制台 2.找报错 看哪里报的错误,控制台的错误(空指针报错) 错误问题: 3.分析业务 业务问题 一定要问, 4. 找到出错点