ISP概念入门

这里写自定义目录标题

  • 引言
  • ISP的处理流程
    • 1、Sensor有暗电流
    • 2、通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕
    • 3、Senor上有的像素点的输出有坏点
    • 4、Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)
    • 5、Senor获取的图像中有大量噪声
    • 6、Senor获取的图像容易受到光源颜色的影响
    • 7、Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差
    • 8、人眼对暗部细节比Sensor敏感
    • 9、Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽
    • 10、Senor一定曝光量下较暗部分或较亮部分的细节显示不充分
    • 11、图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间
    • 12、镜头需要调节焦距才能避免光学成像模糊
    • 13、镜片的表面反射或镜筒、反光镜组的内面所引起的反射光,到达底面后造成画面整体或一部份产生了雾蒙
    • 14、画面清晰度不够
    • 笔者小结

引言

1、ISP是什么: 图像信号处理(Image Signal Process),主要用于手机拍照和录像效果
2、为什么需要ISP: 在视觉处理过程中,ISP就是成像引擎,在实际环境中,镜头和Sensor的物理缺陷(不完美),拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过瞳孔缩放,适应环境明暗一样)。

在这里插入图片描述

ISP的处理流程

下面这个图是一个常用的ISP处理流程,推荐一个链接学习:ISP(Image Signal Process)先了解基本概念,再学习这个流程。
在这里插入图片描述
先了解ISP在具体问题的解决方案

1、Sensor有暗电流

处理模块: BLC(Black Level Correction)/ Black Level Compensate (OBC)
黑电平校正。所谓黑电平就是在DNP下,将曝光时间和增益都调到最小时拍摄图片的亮度值,理想情况下应该是0,但是实际中因为sensor暗电流作用,全黑像素值大于0。(这一个值,在后面可能会受到AWBGain,CCM,Gamma的影响)。

处理原理: 我们需要找到一个矫正值,所有像素值都减去这个值,就得到一个矫正成功的结果。一般情况下,sensor的传感器周边,还有一小部分区域是有感光器的,但是没有光透射进来。可以把这部分的传感器的信号作为矫正值,从可感光部分的信号中减去,就可获得校正后信号。

2、通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕

处理模块: LSC(Lens Shade Correction)------镜头阴影校正
Lens Shading是由于镜片从边缘到中心对入射光线的反射程度不同,造成拍摄均匀亮度的画面,图像从中心到边缘亮度不均匀逐渐变暗。Color Shading是由于Lens从中心到边缘,其R、G、B变暗的速率不一样,总体表现就是Gb/Gr像素值差异较大,两个像素之间有细微纹理。找出shading的distribution,然后用最小的模型来建模将其导入

处理原理: 首先检测出图像中间亮度比较均匀的部分,认为这部分不需要矫正,然后以此为中心,计算出周围区域需要补偿的因子(增益)。实际项目中,可以把镜头对准白色物体,检查图像四周是否有暗角。

在这里插入图片描述

3、Senor上有的像素点的输出有坏点

处理模块: DPC/BPD(Defect Pixel Correction/Bad Pixel Detect)
坏点校正/坏点检测。相机中成像坏点一般是白色或者黑色的点,和周围像素点的差异明显。

处理原理: 第一步:检测坏点。在RGB域上做5x5的评估,如果某个点和周围的点偏离度超过阈值的点为坏点。为了防止误判,还需要更复杂的逻辑,如连续评估N帧。第二步:纠正坏点。对找到的坏点做中值滤波,替换原来的值即可。

4、Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)

处理模块: DM(Demosaicing/Color Filter Array Interpolation/CFA插值)------颜色插值
CMOS Sensor出来的RawData是Bayer格式的图像,每个像素只有一个通道的信息。DM是将Bayer格式的图像恢复成每个像素用RGB三通道表示的方式。DM的主要依据是图像在平滑的局部区域,各分量的ratio是相等的。插值算法的好坏会影响图片的细节,如摩尔纹。
在这里插入图片描述
(此处附上笔者自己的理解:颜色是由RGB的3个值组成的,所以每个像素点的颜色需要三块感光板,成本太高,所以实际中采用的是一块滤光板,这个板子上是分割成很多小格子,每个格子的颜色不一样,bayer是其中一种分布方式,绿色格子数>2红色=2蓝色,因为人对绿色敏感,当有光透过来,会在小格子上产生数值,最后采用颜色插值算出真实的RGB值)
PS:华为mate60pro采用了ryyb滤镜阵列技术,RYYB就是将两个绿色像素G换成黄色像素Y替代, Y(红色和绿色组合)。

处理原理: 内插法

5、Senor获取的图像中有大量噪声

处理模块: NR(Noise Reduction/Denoise):去噪
采用特定的LPF(Low Pass Filter)对图片进行滤波,滤除图像的噪声成分,而Bilateral filtering即双边滤波器,它是一种保护边缘的平滑滤波器,这样既可以滤除噪声,edge又可以保留下来。

处理原理: 对图像进行降噪处理的传统方法有均值滤波、高斯滤波,本质是低通滤波器。
普通的高斯滤波只考虑像素的空间距离关系,这样会导致滤波后图像变得模糊,为了避免图像变模糊,就需要保持图像的边缘,这时,就还要考虑相邻像素和本像素的相似程度,对于相似度高的像素给予更高的权重,我们称这种滤波为双边滤波。
在这里插入图片描述

6、Senor获取的图像容易受到光源颜色的影响

处理模块: AWB(Automatic White Balance)------自动白平衡
解决环境光不同色温导致整幅图片偏色的情况。

处理原理:
比较常用的WEB算法有灰度世界、完美反射法等。
灰度世界(Gray World)算法基于一个假设:平均来讲,世界是灰色的。所以,白平衡就是调整R/B增益,达到R、G、B 相等。

白平衡有3个步骤:

(1)检测色温,如果手工调节,就知道图像中什么位置是白色物体了,色温容易检测;如果是自动调节,就需要估计出(猜出)图像中的白色位置,这是最重要的一环;

实际计算中为了实时操作,减少计算量,通常选取某个特定区域(如图像中央)像素进行计算。但若图像颜色较为单一或选定区域正好落入大的色块(红光下的白墙),以上算法求得的色温会非常不准确。为此,必须根据一定的约束条件,挑选出白色像素来计算色差。

(2)计算增益,计算R和B要调整的增益;调整增益将Cb和Cr调整到0 (或接近0)的两个系数,即R=G=B。

(3)色温矫正,根据增益调整整幅图片的色温。

7、Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差

AWB已经将白色校准了,CCM就是用来校准除白色以外其他颜色的准确度的,
处理模块: CCM(Color Correction Matrix/ DSC color calibration):----颜色校正矩阵
拍摄color checker24色板,将相机拍摄图片值与色板标准值之间进行对比(RGB颜色空间),得出一组能将拍摄值校正到最接近标准值的3x3矩阵。通过这个矩阵对所有相机拍摄的图片进行颜色校正。
处理原理: 一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵,一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。
用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。Ccm矫正最终结果可以通过拍摄24色卡图片然后用imatest(一款专业的图像分析软件,具有强大的图像分析和处理功能)分析来做分析参考。

8、人眼对暗部细节比Sensor敏感

人眼不同于摄像机,接收光子来感知光线。比如:在一间小黑屋中每增加一盏灯,摄像机都能线性增加亮度。但是人眼在黑暗时增加一盏灯时感受明显,往后随着灯的个数增长人眼并不会有明显感受
处理模块: RGB Gamma------Gamma校正

处理原理: Gamma编码后的图像相比于线性编码的图像,明显有更多的暗部色阶。Gamma编码刚好满足了人眼对暗部细节敏感的特性。即人眼是按照gamma < 1的曲线对输入图像进行处理的(公式f(I)=I^gamma,I为原图像素值)。
现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值。

9、Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽

在YUV 色彩空间上进行彩色噪声去除、 边缘增强等更方便
处理模块: RGBToYUV------色彩空间转换

处理原理: YUV 是一种基本色彩空间, 人眼对亮度Y改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。所以,只有YUV444格式的YUV数据的比例是1:1:1,其他各种格式,如YUV422,YUV420等格式,UV的数据量都小于Y,达到节省存储空间和传输带宽的目的。YUV数据的概念就是这样简单。(在编程时查一下文档,再搞清楚内存排布即可)
第二,RGB和YUV转换有固定的公式。
另外, 在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。

10、Senor一定曝光量下较暗部分或较亮部分的细节显示不充分

在YUV 色彩空间上进行彩色噪声去除、 边缘增强等更方便
处理模块: DRC/HDR(Dynamic Range Compression/ High-Dynamic Range)宽动态
高动态图像的拍摄出来的结果通常会有,亮部太亮,暗部太暗的问题。DRC是调整图像暗部亮度使之变亮,调整亮部亮度使之变暗,而且保持图像的对比度。
处理原理: 主要是通过tone mapping的方法,将像素值在特别暗的区域拉高,在特别亮的区域拉低。

11、图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间

处理模块: AE(Automatic Exposure Control)----自动曝光

处理原理: 自动曝光的实现一般包括三个步骤:
1)光强测量。光强测量的过程是利用图像的曝光信息来获得当前光照信息的过程。可以统计图像的全部像素,也可以统计图像中间部分、也可以将图像分成不同部分且每部分赋予不同权重。
2)场景分析。场景分析是指为了获得当前光照的特殊情况而进行的处理,比如有没有背光照射或者正面强光等场景下。对这些信息的分析,可以提升图像传感器的易用性,并且能大幅度提高图像的质量,这是自动曝光中最为关键的技术。目前常用的场景分析的技术主要有模糊逻辑和人工神经网络算法。这些算法比起固定分区测光算法具有更高的可靠性,主要是因为在模糊规则制定或者神经网络的训练过程中已经考虑了各种不同光照条件。
3)曝光补偿。在完成了光强测量和场景分析之后,就要控制相应的参数使得曝光调节生效。主要是通过设定曝光时间和曝光增益来实现的。

12、镜头需要调节焦距才能避免光学成像模糊

处理模块: AF (Auto Focus) ---- 自动对焦

处理原理: AF算法的基本步骤是先判断图像的模糊程度,通过合适的模糊度评价函数求得采集的每一副图像的评价值, 然后通过搜索算法得到一系列评价值的峰值, 最后通过电机驱动将采集设备调节到峰值所在的位置, 得到最清晰的图像。
对焦评价函数
评价函数有很多种, 主要考虑的图像因素有图像频率(清晰的图像纹理多, 高频分布较多), 还有图像的灰度分量的分布(图像对应的灰度图的分量分布范围越大,说明图像的细节较多, 反应的图像的清晰程度)
常用的搜索算法有爬山算法, 搜索窗口有黄金分割点对焦嵌套窗口等。

13、镜片的表面反射或镜筒、反光镜组的内面所引起的反射光,到达底面后造成画面整体或一部份产生了雾蒙

处理模块: Flare offset:光学上称Flare也叫stray light,耀斑补偿

处理原理: 镜片的镀膜及内面防反射处理的加强,固然可以大幅度地减少光斑,但被摄体的状况并不相同,不可能完全消除。因此,在相机里面设计都是黑色的,且其内侧表明设计都是粗糙的,目前就是为了减小flare。flare如何修正?做直方图,然后每阶的亮度都往下降,这样是否会影响颜色呢?因此,flare一定要是在linear domain去做,不能在RGB domain去做。
在这里插入图片描述

14、画面清晰度不够

处理模块: EE(Edge Enhancement/Edge Sharpening):锐化,边缘增强。

处理原理: 通过滤波器获取图像的高频分量,按照一定的比例将高频部分和原图进行加权求和获取锐化后的图像。
在这里插入图片描述

笔者小结

原始图像会因为镜头和传感器的缺陷、受外界光线的影响,出现图像有色差、模糊等问题,所以需要用ISP进行处理。
通常的流程是先进行黑电平校准BLC(黑电平是在DNP下,将曝光时间和增益都调到最小时拍摄图片的亮度值)——>进行镜头阴影校正LSC(避免出现边缘模糊的情况)——>如果镜头有坏点,需要进行坏点去除,坏点检测BPD,坏点去除BPC——>颜色插值DM——>颜色矫正矩阵——>Gamma校正(使得在暗处的曲线不是线性的)——>降噪NR/锐化EE

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

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

相关文章

西米支付”:在游戏SDK中,提供了哪些支付渠道?SDK的用处?

在游戏SDK中&#xff0c;提供了哪些支付渠道&#xff1f; 常见的支付方式包括支付宝、微信支付、银联支付等。游戏SDK的支付功能可以方便玩家选择不同的支付渠道&#xff0c;以满足他们个性化的支付需求。 流行的支付应用&#xff1a;该应用集成了流行的支付应用支付接口&#…

大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队

一、背景 目前大促备战常见备战工作&#xff1a;专项压测&#xff08;全链路压测、内部压测&#xff09;、灾备演练、降级演练、限流、巡检&#xff08;监控、应用健康度&#xff09;、混沌演练&#xff08;红蓝对抗&#xff09;&#xff0c;如下图所示。随着平台业务越来越复…

AirPods跳转下一首歌的操作方法,“代”数不同,方法也不同

在这么小的包装中&#xff0c;科技含量如此之高&#xff0c;真是令人惊讶。AirPods的神奇之处在于苹果获得专利的H1芯片。除了光学传感器和运动加速度计&#xff0c;它还允许你使用触摸控制来启动、停止或跳过歌曲。继续阅读&#xff0c;了解如何跳转AirPods、AirPods 2、AirPo…

如何将力控与PLC之间有线以太网通讯改无线?

在实际系统中&#xff0c;车间里分布多台PLC&#xff0c;需要用上位机软件集中控制。通常所有设备距离在几十米到上百米不等。用户会选择以太网方式是因为传输速度有保障&#xff0c;而选择无线以太网方案是因为不想开挖电缆沟&#xff0c;或者布线不方便&#xff0c;不但施工麻…

Python 和 Ruby 谁是最好的Web开发语言?

Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 【这个时候又人要说PHP是世界上最好的语言了】 我就不说PHP 最好的方法 VS 以人为本的语言 社区: 稳定与创新 尽管特性和编程哲学是选择一个语言的首要驱动因素&#xff0c…

印刷企业实施MES管理系统需要哪些硬件设施

随着科技的飞速发展&#xff0c;印刷行业正面临着前所未有的挑战和机遇。为了提高生产效率&#xff0c;降低成本&#xff0c;并增强市场竞争力&#xff0c;越来越多的印刷企业开始实施制造执行系统&#xff08;MES&#xff09;管理系统。本文将重点讨论印刷企业在实施MES管理系…

【点云上采样】基于移动最小二乘(MLS)的上采样

文章目录 声明简介代码参考 声明 示例结果比较奇怪&#xff0c;可能是参数没调好&#xff0c;如有问题&#xff0c;望指正&#xff01; 简介 基于MLS&#xff08;Moving Least Squares&#xff09;的上采样是一种常用的点云处理方法&#xff0c;用于增加稀疏点云数据的密度和…

Spark---介绍及安装

一、Spark介绍 1、什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架&#xff0c;Spark拥有Hadoop MapReduce所具有的优点&#xff1b;但…

各类Linux操作系统如何选择?

各类Linux操作系统如何选择&#xff1f; 企业级应用&#xff1a;RHEL/CentOS 桌面平台&#xff1a;Ubuntu 开源服务器&#xff1a;CentOS 1.1 RedHart 1.1.1RHEL RHEL是指Red Hat Enterprise Linux&#xff0c;是由Red Hat公司开发和维护的一款商业Linux操作系统。它是基于…

钩子函数-hook

钩子函数-hook hook 的作用 利用钩子函数可以在所有测试用例执行前做一些预置操作&#xff08;如&#xff1a;准被测试数据、测试环境&#xff09; 或者在测试结束后做一些后置操作&#xff08;如&#xff1a;清理测试数据&#xff09; 钩子函数在其它框架中也有&#xff0…

如何在公网环境下使用内网穿透工具实现用ipad pro进行代码开发

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

特殊文件(Properties属性文件)

一&#xff0c;为啥要学特殊文件 二&#xff0c; 常用方法:读取 三&#xff0c;案例 import java.io.FileReader; import java.util.Properties; import java.util.Set;public class Main {public static void main(String[] args) throws Exception {//1,创建一个键值对对象P…

vim 文件在linux不换行,只显示^M解决办法

训练模型&#xff0c;生成train.log文件&#xff0c;vi 查看&#xff0c;无分行&#xff0c;直接瞎眼。 搜了很久&#xff0c;终于找到解决方案&#xff1a;在vim的命令模式中输入:%s/\r/\r/g这样就好了。

如何解决requests库自动确定认证arded 类型

requests 库是一种非常强大的爬虫工具,可以用于快速构建高效和稳定的网络爬虫程序。对于经常使用爬虫IP用来网站爬虫反爬策略的我来说&#xff0c;下面遇到的问题应当值得我们思考一番。 问题背景 在使用requests库进行网络请求时&#xff0c;有时会遇到需要对目标服务进行认证…

基于Java封装继承多态实现的一个简单图书系统

首先我们大概了解下图书系统的需求 1.要有两种身份 管理员和普通用户。普通用户和管理员分别对应的功能不一样&#xff0c;需要分开实现 2. 图书系统肯定要有图书&#xff0c;和存放图书的地方&#xff0c;存放就用数组来实现 3.实现对应用户的功能 接下来我们第一步&#xf…

【开源】基于JAVA的学生日常行为评分管理系统

项目编号&#xff1a; S 010 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S010&#xff0c;文末获取源码。} 项目编号&#xff1a;S010&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2.1 登录注册模块2.2…

Threejs_07 环境、透明度、纹理、ao、光照等贴图的渲染

老陈打码 继续学习老陈threejs 支持&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 下面用到的所有图片、资源、hdr文件都是老陈打码的原资源 链接&#xff1a;https://pan.baidu.com/s/1WWWHgekCIH7OnjI7S_3ZtQ 提取码&#xff1a;6666 Thre…

最新外链系统强势来袭

1、支持微信短链&#xff08;h5跳转二维码、小程序&#xff09; 2、支持在线短链生成&#xff08;长链接转短链&#xff09; 3、支持活码生成 4、支持抖音卡片&#xff08;抖音跳转微信二维码、小程序&#xff09; 5、支持抖音二维码扫码跳转微信&#xff08;二维码、h5、小程序…

关系数据库理论【数据库系统概论】

1.问题的提出 1.1关系模式的表示 关系模式由五部分组成&#xff0c;是一个五元组:R&#xff08;U&#xff0c;D&#xff0c;DOM&#xff0c;F&#xff09; 元组概念R关系名R是符号化的元组语义。UU为一组属性。比如学号&#xff0c;姓名。DD为属性组U中的属性所来自的域。比…

国学短剧《我是小影星》栏目火热开拍

近日&#xff0c;国学短剧《我是小影星》栏目花絮拍摄&#xff0c;在上海市徐汇区漕溪路595号A座B1层开拍。该节目招募全国各地的有才华&#xff0c;有表现力怀揣梦想的小朋友来参与节目拍摄。节目旨在以中华传统文化为切入点&#xff0c;通过戏剧、歌舞、音乐等多种艺术形式的…