camera测试之颜色还原
测试目的:camera对色彩的还原能力
测试主要设备:24色色卡,灯箱
测试环境:1.D65/CW/A光源,照度为600±100lux,整个chart表面的亮度值相差小于10%
2.D65光源,照度为20lux,整个chart的表面的亮度相差小于15%
测试注意事项:24色卡位于预览画面的中心,大小占整个画面的70%
测试原理:
在硬件电子系统中,也就是我们的摄像头,屏幕中,是使用RGB颜色模型来表示的。但是RGB颜色模型中颜色发生变化过程和人眼对颜色的感应过程不一致。简单来说,对RGB颜色模型来说,假设是8bit的颜色深度,当R颜色通道从0增大到10和从240增大到250,其实对于R颜色通道来说,它们的增量大小是一样的。但是对于人眼来说,从当R颜色通道从0增大到10时,人眼能明显看到他们的变化,但是当R颜色通道从240增大到250时,人眼基本上看不出颜色的变化。所以RGB颜色模型不适合用于色彩还原的测试。
先简单介绍一下CIELAB颜色模型,CIELAB颜色模型表示为(L*,a*,b*),L*用于表示明亮度(Luminance),也是是黑色到白色的变化的位置,范围0~100。a*和b*表示颜色的变化,a*为绿色(green)到紫红色(magenta)间的变化,b*表示蓝色(blue)到黄色(yellow)间的变化,范围额-128到+127。3D图如下图所示,其中距离圆心越进饱和度越低。

对于CIELAB颜色模型,当a*从0变化到10和从100变化到110时,人眼能够感觉到一样的颜色变化。也就是说CIELAB的L*,a*,b*的变化量一样,则人眼感受到的颜色变化是一样的。
上面所说的就是CIELAB颜色模型具有视觉上的均匀性(perceptually uniform),所以使用CIELAB颜色模型用于camera颜色还原的测试。
RGB颜色模型转CIELAB颜色模型过程:首先先将RGB颜色模型转成CIEXYZ颜色模型,然后CIEXYZ颜色模型再转换成CIELAB颜色模型。具体转换公式如下:
RGB >> CIEXYZ

CIEXYZ >> CIELAB

其中X n ,Y n ,Z n一般默認是95.047,100.0,108.883。
下一步基于CIELAB颜色模型计算颜色误差和颜色的饱和度(saturation),如下图所示:

用ΔC,ΔE表示色彩正确度误差,如上图所示,左图表示CIELAB颜色模型,右图表示CIELAB颜色模型的一个切面圆。ΔC就是平面圆上两个点的距离。ΔE计算色度差(C)外,还加入明度差。也就是说ΔE表示空间上两个点的距离。一般而言ΔC,ΔE值越小表示越接近真实颜色SRGB,也表示摄像模组的颜色误差越小,颜色越好。ΔC,ΔE计算公式如下:

另外一个测量量就是颜色的饱和度,饱和度指色彩的纯洁性,也叫饱和度或彩度。简单来说,就是颜色越接近黑色或者白色,则饱和度越低。对应到上图的切面圆来说,越靠近圆心则饱和度越低,越靠近圆环饱和度月高。饱和度计算公式如下:

判断标准:

camera测试之颜色还原的更多相关文章
- Camera测试之Color & Lens shading Test
测试目的:测试摄像头成像的均匀性 测试主要设备:均匀光源(DNP灯箱),色温照度计 测试环境:将灯箱光源调至600±100lux 测试注意事项:保证均匀的光源 测试原理: 造成摄像头成像不均匀的原因有 ...
- camera测试之MTF
1.MTF介绍 MTF(Modulation Transfer Function)模量传递函数.MTF是camera成像对比度和分辨率的综合表现.从另一个角度来看,camera成像过程可以简单看成下图 ...
- Camera光学、成像和 3A 算法 (视觉),camera开发
简单介绍 转载:https://blog.csdn.net/ShareUs/article/details/94295628 成像与光学.计算机视觉,图像处理,数字成像.自动驾驶与视觉. 镜头设计:人 ...
- Camera噪声问题
Camera噪声问题 Camera RGB 域的噪声 以上部分属于sensor processing,接下来的部分属于color.luminance processing. gamma gamma是在 ...
- gridView RowDataBound事件 鼠标经过行颜色变化及根据字段值显示指定内容
protected void gvBarInfo_RowDataBound(object sender, GridViewRowEventArgs e) { if ...
- Asp.Net中GridView加入鼠标滑过的高亮效果和单击行颜色改变
转载自:http://www.cnblogs.com/fly_dragon/archive/2010/09/03/1817252.html protected void GridView1_RowDa ...
- three.js使用gpu选取物体并计算交点位置
光线投射法 使用three.js自带的光线投射器(Raycaster)选取物体非常简单,代码如下所示: var raycaster = new THREE.Raycaster(); var mouse ...
- three.js中的事件
以上一篇入门篇为例来简单的设置下3d模型当中的交互事件,上一篇我们已经完成了在3d页面中添加了一个红色球,下面我们给这个球一个点击事件让它Y轴位置上升,再设置一个鼠标移入到球上时让其变色. 1.其实t ...
- angularjs和ajax的结合使用 (一)
好久没写文了.这是一篇关于easyui配合ajax使用 的文章, 顺带介绍angularjs的使用 以及让你感受到angularjs的威力.网上对于ajax 的文也是多如牛毛 .我就不直接 从那种原生 ...
随机推荐
- winform窗体退出
winform主窗体退出需要在FormClosing事件里写入程序退出代码,防止程序明明退出了,而程序进程还没杀掉: private void FormMain_FormClosing(object ...
- ARM指令学习
跳转指令 直接向程序计数器PC写入i跳转地址值,可以实现在4GB的地址空间中的任意跳转. ARM跳转指令可以完成向前或向后的32MB的地址空间的跳转. -B 跳转指令 -BL 带返回的跳转指令 -BL ...
- day_6深浅拷贝,元组字典集合类型定义和各种操作方法
首先我们来讲一下深浅拷贝 1:值拷贝,假设一个列表等于L1 再定义一个L2=L1 这样就是值拷贝 L2只是存的L1存列表的地址,所以当L1发生改变,L2也随之改变 2:浅拷贝,L2=L1.copy( ...
- 简单操作django中session和cookie
cookie 1.会话技术 2.客户端的会话技术( 数据库保存在浏览器上) 3.问题导致原因: 在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没 ...
- 深入理解JVM(二)——内存模型、可见性、指令重排序
上一篇我们介绍了JVM的基本运行流程以及内存结构,对JVM有了初步的认识,这篇文章我们将根据JVM的内存模型探索java当中变量的可见性以及不同的java指令在并发时可能发生的指令重排序的情况. 内存 ...
- Dubbo 源码分析 - SPI 机制
1.简介 SPI 全称为 Service Provider Interface,是 Java 提供的一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加 ...
- weexpack打包weex项目运行/打包记录
构建weex项目 安装weex-toolkit cnpm install -g weex-toolkit 初始化一个项目只需新建文件夹并在目录下执行 weex init 即可 安装依赖:cnpm in ...
- Android Studio升级3.2.1后的合并XML出错的解决方案
升级到3.2.1版本之后,遇到了合并XML出错的问题.错误内容大概如下: 当大家看到这个问题的时候,可能会有一行是可以点击的文件目录,点击到报错的地方. 如果没有可以点击的地方,也可以根据目录和 “行 ...
- 基于nodemailer使用阿里云企业邮箱发送邮件(526错误的解决)
在虽然日常生活中,QQ,微信等即时聊天工具几乎主导了人们的生活,但是邮件依然是现代生活不可缺少的一部分.这篇文章主要讲述使用node.js 中的nodemail模块操作阿里云的企业邮箱发送邮件 (52 ...
- 本地语音识别开源软件pocketsphinx调试总结
1问题一: fatal error: pocketsphinx.h: No such file or directory 解决方法: $ cd /usr/include $ sudo ln -s /m ...