当前位置: 首页 > news >正文

CCM调试的理论依据

前言

很久之前在网上看到一些CCM的调试总结,但是没有理论依据,经过我本人的推理,以及和结果比对,这里总结一个我称之为色相环补色原理的调试理论。

CCM理论:

CMOS sensor 使用颜色滤波阵列(Color Filter Array,CFA)实现对特定波段的光敏感,最常用的CFA是RGGB,因此存在R、G、B三种响应波段。由于技术条件的限制,这三种波段很难做到与人眼的响应特性完全相同,所以对同样颜色的光刺激,sensor输出的RGB信号与人眼感受到的RGB会有些不同,一般是sensor颜色的饱和度偏低。

解决这个问题的方法就是使用一个3x3的CCM矩阵,将颜色从sensor RGB空间变换到人眼的RGB空间,使图像的效果符合人的主观感受。

在这里插入图片描述
这个3x3 的矩阵叫做颜色校正矩阵,英文color correction matrix,简称CCM,其变换公式如下。

在这里插入图片描述
CCM公式的一个基本约束就是不能破坏白平衡,即对于任何R=G=B的输入,必须保证输出满足R’=G’=B’。正是由于
这个原因,颜色校正操作只能放在白平衡调整之后执行。
实践中通常使用X-Rite 24色卡上的18个彩色色块为标准计算校正系数,基本原理是用摄像机拍摄色卡,提取18个
色块的平均颜色(Rn, Gn, Bn),n=1…18 构成输入矩阵
在这里插入图片描述
则有关于CCM的矩阵方程
在这里插入图片描述
则有关于CCM的矩阵方程

在这里插入图片描述上述过程需要使用某种色卡,因此称为patch-based方法。在这里插入图片描述

以上理论来源于:https://www.zhihu.com/column/sining

CCM色彩调试总结:

为了保证宝平衡不被破坏,需满足:RR + GR + BR = 1 ,
RR GG BB对应R,G,B饱和度。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
以上理论来源于:
网友1
网友2

那他们的这个总结理论依据是什么呢?没说,只是调试总结的经验而已。

下面我来推理下,以下是本篇文章重点。

色相环补色理论:

根据色相环的排布:RGB的补色是CMY如下图:
在这里插入图片描述
那这个跟我们调试CCM有什么关系呢?

举个例子:现在是黄偏红

在这里插入图片描述
在色相环上用Y指向R代表黄偏红(黑色箭头)
此时如果需要矫正,则需要减弱这个箭头。
这个时候可以构造B指向R的箭头(红色),B指向G的箭头(绿色)
加强这个红色,+Br(和黑色箭头对抗抵消),减弱绿色-Bg(同向减弱黑色)从而达到我们矫正的目的。

对比一下前人总结的经验,是对的上的
其他结论也都对的上其他结论也都对的上

开头说了横轴相加等于1,BR+了,RR不变,GR要-,才能维持平衡,其他行也是一样

在这里插入图片描述

因为CCM只有RGB三种颜色,所以都是针对RGB来构造箭头的。
如果RGB偏色,则直接对RGB构造箭头,如果是CMY则对他的补色(RGB)构造箭头。该理论对于上表总结均适用。

相关文章:

  • libvirt零知识学习4 —— libvirt源码编译安装(2)
  • leetcode每日一题:1005. K 次取反后最大化的数组和
  • this\super\statis\abstract关键字作用
  • Spring Boot 3.0系列【22】应用篇之嵌入式 Servlet 容器
  • 位置编码Positional Encoding
  • 【XXL-JOB】XXL-JOB定时处理视频转码
  • 二、ModBus协议解析
  • AI绘画关键词网站推荐 :轻松获取百万个提示词!完全免费
  • Mybatis中使用in()查询
  • 关于笔记本电脑插上网线没反应的解决方案
  • 第16天-性能压测:压力测试,性能监控,优化QPS,Nginx动静分离
  • selenium + python自动化测试环境搭建
  • 金融监管科技业务中的AI应用:上市公司公告信息风险识别
  • Mac 安装Maven的几种方法和操作步骤
  • 超薄网络变压器(百兆千兆万兆)如何选型?及相关产品集成功能分类
  • 分享的文章《人生如棋》
  • .pyc 想到的一些问题
  • 30秒的PHP代码片段(1)数组 - Array
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • C++11: atomic 头文件
  • const let
  • css的样式优先级
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ES学习笔记(12)--Symbol
  • golang中接口赋值与方法集
  • React as a UI Runtime(五、列表)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给Prometheus造假数据的方法
  • 猴子数据域名防封接口降低小说被封的风险
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 使用agvtool更改app version/build
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数组大概知多少
  • 为什么要用IPython/Jupyter?
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # Java NIO(一)FileChannel
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • $.proxy和$.extend
  • (7)STL算法之交换赋值
  • (C#)一个最简单的链表类
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET企业级应用架构设计系列之结尾篇
  • .net中生成excel后调整宽度
  • /etc/sudoer文件配置简析
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C#] 如何调用Python脚本程序