ISP全流程简介

news2024/11/6 9:48:09

ISP的pipline总结

ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量。

1.DPC

坏点矫正。所谓坏点,是指像素阵列中与周围像素点的变化表现出明显不同的像素,因为图像传感器是成千上万的元件工作在一起,因此出现坏点的概率很大。一般来讲,坏点分为三类:第一类是死点,即一直表现为最暗值的点;第二类是亮点,即一直表现为最亮值的点:第三类是漂移点,就是变化规律与周围像素明显不同的像素点。

盐椒噪声是一种在图像中产生黑点或白点的脉冲噪声,这类噪声往往和图像信号内容不相关,与邻域周边像素灰度值差别明显。中值滤波能够较好的滤除盐椒噪声(冲激噪声)。对于Sensor坏点来说,在一定程度上也可以看做是盐椒噪声,因此,坏点校正也可以使用中值滤波进行滤除。

2.BLC

黑电平矫正(Black Level Correction)。为什么要进行黑电平校正呢?原因如下:
CMOS传感器采集的信息经过一系列转换生成原始RAW格式数据。以8bit数据为例,单个pixel的有效值是0~255,但是实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,当然同时也会损失一些亮部细节,由于对于图像来说,我们的关注度更倾向于暗部区域,ISP后面会有很多增益模块(LSC、AWB、Gamma等),因此亮区的一点点损失是可以接受的。

sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的bl的值。
算法:一般BLC模块会放在ISP比较靠前的位置,因为我们希望图像在进入其他模块之前能够还原最为真实的图像。有些sensor会在sensor内部集成BLC的模块,那么此时ISP里的BLC模块只做微调即可。

3.LSC

镜头阴影矫正。Lens Shading指画面四角由于入射光线不足形成的暗角,同时,由于不同频率的光折射率差别,导致 color shading。因此需要镜头影音校正(Lens Shading Correction)。lens shading分为两种 luma shading( 亮度阴影)和 color shading (色彩偏差)。
luma shading
图像中间亮,四周偏暗
在这里插入图片描述

chroma/color shading
由于各种颜色的波长不同,经过了透镜的折射,折射的角度也不一样。
在这里插入图片描述

4. Denoise

使用 cmos sensor 获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过 ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。
但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。

5. 3As(AE,AF,AWB)

AE自动曝光

不同场景下,光照的强度有着很大的差别。人眼有着自适应的能力因此可以很快的调整,使自己可以感应到合适的亮度。而图像传感器却不具有这种自适应能力,因此必须使用自动曝光功能来确保拍摄的照片获得准确的曝光从而具有合适的亮度。
AE 模块实现的功能是:根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈、sensor快门及增益来获得最佳的图像质量。

AF自动对焦

待补充

AWB自动白平衡

当人们用眼睛观察自然世界时,在不同的光线下,对相同颜色的感觉基本是相同的,比如在早晨旭日初升时,人们看 个白色的物体 感觉它是白的:而人们在夜晚昏暗的 灯光下,看到的白色物体,感觉它仍然是白的, 这是由于人类从出生到成长的过程中, 大脑己经对不同光线下的物体的彩色还原有了适应性, 这种现象称为颜色恒常性。不幸的是, CMOS CCD 等感光器件没有这样的适应能力 白色物体在暖色灯光照射下,拍摄的图像橘红色, 在冷色灯光照射下,拍摄的图像呈淡蓝色。
在这里插入图片描述
为什么在不同色温的光源下,物体会出现偏色呢?这是因为图像传感器只是记录了所有投射到其上的光线,其本身并不能分辨投射到其上的色光是由物体本身的色彩反射而成,还是由偏色的环境光造成,所以传感器是没有颜色恒常性能力,不能够适应这种色光的变化 所以当它真实呈现出所拍摄到的图像时,就出现了偏色。

为了使得摄像机也具有颜色恒常性能力,需要使用自平衡技术。所谓白平衡( Wh ite Balance ,简单地说就是去除环境光的影响 ,还原物体真实的颜色,把不同色温下的颜色调整正确, 从理论上说白颜色调整正确了,其他色彩就都准确了。

白平衡的调节一般是通过改变红、绿、蓝三色的比例关系实现。
AWB都有哪些算法

  • 灰度世界法 灰度世界算法基于一个假说:任一幅图像,当它有足够的色彩变化,则它的RGB分量的均值会趋于相等(即灰色)
  • 完全反射法 完全反射也是基于一个假说:一幅图像中某个像素点最亮,代表它对各个波段的光线都近乎完全反射,那么它的真实颜色应该是白色的,即R=G=B,且RGB的值最大。
  • 白点-色温标定法

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

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

相关文章

面试 - 软件工程体系

今天是我人生中的第二次面试,第一次面试到技术问题。 面试公司:无锡信捷电气股份有限公司 面试时间:2023 年 3 月 6 日 15:30 面试地点:西安工程大学(临潼校区)D-188 在技术面中,我表现的不是很…

外骨骼机器人(五):步态分析之正常步态

研究病理步态之前,需要了解正常步态,作为判断标准。但是需要记住两个问题:1.“正常”因人而异,性别、年龄、身体情况都需要考虑在内,因此,需要对不同的个体选择合适的正常标准;2.即使病人的步态与正常步态有某种不同,这也不能说明这是不可取的,也不能说明应该把它变成…

计算机网络【王道】

文章目录第一章 计算机网络体系结构计算机网络概述计算机网络的概念计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标计算机网络体系结构与参考模型计算机网络分层结构计算机网络协议、接口、服务的概念ISO/OSI 参考模型和 TCP/IP模型第二章物理层基本概…

Codeforces Round 855 (Div. 3) A-E2

比赛链接:Dashboard - Codeforces Round 855 (Div. 3) - Codeforces A:模拟 题意:给定一个字符串,问这个字符串是不是猫叫。定义是猫叫得字符串: 1:必须由大写或小写得M(m),E&…

【大数据是什么】

大数据是什么大数据是做什么的?大数据主要有哪些职位 ?大数据运维工程师数据仓库开发工程师ETL工程师大数据开发工程师BI工程师算法工程师大数据平台开发工程师大数据架构师讲述一下自己的大数据学习之路大数据是做什么的? 2014年&#xff0c…

Pytorch语义分割网络的详细训练过程——以NYUv2数据集为例

目录一、构建数据集1. 对Dataset和DataLoader的理解2. torch.utils.data.Dataset3. torch.utils.data.DataLoader4. 代码分块解析5. 完整代码6. 可视化二、模型搭建三、定义损失函数和优化器四、迭代训练参考文章一、构建数据集 1. 对Dataset和DataLoader的理解 Pytorch提供了…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解RTC的使用

🍇 博主主页: 【Systemcall小酒屋】🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术…

c++11 标准模板(STL)(std::unordered_map)(六)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…

【Transformers】IMDB 分类

安装 transformers 库。 !pip install transformersimport numpy as np import pandas as pd import tensorflow as tf import tensorflow_datasets as tfdsfrom transformers import BertTokenizer from sklearn.model_selection import train_test_split from transformers i…

IO学习、拓展贴

1. 字节流 1.1 FileInputStream import org.junit.jupiter.api.Test;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException;/*** 演示FileInputStream的使用(字节输入流 文件--> 程序)*/ public class FileInputStream_ {pu…

10款最佳项目管理工具推荐,总有一款适合你

为什么需要项目管理工具&#xff1f; 如今企业规模不断扩大&#xff0c;业务逐渐复杂化&#xff0c;项目管理已经成为现代企业管理中不可或缺的一环&#xff1b; 如果没有合适的项目管理工具&#xff0c;我们的项目管理和跟踪就会变得非常困难。这可能导致项目延期或者出现一…

免费Api接口汇总(亲测可用,可写项目)

免费Api接口汇总&#xff08;亲测可用&#xff09;1. 聚合数据2. 用友API3. 天行数据4. Free Api5. 购物商城6. 网易云音乐API7. 疫情API8. 免费Api合集1. 聚合数据 https://www.juhe.cn/ 2. 用友API http://iwenwiki.com/wapicovid19/ 3. 天行数据 https://www.tianapi.com…

RK356x U-Boot研究所(命令篇)3.9 scsi命令的用法

平台U-Boot 版本Linux SDK 版本RK356x2017.09v1.2.3文章目录 一、设备树与config配置二、scsi命令的定义三、scsi命令的用法3.1 scsi总线扫描3.2 scsi设备读写一、设备树与config配置 RK3568支持SATA接口,例如ROC-RK3568-PC: 原理图如下: 可以新建一个rk3568-sata.config配…

Oracle listagg,wm_concat函数行转列结果去重Oracle 11g/19c版本

1、准备数据表 2、根据学生名(stu_name)分组&#xff0c;学生名相同的&#xff0c;学生年龄(stu_age)用逗号拼接&#xff0c;使用 listagg&#xff08;&#xff09;函数法拼接 3、上图中出现了两个12,12&#xff0c;实现去重 3.1 listagg&#xff08;&#xff09; 函数 去重 【…

网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

网络协议系列文章 网络协议(一)&#xff1a;基本概念、计算机之间的连接方式 网络协议(二)&#xff1a;MAC地址、IP地址、子网掩码、子网和超网 网络协议(三)&#xff1a;路由器原理及数据包传输过程 网络协议(四)&#xff1a;网络分类、ISP、上网方式、公网私网、NAT 网络…

怎么把tif格式转成jpg?快速无损转换

怎么把tif格式转成jpg&#xff1f;在编辑使用图片的时候&#xff0c;弄清各种图片格式的特点是很重要的&#xff0c;因为图片总因自身格式具备的特点不同常常出现打不开的情况&#xff0c;或者占的体积大&#xff0c;这都会直接影响我们的使用。所以目前很多的图片格式都需要提…

spring boot整合RabbitMQ

文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 2.1 RabbitMQ高级特性 2.1.1 消息的可靠性传递 2.1.2 Consumer Ack 2.2.3 TTL 2.2.4 死信队列 总结 前言 一、环境准备 引入依赖生产者和消费都引入这个依赖 <dependency><groupId>org.springframework…

自动化测试总结--断言

采购对账测试业务流程中&#xff0c;其中一个测试步骤总是失败&#xff0c;原因是用例中参数写错及断言不明确 一、问题现象&#xff1a; 采购对账主流程中&#xff0c;其中一个步骤失败了&#xff0c;会导致这个套件一直失败 图&#xff08;1&#xff09;测试报告视图中&…

Navicate远程连接Linux上docker安装的MySQL容器

Navicate远程连接Linux上docker安装的MySQL容器失败 来自&#xff1a;https://bluebeastmight.github.io/ 问题描述&#xff1a;windows端的navicat远程连接不上Linux上docker安装的mysql&#xff08;5.7版本&#xff09;容器&#xff0c;错误代码10060 标注&#xff1a; 1、…