关于图像亮度相关的调试总结

news2024/9/21 20:44:43

1、问题背景

关于图像亮度的调试,是整个ISP中非常重要的一块,它决定了图像整体的亮度、对比度、细节、以及噪声,对人眼有非常直观的感受,

之前也就具体问题,整理过几篇图像亮度模块相关的调试总结: 

关于图像对比度的概念和计算

关于在逆光场景下,AE调试的相关总结

此篇是较系统的整理记录一下,关于ISP亮度模块的调试方法及经验总结。

2、问题分析

1)先确认ISP Pipeline中有哪些和亮度相关的模块,其处理顺序和具体作用是怎样的,

如下图是海思Hi3519AV100的 ISP Pipeline,其中主要和亮度相关的模块有:AE、LSC、PreGamma、DRC、Gamma、Dehaze、LDCI.

图片

其中LSC,preGamma应该是calibration出来的,一般不会做调整,Dehaze(去雾)默认开的也不多可能,

常用于调整亮度/对比度的模块,按处理顺序应当是:AE--->DRC(动态范围压缩)--->Gamma--->LDCI(局部对比度增强);

调试时,要先调整AE,确定合适的曝光值后,再去调整其他亮度模块。调试AE时,要先bypass 其他影响亮度的模块(AE、DRC、Gamma、LDCI),再去调整ae target.

那要如何保证ae target设置的合适呢?

可在固定光源下去拍摄24色卡,测试24色卡的22色块(因为是18%灰)亮度,若达到122,则代表此时曝光合适。

要注意的是,固定光源最好是左右两侧45度角的均匀光照,否则可能会容易过曝。用过光源在顶部的灯箱,去调试ae target,调试出来的曝光值,实景测试是过曝的。

待ae target确定完以后,再去调整ISP Pipeline后面的亮度模块,注意也是先bypass后面的模块,比如调试DRC时,要先bypass gamma和LDCI,另外调试时也要注意先整体再局部。

注:海思的ISP没调过,但流程应该都是通用的,理解有误的地方,欢迎留言指正。

2)结合直方图去判断画面整体的一个亮度分布,然后有目的去做调整;

图片

a. 我们调试亮度模块的目的,主要是为了使画面更通透,明暗富有层次。

以常用的8位精度图像为例,直方图的X轴为0~255,共256个桶,每个桶分别代表像素值依次从0~255,直方图的Y轴表示每个桶盛纳了多少个像素。

调试过程中,我们首先需要通过直方图关注图像暗调、高光处的像素分布。

一般 isp中, 都会开放出一条控制全局亮度/对比的曲线用于调试,为了提高图像对比度,使得画面更通透,我们通常会把暗部拉低,亮部提亮,调整成S曲线的形式。

此时就需要拍图,通过直方图分析图像暗调和高光的位置,如果此区域所占像素很多,那说明目前暗调已经变成死黑,高光处也过曝了,也就是没有有效信息了。

但其实,用人眼来评判的话,很多真实场景下的暗调,高光处,都是有层次有数据的。

所以对于暗调和高光处,我们调试的原则是要在尽可能不损失信息的情况下去增加对比度,这样才有意义。

b. 暗调和高光的差异,决定了画面全局的对比度,另外还要关注图像的局部对比度才可以,

如下图两幅图所示,它的全局对比度是一样的,也就是图像中最暗和最亮部分亮度比相同。

但很明显右图看着要通透明亮许多,这里是因为局部对比度差异导致的。

图片

所以调整完暗调和高光处的区域后,接着就需要调整图像中阴影、中间调、亮调的部分,图像进一步的微调就在于此了,通过将不同区域的像素区分开,这样就能保证图像的层次感,通透度了。

这里就需要考察我们的眼力了,哪些区域增加反差,可以体现画面的层次感,找到后,再调整其作用的对比度强度加以区分即可。

区分开后,也可以适当增加一点点曝光,这样可以提高整体画面的亮度,会使得画面更通透,层次更分明,但这不会影响到之前已经区分开的阴影、中间调、和亮调的部分。

如下图所示,调整前后,图像中的边界区域更立体,分界更明显,光影效果也更明显了,画面体现出来就更真实了。

图片

图片

图片

3)低照度情况下,可以通过适当降低亮度来掩盖、或者减弱噪声,

ISP中LSC、DRC、Gamma、LDCI提高图像亮度话,其实都是在图像上叠加数字增益,这样就会使得低照度下,或者图像暗部噪声变明显,

所以我们调试时,才需要说按照亮度模块的处理顺序,依次去调节亮度参数,使得尽可能少的使用数字增益来达到目标亮度,这样可以有效的控制噪声,如此就能展现出更多的暗部细节。

4)调试亮度模块也会带来一些其他的问题,

a. 亮度和对比度的调整有时会影响图像的饱和度,亮度的增加可能会导致颜色看起来更淡,而对比度的增加可能会使颜色看起来更鲜艳。

所以调整完亮度模块后,要再接着调测当前的色彩效果,看是否符合需要。

b. 另外亮度和对比度的调整,除了会使得画面更通透外,可能也会导致图像高亮处过曝,

如下图所示,是之前客户反馈的图像过曝问题,说电源适配器那里过曝了,看不见字,是不可接受的。

图片

对于此类问题,首先得看下是哪个模块导致的,可以按ISP Pipeline,从后往前去依次 bypass 各个亮度模块,

依次 bypsss LDCI、Gamma、DRC、AE 确认,排查是否是哪个模块的调试参数有问题,重新去调整优化。

或者本来就是属于权衡的问题,是为了使画面更通透,AE target设的过大,或者对比度强度过大导致,那此时就得看具体产品的使用场景,及拍摄主体是什么了,

如果过曝不影响主体的识别,我觉得问题是不大的,可以和客户去确认沟通。

上周群里有群友贴了张海康设备的图(如下图),发现对着室外天空过曝的厉害,但天空有什么呢?拍摄主体也不是天空,其实曝就曝点呗。

图片

3、问题总结

在调试图像亮度的过程当中,需注意如下几点,

1)先确认ISP Pipeline中有哪些影响图像亮度、对比度的模块,需要按照Pipeline的顺序依次去做调优;

2)明确调试目的,调试过程当中结合直方图去判断画面整体的一个亮度分布,然后有目的去做调整;

3)低照度情况下,可以通过适当降低亮度来掩盖、或者减弱噪声,展现更多的暗部细节;

4)要注意到调试亮度模块,所带来一些其他的问题,如颜色饱和的差异,过曝问题的处理;

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

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

相关文章

标题中有多少个字符(c语言)

1.//描述 //凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? //注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。 //输入描述: //输入文件只有一…

【12】KMP和Manacher算法

目录 一.KMP算法解决的问题 二.Manacher算法解决的问题 基本概念 优化 一.KMP算法解决的问题 暴力求解复杂度O(N*M) next数组:next[i]表示arr[0...i-1]的前缀和后缀的最长公共长度。 Y位置失败,将前缀和后缀完全匹配,将前缀的部分和后缀对…

软件测试---接口自动化

一、pythonrequests模块 (1)requests全局观 安装:pip install requests 1.发送请求 ①requests.get() 发送get请求 ②requests.post() 发送post请求 data和json的区别:取绝于你需要传递的参数的类型。 files:文件上…

大学成长之路:如何从烧锅炉的逆袭成为FPGA大厂高管

如何从烧锅炉的逆袭成为FPGA大厂Sales Director 在即将到来的开学季,很多学子从高中生成为一个大学生,走入新的征程。大学生涯是人生的一个非常重要的阶段,如何度过大学4年的时光,并学有所成,是很多大学新生和家长思考…

Spring IoCDI(下)—DI的尾声

我们之前学习了控制反转IoC,接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程,是指IoC容器在创建Bean时,去提供运行时所依赖的资源,而资源指的就是对象。我们使用 Autowired 注解,完成依赖注入的操作。简单来说…

AMBA-CHI协议详解(六)

AMBA-CHI协议详解(一) AMBA-CHI协议详解(二) AMBA-CHI协议详解(三) AMBA-CHI协议详解(四) AMBA-CHI协议详解(五) AMBA-CHI协议详解(六&#xff09…

JavaSocket编程+JDBC实战技术

一、JavaSocket编程 1.1HTTP协议 后端原理 2. 特点 同步:就是两个任务执行的过程中,其中一个任务要等另一个任务完成某各阶段性工作才能继续执行,如厨师A炒番茄,将葱花放入锅中,然后需要放入番茄,但是厨…

【自动驾驶】控制算法(二)三大坐标系与车辆运动学模型

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

Dubbo服务自动Web化之路

本文字数:6047字 预计阅读时间:40分钟 01 故障出现 事情起源于一次故障,2023年12月14日14点26分,大量Dubbo服务报出异常,无法链接zookeeper集群: Session 0x0 for server dubboZk.xxx.com/10.x.x.x:2181, C…

【高校科研前沿】南方科技大学冯炼教授等人在遥感顶刊RSE发文:全球人类改造的基塘系统制图

1.文章简介 论文名称:Global mapping of human-transformed dike-pond systems(全球人类改造的基塘系统制图) 第一作者及单位:Yang Xu(南方科技大学环境学院) 第一通讯作者及单位:冯炼&#x…

机器学习:线性回归算法(一元和多元回归代码)

1、线性回归 1、数据准备: 描述如何获取和准备数据。 2、图像预处理: 包括图像读取。 3、将数据划分为训练集和测试集。 4、计算数据的相关系数矩阵。 5、模型训练: 详细说明如何使用线性回归算法训练模型&…

京东2025届秋招 算法开发工程师 第2批笔试

目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间:2024/08/17 🔄 输入输出:ACM格式 ⏳ 时长:2h 本试卷还有选择题部分,但这部分比较简单就不再展示。 1. 第一题 村子里有一些桩子,从左到右高度依次为 1 , 1 2…

达梦数据库的系统视图v$reserved_words

达梦数据库的系统视图v$reserved_words 达梦数据库(DM Database)提供了一系列系统视图以帮助管理员和开发人员了解数据库的状态和配置。V$RESERVED_WORDS 是其中一个系统视图,它显示了数据库系统中已保留的关键字。这些关键字在SQL语句中具有…

SpringBoot自动配置--原理探究

什么是自动配置? SpringBoot自动配置是指在SpringBoot应用启动时,可以把一些配置类自动注入到Spring的IOC容器中,项目运行时可以直接使用这些配置类的属性。简单来说就是用注解来对一些常规的配置做默认配置,简化xml配置内容&…

【三维目标检测】H3DNet(三)

【版权声明】本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。 参考书籍:《人工智能点云处理及深度学习算法》 H3DNet数据和源码配置调试过程以及主干网络介绍请参考上一篇博文:【三维目标检测】H3DNet&am…

[Java]面向对象-内部类

类的五大成员:属性、方法、构造方法、代码块、内部类 内部类 在一个类里边再定义一个类。可以在外部其他类中创建内部类对象并调用它的方法 public class Outer {//外部类public class inner{//内部类} } 内部类使用时机: 内部类表示的事物是外部类…

打造高可用集群的基石:深度解析Keepalived实践与优化

高可用集群 集群类型 集群类型主要分为负载均衡集群(LB)、高可用集群(HA)和高性能计算集群(HPC)三大类。每种集群类型都有其特定的应用场景和优势。 1. 负载均衡集群(LB) 负载均衡集…

drawio的问题

drawio的问题 先给出drawio的链接https://app.diagrams.net/ 我在用overleaf写论文的过程中,发现了一个问题,就是使用drawio画好图之后,只能保存以下几个选项: 但是不管是什么类型,在overleaf上面图片都不显示。如果…

SpringBoot如何做自动配置

目录 一、什么是springboot的自动配置? 二、Enable注解 三、springboot自动配置流程 ComponentScan SpringBootConfiguration EnableAutoConfiguration注解 condition的几个注解: 四、自定义启动类 需求: 参考: 实现步…

使用JQUERY请求数据出现500报错

我在写项目的时候遇到了一个问题,就是在存商品id的时候我将它使用了JSON.stringify的格式转换了!!!于是便爆出了500这个错误!!! 我将JSON.stringify的格式去除之后,它就正常显示了&a…