关于图像客观指标的调试总结

1、问题背景

工作中经常有调试图像客观指标的需求,很容易遇到我们自己的环境测试是过的,

但客户那边的环境就是测不过,这时候该怎么办呢?

2、问题分析

首先要改变以往的工作思路,在调试的过程中不能说指标过了就完了,而是需要思考:

1)这些指标和什么有关系,受什么的影响?

2)客户那边测不过的话,可以有哪些应对措施?

3)调试过程中我能怎么尽可能的去规避,由于环境差异导致的指标不过问题。

以我遇到的一个具体问题为例:

我司有两个灯箱,一个是LED光源的立式灯箱,一个标准荧光灯箱,如下图所示:

图片

设置的同样的色温和照度,拍出来的24色卡图,存在肉眼可见的差异(LED灯箱下拍摄的图卡更鲜艳,亮度更高),如下图所示;

图片

以下是imatest的分析结果:

图片

1)这些指标和什么有关系,受什么的影响?

从测得的指标结果来看,ΔC00 chroma.corr 的指标差异较小,

而ΔC00 chroma.corr、 ΔE00、Mean camera chroma差异比较大,这是为什么呢?

图片

首先要搞清楚如上指标的含义及计算方式,如下是从从imatest官网总结的关于色差指标的含义及计算公式:

CIE2000

3种色差计算标准,后两种标准(CIE1994、CIE2000)计算更准确,反映了人眼对高饱和度,颜色变化的敏感性降低。因此它们通常测的值较低

Mean Camera chroma

1. 表示24个色块的平均饱和度值;

2. 单个色块 i 的饱和度就是它到原点的距离:

图片

3. 平均饱和度计算公式是相机颜色的平均饱和度除以理想色块颜色的平均饱和度,用百分数表示,i_meas 表示色块 i 测量值,i_ideal表示理想值;

图片

ΔC00 chroma.corr 

1. 颜色误差,即各个色块的测量值与理想值之间的距离;

2. mean是所有24个色块颜色偏差值的均值,max是24个色块颜色偏差值中的最大值;

3. 计算时,忽略亮度 L*,

4. 计算时,校正平均饱和度, 是通过将 a*、b* 和 C* 乘以 100%/(平均饱和度)来完成的。校正后的值(用 i_corr 表示)将替换为 ΔC 计算中的测量值。

图片

注:这是一个非标准的测量,它已被淡化,将来可能会被删除;

ΔC00 uncorr

1. 颜色误差,即各个色块的测量值与理想值之间的距离;

2. mean是所有24个色块颜色偏差值的均值,max是24个色块颜色偏差值中的最大值;

3. 计算时,忽略亮度 L*,不校正平均饱和度;

图片

注:这是标准的ΔCxx测量值;

ΔE00

1. 颜色误差,即各个色块的测量值与理想值之间的距离;

2. mean是所有24个色块颜色偏差值的均值,max是24个色块颜色偏差值中的最大值;

3. 包含亮度的计算,未校正饱和度;

图片

注意:如上ΔC,ΔE 的计算公式是基于CIE1976的标准,CIE1994和CIE2000的计算公式是不同的,但有些复杂,

可以基于CIE1976的公式来理解关于色差的计算,具体可以看imatest官网中的描述: 

https://www.imatest.com/docs/colortone_ref/#colorerr

接着再来看问题,

ΔC00 chroma.corr 的指标值差异很小,是因为它的计算是忽略了亮度,及校正了平均饱和度, 这种归一化消除了饱和度提升的影响,从而降低了平均颜色误差 ;

ΔC00 chroma.uncorr 差异较大是因为未校正饱和度;

ΔE00 差异较大是因为未校正饱和度,且计算包含了亮度;

Mean camera chroma 差异比较大,是因为色块的测量值与理想值的偏差太大,也就是ΔC00 chroma.uncorr 差异较大,实际也是和亮度相关的。

那是什么导致的两个灯箱,拍摄出的色卡亮度存在差异呢?

实际观察灯箱发现,两个灯箱的补光方式其实不一致,标准荧光灯箱光管是安装在灯箱顶上,光线是带角度的斜射到色卡上,

而且下半部分距离光源越远,光照相较上半部分就越弱,所以色卡上下表面的光照强度是不均匀的,且反射进摄像头的光线也偏少,所以拍摄出的图片也偏暗。

而LED灯箱的光源则是左右两边斜45°角直接照射到色卡上,且上下左右是全覆盖的,色卡表面的亮度均匀性更好,亮度也更高。

所以导致差异的原因,就是两个灯箱的补光方式不同所造成的。当然也有LED灯和荧光灯光源不同,其显色指数不同,导致的颜色偏差。

之前很多时候和客户解释,就说两个灯箱不一样,环境不一样,光照条件不一样,所以测出来的指标就不一样,

怎么解决呢?也没办法,要远程基于客户的环境重新去调试。这其实是不合理的,有点糊弄客户,也糊弄自己。

2)客户那边测不过的话,可以有哪些应对措施呢?

首先还是要先确认环境,用的什么类型的光源、补光位置在哪里、色卡的位置是怎么摆放的、摄像头的位置是怎么摆放的,

如果和我上述例子类似是补光位置的差异,那就给客户解释清楚是什么原因,要怎么去调整,可以把图卡忘上移动一下看看,

类似的也有遇到用OECF-20的图卡,测试灰阶,由于图卡两边的照度差异200lux左右,结果就是测不过,亮度调整成一致后,就可以测过了。

图片

如果是所使用的光源不一样,光源的显色指数差异太大,那就没啥办法了,要基于该光源重新调测一下。

3)调试过程中要怎么尽可能的去规避,由于环境差异导致的指标不过问题。

首先调测过程中,要严格去按测试标准去设定色温,照度,保证调测环境的色温一致,照度一致,所拍图卡的亮度均匀。

关于如何正确测量场景的照度和色温,可以看这篇:如何测量场景的照度和色温?

其次要了解所用到的光源环境,具体是什么类型光源,色温多少,显色指数是多少,光谱分布是怎样的。

关于如何区分不同种类的光源,可以看这篇:如何区分不同类型的光源

接着调试过程中,调测出的参数,不要把指标卡在临界值,比如色彩的饱和度指标要求是110-130,

最好是可以调到120,可以让参数的适应性更好一点。

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

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

相关文章

VulkanTutorial(14·descriptor,uniform buffer)

Uniform buffers Descriptor layout and buffer 我们将继续学习3D图形,这需要一个模型-视图-投影矩阵,因此我们要更改向vertex shader传输的数据,也就是通过vertex buffer 但是当实时渲染,每一帧这些数据都有可能变化&#xff0…

Kafka存储机制大揭秘:从日志结构到清理策略的全面解析

文章目录 一、前言二、日志存储结构1.日志文件结构2.topic3.partition4.segment索引文件5.message结构6.message查找过程 三、存储策略1.顺序写2.页缓存3.零拷贝4.缓存机制 四、日志格式演变1.V0 版本2.V1 版本3.V0/V1消息集合4.V2 版本消息格式5.V2版本消息集合 五、偏移量维护…

基于OSS搭建在线教育视频课程分享网站

OSS对象存储服务是海量、安全、低成本、高持久的存储服务。适合于存储大规模非结构化数据,如图片、视频、备份文件和容器/虚拟机镜像等。 安装nginx wget https://nginx.org/download/nginx-1.20.2.tar.gz yum -y install zlib zlib-devel gcc-c pcre-devel open…

HCIA笔记整合

第一部分: OSI七层模型 应用层:人机交互 抽象语言--------编码 表示层:编码------二进制 会话层:提供会话号 传输层:TCP/UDP 分段(收到MTU值的限制) MTU:最大传输单元&#xff…

如何选择到印尼的海运代理

如何选择到印尼的海运代理 选择合适的海运代理的重要性 海运代理负责安排货物从发货地到目的地的整个运输过程,包括装运、清关、仓储等服务。一个可靠的海运代理能确保货物安全准时到达,并帮助企业节省时间和成本。 选择海运代理需考虑的主要因素 公司…

RK3588的QT交叉编译环境搭建

主要参考为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版_rk3568交叉编译-CSDN博客 先说一下,使用的Ubuntu20.04.5版本,qt源码用的5.14.2版本,交叉编译器使用RK3588…

【Linux】一些Shell脚本编程基础题

目录 一、比较两个数的大小 二、求1-100的素数和 三、编写shell脚本,输入一个数字n并计算1~n的和,同时要求如果输入的数字小于1,则重新输入,直到输入正确的数字为止。 四、编写一个shell脚本用来进行成绩等级评定,…

数据的表现形式(2)

汉字字形码 字形码也叫字模或汉字输出码。字形码是表示汉字字型信息的编码,用来实现计 算机对汉字的输出 如一个16*16点阵的字形码就需要16*16/8个字节的存储空间 二进制的运算 在定点二进制运算中,减法运算一般通过【补码运算的二进制加法器】 进制三要…

Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143388189 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Ground…

深度学习基础—语言模型和序列生成

引言 深度学习基础—循环神经网络(RNN)https://blog.csdn.net/sniper_fandc/article/details/143417972?fromshareblogdetail&sharetypeblogdetail&sharerId143417972&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 上…

leetcode-3-无重复字符的最长子串

题解: 1、初始化一个字典dic_hash{}。 2、初始化左指针i-1,右指针j为s的索引。 #3、初始化变量res1用3 2Q#来 |} 】、 代码:

readhat虚拟机基本操作

1.用cat显示/etc/passwd,并显示行号 2.在当前目录下创建空文件夹/web/test1 3.查看当前工作目录的命令 4.显示环境变量$PATH 5. 查看/tmp/目录的使用空间 6. 删除空目录old 要删除old,要先建立old目录---mkdir old,然后ls查看是否建立成功,再…

Java面试经典 150 题.P80. 删除有序数组中的重复项 II(004)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums)…

基尼指数(Gini Impurity)的理解和计算

基尼不纯度简介 - Gini Impurity - 吕汉鸿 - 博客园 先看上面这个博文!!!然后再看下面的,下面这个原博文有一点问题。已修正,修正后的完整内容如下 一、基尼指数的概念 基尼指数(Gini不纯度)…

《股市行情预测软件:开发之路的探索与挑战》

《股市行情预测软件:开发之路的探索与挑战》 一、股市行情预测软件的重要性二、开发所需技术(一)数据收集与处理技术(二)数据分析技术(三)算法选择与应用(四)编程语言与开…

整合全文检索引擎 Lucene 添加站内搜索子模块

整合全文检索引擎 Lucene: 添加站内搜索子模块 1. 什么是 Lucene ? 有啥优势? Lucene 是一个开源的全文检索引擎库,由 Apache 基金会维护,官网地址:https://lucene.apache.org/ 。它提供了丰富的文本处理和搜索功能&#xff0c…

OceanBase详解及如何通过MySQL的lib库进行连接

OceanBase详解及如何通过MySQL的lib库进行连接 一、引言二、OceanBase概述1. 起源与发展2. 核心技术特点3. 应用场景三、OceanBase架构解析1. 系统架构2. 存储引擎3. 分布式架构四、如何使用MySQL的lib库连接OceanBase1. 前提条件2. 安装MySQL Connector/C3. 编写连接代码4. 编…

104. UE5 GAS RPG 实现技能火焰爆炸

这一篇文章我们再实现一个技能火焰爆炸,由于我们之前已经实现了三个玩家技能,这一个技能有一些总结的味道,对于创建技能相同的部分,长话短说,我们过一遍。 准备工作 我们需要一个技能类,继承于伤害技能基…

【力扣打卡系列】验证二叉搜索树

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day17 验证二叉搜索树 题目描述 解题思路 前序遍历:先访问节点值,再访问左右子树有效二叉搜索树的定义 节点的左子树只包含小于当前节点的数节点的右子树只包含大于当前节…

Swarm-LIO: Decentralized Swarm LiDAR-inertial Odometry论文翻译

文章目录 前言一、介绍二、相关工作三、方法A. 问题表述B. 框架概述C. 群体系统的初始化D. 去中心化激光雷达-惯性状态估计 四. 实验A. 室内飞行B. 退化环境飞行C. 去中心化部署 五. 结论和未来工作 前言 原文:原文 准确的自我状态和相对状态估计是完成群体任务的关…