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

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

相关文章:

ISP 处理流程

#灵感# 摆烂时间太长了,感觉知识忘光光了。重新学习,常学常新。 因为公司文档都不让摘抄、截取,所以内容是工作的一些自己记录和网络内容,不对的欢迎批评指正。 1、ISP概述 ISP是Image Signal Processor 的简称,也就…...

【计算思维】少儿编程蓝桥杯青少组计算思维题考试真题及解析C

【科技素养】少儿编程蓝桥杯青少组计算思维题考试真题及解析 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡: A、1 B、2 C、3 D、4 2.把下面的图形…...

百望云斩获“新华信用金兰杯”ESG优秀案例 全面赋能企业绿色数字化

近年来,中国ESG蓬勃发展,在政策体系构建、ESG信披ESG投资和国际合作等方面都取得了阶段性成效,ESG生态不断完善。全社会对ESG的认识及实践也在不断深化,ESG实践者的队伍在不断发展壮大。 ESG作为识别企业高质量发展的重要指标&…...

bclinux aarch64 ceph 14.2.10 对象存储 http网关 CEPH OBJECT GATEWAY Civetweb

相关内容 bclinux aarch64 ceph 14.2.10 文件存储 Ceph File System, 需要部署mds: ceph-deploy mds-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设…...

2023年亚太杯数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...

【广州华锐互动】VR居家防火逃生模拟演练增强训练的真实性

VR软件开发公司广州华锐互动在消防培训领域已开发了多款VR产品,今天为大家介绍VR居家防火逃生模拟演练系统,这是一种基于虚拟现实技术的消防教育训练设备,通过模拟真实的火灾场景,让使用者身临其境地体验火灾逃生过程,…...

PaddleClas学习1——使用PPLCNet模型对车辆属性进行识别(python)

使用PPLCNet模型对车辆属性进行识别 1. 配置PaddlePaddle,PaddleClas环境1.1 安装PaddlePaddle(1)创建 docker 容器(2)退出/进入 docker 容器(3) 安装验证1.2 安装python3.8(可选)1.3 安装 PaddleClas2. 模型推理2.1 下载官方提供的车辆属性模型2.2 基于 Python 预测引…...

CSS 实现新拟态(Neumorphism) UI 风格

什么是新拟态(Neumorphism) UI 风格?网上似乎还没有一个准确统一的定义。按照我个人的通俗理解,就是将界面的一部分凸起来,另一部分凹下去,形成的一种错落有致的拟物风格。代表作是乌克兰设计师 Alexander Plyuto 在各平台发布的新…...

js 深度学习(六)

立即执行函数 immediate invoked function expression 自动执行 执行完成后立即释放 (function(){var a 1,b2;console.log(ab) }()) // w3c建议 (function(a,b){return ab; })(a,b); // 可以加参数 可以有返回值表达式才能被执行符号执行,被小括号包裹的是表达式…...

【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…...

React hooks(一):useState

1.React hooks React hooks是React16.8的新特性,可以让React函数组件具有状态,并提供类似componentDidMount和componentDidUpdate等生命周期方法。 React 早期版本,类组件可以在shouldComponentUpdate中,通过判断props和state是…...

springboot集成swagger3+解决页面无法访问问题

引入依赖 pom文件引入swagger3依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>配置启动文件 swagger使用ant_pattern_parser解析…...

mapreduce-maven--30.串联所有单词的字串

项目对象模型&#xff08;Project Object Model&#xff0c;POM&#xff09;&#xff1a;Maven使用POM文件来描述项目的结构、依赖和构建设置。POM是一个XML文件&#xff0c;位于项目根目录下&#xff0c;并包含项目的基本信息、构建设置、依赖管理等。 依赖管理&#xff1a;M…...

Hive使用max case when over partition by 实现单个窗口取两个窗口的值(单个开窗函数,实际取两个窗口)

一、Hive开窗函数根据特定条件取上一条最接近时间的数据&#xff08;单个开窗函数&#xff0c;实际取两个窗口&#xff09; 针对于就诊业务&#xff0c;一次就诊&#xff0c;多个处方&#xff0c;处方结算时间可能不一致&#xff0c;然后会有多个AI助手推荐用药&#xff0c;会…...

2023年【北京市安全员-B证】试题及解析及北京市安全员-B证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-B证试题及解析根据新北京市安全员-B证考试大纲要求&#xff0c;安全生产模拟考试一点通将北京市安全员-B证模拟考试试题进行汇编&#xff0c;组成一套北京市安全员-B证全真模拟考试试题&#xff0c;学员…...

二维码智慧门牌管理系统升级解决方案:流量监控引领服务卓越

文章目录 前言一、流量监控功能概述二、流量监控的益处三、应用案例和成功故事四、实施和支持 前言 随着科技的不断发展&#xff0c;二维码智慧门牌管理系统在其便捷高效的管理方式下&#xff0c;深受广大用户喜爱。为了更好地满足用户需求&#xff0c;提升服务质量&#xff0…...

Linux内核面试题(1)

整理了一些网上的linux驱动岗位相关面试题&#xff0c;如果错误&#xff0c;欢迎指正。 1硬件中断号和Linux内核的IRQ号它们是如何映射的&#xff1f; irq驱动会从dts获取硬件中断号&#xff0c;dts里的interrupts字段&#xff0c;使用gic_irq_domain_translate函数。 然后使…...

wpr -start generalprofile -start pool -filemode 这句命令具体是什么意思

注意事项&#xff1a; 总体而言&#xff0c;WPR 和 WPA 是强大的性能分析工具&#xff0c;通过它们&#xff0c;你可以深入了解系统运行时的性能特性&#xff0c;找出潜在问题并进行优化。 查看详细信息&#xff1a; wpr -start generalprofile -start pool -filemode 对应的结…...

C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解

多维数组 1. 矩阵转置 输入一个数字构成的矩形, 将矩形的值进行转置后打印 ​ 输入: 第一行 正整数n(1<n<10), 表示矩阵的边长 随后输入一个矩阵 输出: 转置后的矩阵 ​ 样例输入: 3 1 2 3 4 5 6 7 8 9 样例输出: 1 4 7 2 5 8 3 6 9 ​ ​ 2. 颈椎病治疗 最近云海学长一…...

父组件用ref获取子组件数据

子组件 Son/index.vue 子组件的数据和方法一定要记得用defineExpose暴露&#xff0c;不然父组件用ref是获取不到的&#xff01;&#xff01;&#xff01; <script setup> import { ref } from "vue"; const sonNum ref(1); const changeSon () > {sonNum.…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...