计算摄像技术02 - 颜色空间

news2024/11/19 15:37:51

一些计算摄像技术知识内容的整理:颜色视觉与感知特性、颜色空间和基于彩色滤镜阵列的彩色感知。

文章目录

一、颜色视觉与感知特性

(1)色调

(2)饱和度

(3)明度

二、颜色空间

(1)RGB 颜色空间

(2)HSV 颜色空间

(3)YCbCr 颜色空间

① RGB444

② RGB422

③ RGB411

④ RGB420

(4)CMY 颜色空间

三、基于彩色滤镜阵列的彩色感知

(1)Bayer 格式的 CFA 彩色滤镜阵列设计


一、颜色视觉与感知特性

人眼除了能够分辨可见光的明暗亮度以外,还能分辦颜色。一直以来,人眼如何分辨颜色的机理是最吸引研究者的研究领域之一。颜色是通过肉眼、大脑和人们的生活经验所产生的一种对光的视觉效应,对颜色的感觉不仅由光的物理性质決定,还包括人的心理等许多因素。
1802年,杨(Thomas Young)提出了三色学说。约半个世纪后亥姆霍兹 (Hermann von Helmholtz)对其进行了定量发展和完善。三色学说的核心观点是假定人眼视网膜上存在三种能够感受红、绿、蓝三原色的光接收器,每种接收器受到刺激后引起的兴奋响应都能产生一种原色的感觉,而颜色感受都由兴奋响应量的比例确定。需要注意的是三色学说不是理论推导的学说,而是建立在颜色混合实验规律的基础上,即不同比例的红、绿、蓝三原色可以混合出几乎所有的颜色。

颜色可分为彩色和非彩色两大类。

  • 非彩色是指白色、黑色和介于黑白之间的各种深浅不同的灰色。非彩色只有描述白光亮度变化的明亮度的差异。
  • 彩色是除了黑、白、灰以外的各种颜色。

不同的彩色通过三种特征属性描述:色调、饱和度、明度。

(1)色调

色调(hue)是视觉系统对物体呈现出的颜色的感觉,用红 (red)、橙 (orange)、黄 (yellow)、绿(green)、青 Coyan)、蓝(blue)、靛 (indigo)、紫 (violet)等术语刻画,黑、灰、白为无色彩。

不同波长的单色光具有不同的色调。发光物体的色调取决于其辐射光的光谱组成,非发光物体的色调则取决于照明光源的光谱组成和物体的反射(透射)光谱特性。可以总结为色调取决于可见光的光谱构成,它是颜色彼此区分的外观特性,与颜色明暗无关。色调数目由多达 1000 万种。

(2)饱和度

饱和度(saturation)是对颜色纯度的刻画。可见光光谱中的各种单色光是完全饱和的颜色。完全饱和的颜色是指没有渗入白光所呈现出的颜色,当一种颜色掺入其他光成分越多时,光谱带越宽,颜色越不饱和。反过来,光的光谱带越窄,颜色的饱和度就越高。

(3)明度

明度(brigbtness)是人眼感受物体明暗程度的描述,明度是视觉系统对可见物体辐射光或发射光多少的感知程度。

  • 发光物体的亮度越高,明度就越高
  • 非发光物体的反射比越高,明度也就越高

黑色(没有光)的明度最低,白色的明度最高,在这两个极端之间的是不同明度的灰色地带。

需要注意的是,明度是一个主观感觉值,无法用物理设备测量,但可以用亮度(即辐射的能量)来度量。根据国际照明委员会 (International Commission on TIlumination, CIE)的定义,亮度是用反映视觉特性的光谱敏感函数加权之后得到的辐射功率,并在555nm处达到峰值,它的幅度与物理功率成正比。但是,亮度虽然更容易度量,但它与明度并不是同一概念,它可以认为是光的强度,与明度的关系并不是简单的线性关系。

上图所示的三维空间的纺锤体,可以把色调、饱和度和明度这三个颜色的基本特征属性表示出来。

  • 垂直轴代表从白到黑的颜色明度变化。
  • 水平圆盘剖面的径向表示颜色饱和度变化。
  • 从圆心向圆周画一条直线段,其上的色调和明度保持不变,但从内向外,饱和度越来越高。
  • 水平圆盘剖面上的每个圆周用于表示具有相同饱和度和明度的连续变化的色调,最大半径的圆周表示的是可见光谱中完全饱和的单色光的各种不同色调。

实验证实,人的视觉系统能感受颜色,但不能感知和区分组成特定颜色刺激的光谱成分。只要是色度、饱和度和明度属性给人的感觉相同,视觉系统就认为这是同一种颜色,这就形成了同色异谱现象。

1854 年,格拉斯曼 (Grassmann)在大量混色实验的基础上,总结得到定性描述颜色混合规律的格拉斯曼定律。格拉斯曼定律是现代色度学的重要基础,共包括以下四条定律。

(1)人的视觉只能分辨颜色的三种变化,即色调、饱和度和明度。
(2)在由两种成分组成的混合色中,如果一种成分连续变化,混合色的外貌也连续变化。
(3)颜色外貌相同的光,不管它们的光谱组成是否相同,在颜色混合中具有相同的效果。
(4)混合色光的总亮度等于组成混合色的各种色光的亮度总和。

 

二、颜色空间

为了便于对颜色认知的交流,需要一些规定的方法量化精确表征各种颜色。颜色的定量表征涉及观察者的视觉生理和心理、照明与观察物理条件等诸多复杂因素。那么如何实现与人的颜色视觉特性一致的颜色量化表示技术,以满足对颜色特性定量化和标淮化的需要呢?

经过长期的探索实验,国际照明委员会在1931年提出了 CIE 1931标准色度系统,形成了RGB 颜色空间。此后,在此基础上,陆续提出了许多满足不同需求的颜色空间或颜色模型。

颜色空间是表示颜色的一种数学方法,用表示颜色的基本参数描述和记录颜色,通常用三维模型定义颜色空间,空间中的颜色用代表三个颜色属性参数的三个维度的坐标指定,这些三维参数描述颜色在颜色空间中的位置,但并没有明确是什么颜色,其颜色取决于使用的坐标。

定义颜色空间使用的属性参数根据颜色空间针对不同对象和应用目的的不同而变化多样。例如,对于人,可以通过色调、饱和度和明度定义颜色;对于CRT 显示设备,可以用红、绿和蓝磷光体的发光量定义颜色;对于打印或印刷设备,可以使用青色、品红色、黄色和黑色的反射和吸收指定颜色。

理论上,可定义表示颜色的颜色空间的数目是无穷的。颜色空间有设备相关颜色空间与设备无关颜色空间之分。设备相关的颜色空间是指生成的颜色与生成颜色的设备有关,最常见的RGB 颜色空间就是指与显示设备相关的颜色空间。计算机显示器用 RGB 显示颜色,用像素值 R=250、G=123、B=23 生成的颜色将随具体显示器的亮度和对比度的改变而改变。设备无关的颜色空间是指该颜色空问中与生成的颜色及生成颜色的设备无关。

(1)RGB 颜色空间

几乎所有的颜色空间都是从 RGB ( red, green, blue)颜色空间导出的。RGB 颜色空间利用红、绿和蓝三基色的不同比例相加合成产生各种不同的颜色。

R、G、B取值范围都是 0.0~1.0。在大部分 RGB 颜色空间应用中,R、G、B的取值常用8bit表示,因此代表三基色的红、绿、蓝通道分别用 0~255 的整数量表示强度。

0表示无光,最暗;255 表示强度最大,最亮。因为三种颜色都有 256 个亮度水平级,经叠加可形成 1670 万种颜色。对于人眼分辨颜色能力而言,通过 RGB 颜色空间足以再现绚丽的世界。

RGB 颜色空间是混合加色型颜色空间,在电视机和计算机的图像颜色显示系统中有广泛应用。例如,主要用在显示器、扫描仪等设备上。对于 CRT 显示器,R、G、B分别表示显示器红、绿、蓝三种荧光粉受到电子枪轰击后激励产生的颜色;对于扫描仪,R、G、B分别表示光电转换接收的通过红、绿、蓝滤光片的色彩。

RGB 颜色空间的优点是原理简单,使用 RGB 生成颜色容易实现。但缺点是 RGB 颜色空间是与设备相关的颜色空间,在RGB 颜色空间中,对颜色指定不够直观。在RGB 颜色空间中度量颜色时,视觉对颜色的感知是非线性的,R、G、B通道的相关性也比较强。

(2)HSV 颜色空间

HSV(hue, saturation, value)颜色空间是根据颜色的直观特性定义的,也被称为HSI颜色空间。在HSV 中,色调日用水平圆周上的角度度量,取值范围为 0°~360°。按逆时针方向计算,红色为 0°,绿色为 120°,蓝色为 240°,它们对应的补色色调取值分别为青色180°,品红色 300°,黄色 60°。

饱和度S用水平圆周的从圆心到边缘的径向表示,取值范围为 0.0~1.0。亮度值 V 自底向上,取值范围为 0.0~1.0,对应从黑色到白色。同样,在用8bit表示H、S、V通道的取值时,也把它们转换成 0~255 之间的整数。HSV 颜色空间属于强度、饱和度和色调型颜色空间,是面向计算机绘图时颜色编辑使用的较直观的颜色空间。HSV 是设各相关的颜色空间,其优点在于用色调和饱和度描述对色彩的感知,指定颜色的方式和对颜色的解释非常直观,而且对消除光亮度的影响很有用。

(3)YCbCr 颜色空间

YCbCr 颜色空间是在ITU-R BT.601 和 BT.709 等标准中明确定义的,是数字电视颜色空间,主要用于优化彩色视频信号的传输。其中,Y是亮度,由 RGB 输入信号的特定部分叠加得到:Cr、Cb 表示色度,用于描述颜色的色调和饱和度。其中,Cr反映RGB中红色部分与Y亮度值之间的差异,而Cb反映 RGB 中蓝色部分与Y亮度值之间的差异。YCrCb 颜色空间的重要性体现在亮度信号Y和色度信号Cr、Cb是分离的,如果只有Y分量而没有Cb、Cr分量,那么图像就是黑白灰度图像。如果 YCbCr 取值用8比特表示,Y的取值范围为 16~235,16 表示黑电平,235 表示白电平,Cb、Cr的取值范围为 16~240,使用128 的偏移时范围为-112~112。

因为人眼对区域内色差的变化没有对灰度的变化敏感。在图像质量损失忽略不计的前提下,可以降低Cb、Cr 通道的采样率,从而有效压缩 Cb、Cr通道的数据量。常见的 YCbCr采样频率格式包括 4:4:4、4:2:2、4:1:1及4:2:0。

① RGB444

444是指 YCbCr三个通道的采样率相同,因此在采用 YCbCr颜色空间 4:4:4格式生成的图像里,每个像素的三个分量信息完整,经8比特量化后,未经压缩的每个像素占用 3个byte。

② RGB422

422是指图像中水平方向的色度采样率是4:4:4中的一半,即每个色差通道 Cb 和 Cr 水平方向采样率为亮度通道Y的一半。对非压缩的8比特量化图像,每两个水平方向相邻的像素占用 4个byte。

③ RGB411

411是指和亮度Y相比,在水平方向上对色度 Cb 和 Cr 只进行 4:1的采样,对非压缩的8比特量化图像,每四个水平方向相邻的像素占用 6个byte,其视觉效果对低端用户和消费类产品仍可接受。

④ RGB420

420并不是说只有 Y、Cb,而没有 Cr 分量。而是对图像每行而言,只有一种色度分量以相对于Y分量2:1的采样率采集或存储;而上下相邻的两行存储不同的色度分量,即如果上一行 YCbCr是4:2:0,下一行YCbCr 就是4:0:2,再下一行又是4:2:0,以此类推。对非压缩的8比特量化图像,每个2行2列相邻的4像素块占用 6个byte。

可见,YCbCr颜色空间最大的优点是表示图像数据时只需占用较少空间。

类似的还包括 YUV、YIQ、YPbPr 等颜色空间,都属于亮度 / 色度型电视系统颜色空间。其中,YUV 是用在 PAL 和 SECAM 模拟彩色电视制式中的颜色空间,Y表示亮度,也就是灰阶值,U和V表示色度或色差分量。YIQ是用在 NTSC 模拟彩色电视制式中的颜色空间;YPbPr是用于高清晰度电视的颜色空间。

无论是面向数字电视还是模拟电视的亮度、色度型颜色空间,主要用途都是电视信号传输,都是把 RGB 颜色空间变换成亮度和色度,将亮度和色度分离,用一个分量表示非色彩的亮度感知,用两个独立的分量表示色彩感知,目的是通过压缩色度数据,在有效播送彩色电视图像的前提下,显著压缩信号传播过程中图像的数据量。

当需要黑白图像时也非常方便。这些颜色空间都是与设备相关的,而且在闭环系统中的使用条件也相当严格。

(4)CMY 颜色空间

当背景光照射到物体表面时,物体将吸收一部分光线,并将剩下的光线反射回来,反射的光线就是人们看到的物体的颜色,这是一种减色色彩模式。CMY (cyan, magenta, yellow)颜色空间就是描述减色混合模式的适合印刷用的一种颜色空间,在印刷机和打印机在纸张或其他印刷材料上再现色彩时使用。有时也称为 CMYK (cyan, magenta, yellow, black)颜色空间。其中,C代表青色,M代表品红色,Y代表黄色,K代表黑色。

CMYK 颜色空间的优点是基于三基色,理论简单,在印刷领域使用时容易生成颜色。但CMYK 颜色空间是与设备或印刷过程相关的,如工艺方法、油墨特性、纸张特性等不同条件有不同的印刷结果。因此,CMYK 也是与设备相关的颜色空间,颜色指定也不够直观。同样,视觉对颜色的感知是非线性的。此外,CMYK 空问具有多值性,对同一种具有相同绝对色度的颜色,在相同的印刷过程前提下,可以用多种CMYK 数字组合来表示和印刷出来。

三、基于彩色滤镜阵列的彩色感知

在彩色光电摄影中,可以通过分光,使用三个传感器分别捕获红、绿、蓝三个通道的颜色分量。但为了降低成本,绝大部分成像系统中采用单芯片 CMOS、CCD 传感器结合彩色滤镜阵列 (color filter array, CFA)的方式捕获彩色图像,虽然牺牲了物理分辦率,但显著简化了结构,降低了价格。做法是在每个感光像素的上面覆盖一个与物理像素相同面积大小,但分别只让红、绿、蓝光线透过的滤镜。

(1)Bayer 格式的 CFA 彩色滤镜阵列设计

Bryce Bayer 于 1976 年发明了Bayer格式彩色滤镜阵列并注册了专利的。Bayer格式彩色滤镜阵列被广泛运用于现代数码相机、摄像机和手机摄像头中,是实现单片 CCD 或 CMOS 传感器拍摄彩色图像的主要技术之一。

Bayer阵列模拟人眼对色彩的敏感程度,采用1红2绿1蓝的排列方式将灰度信息转换成彩色信息。

彩色光线经过 Bayer格式彩色滤镜阵列后,传感器实际获取的每个物理像素仅有一种颜色信息,形成的扩展名为 .raw 格式的图像有明显的红、绿、蓝间隔的马赛克感觉。那么如何得到每个物理像素位置处的 RGB 通道分量并去除马赛克呢?

每个像素仅包括光谱的一部分,必须通过插值实现每个像素的 RGB 值。为了从 Bayer格式得到每个像素的 RGB 格式,需要通过插值填补缺失的两个色彩通道分量。

反马赛克算法需要利用特定插值计算,根据每个像素旁边像素的红、绿、蓝通道值,通过加权平均,插值算出每个像素点缺失的颜色通道取值,获得最终图像。插值的方法有很多,典型的如邻域、线性、3×3插值等,在具体方案中,通过速度与质量的权衡决定最终采用哪种插值的方法。不同插值补偿算法的差异取决于参与插值的邻近像素的数目和各自的权重。

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

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

相关文章

2023版 STM32实战7 通用同步/异步收发器(串口)F103/F407

串口简介和习惯 -1-通用同步异步收发器 (USART) 能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。 -2-硬件流控制一般是关闭的 -3-波特率指单位时间传输bit个数 -4-数据位一般是8位 -5-一般无校验位 编写代码思路 -1-参…

位图/布隆过滤器

一、位图 1.1位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 1.2位图的实现 template<size_t N>class bitset{public:bitset(){//需要N个比特位&#xff0c;…

SpringBoot客户端实现分片、断点上传

客户端的分片上传和断点续传是指将一个文件拆分为多个分片&#xff0c;在网络不稳定或上传中断后&#xff0c;可以从中断处继续上传而不需要重新上传整个文件。 当需要上传大型文件时&#xff0c;客户端的分片上传和断点续传是一种常用的技术。它可以提高上传效率并减少网络中断…

【计算机网络面试题(62道)】

文章目录 计算机网络面试题&#xff08;62道&#xff09;基础1.**说下计算机网络体系结构2.说一下每一层对应的网络协议有哪些&#xff1f;3.那么数据在各层之间是怎么传输的呢&#xff1f; 网络综合4.**从浏览器地址栏输入 url 到显示主页的过程&#xff1f;5.说说 DNS 的解析…

Vscode配置C#编程环境(win10)

目录 1、安装好Vscode 2、下载安装.NetCore SDK 3、配置C#环境 3.1 打开Vscode并下载扩展 3.2 Vscode中打开文件夹并配置环境 3.3 调试运行 1、安装好Vscode 2、下载安装.NetCore SDK 官网如下&#xff0c;下载完成后双击打开一路走到底就行.NetCore SDK官网 软件显示安…

利用freesurfer6进行海马分割的环境配置和步骤,以及获取海马体积

利用freesurfer6进行海马分割的环境配置和步骤 Matlab Runtime 安装1. 运行recon-all&#xff1a;2. 利用 recon-all -s subj -hippocampal-subfields-T1 进行海马分割3. 结束后需要在/$SUBJECTS_DIR/subject/的文件夹/mri路径下输入下面的代码查看分割情况4. 在文件SUBJECTS_D…

连续波雷达相关内容简介

连续波雷达(CW雷达)连续发射高频信号。回波信号被永久接收和处理。 一、未调制连续波雷达 未调制的连续波雷达除了振荡的相位之外没有其他时间参考。它只能用于测量小于波长的距离。以上的一切都极为含糊。因此,它只能用作多普勒雷达或控制已知距离的恒定性。 二、调频连…

VUE3照本宣科——eslint与prettier

VUE3照本宣科——eslint与prettier VUE3照本宣科系列导航 前言一、eslint1.配置文件2.配置规则3.忽略错误 二、prettier三、总结 VUE3照本宣科系列导航 1.VUE3照本宣科——认识VUE3 2.VUE3照本宣科——应用实例API与setup 3.VUE3照本宣科——响应式与生命周期钩子 4.VUE3照本宣…

关于Go语言的底层,Channel

1.Channel 介绍一下Channel&#xff08;有缓冲和无缓冲&#xff09; Go 语言中&#xff0c;不要通过共享内存来通信&#xff0c;而要通过通信来实现内存共享。Go 的CSP(Communicating Sequential Process)并发模型&#xff0c;中文可以叫做通信顺序进程&#xff0c;是通过 gor…

剑指offer——JZ54 二叉树搜索树的第k个节点 解题思路与具体代码【C++】

一、题目描述与要求 二叉搜索树的第k个节点_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一棵结点数为n 二叉搜索树&#xff0c;请找出其中的第 k 小的TreeNode结点值。 1.返回第k小的节点值即可 2.不能查找的情况&#xff0c;如二叉树为空&#xff0c;则返回-1&#xf…

Sql server 使用DBCC Shrinkfile 收缩日志文件

磁盘空间有限&#xff0c;需要收缩日志文件释放空间。 数据库名称上右击属性->文件,逻辑名称日志文件默认名称为“_log”结尾。 alter database 数据库 set recovery simple dbcc shrinkfile(XXX_log,2,truncateonly) alter database 数据库 set recovery full

webp批量转换为png、jpg工具

webp批量转换为png、jpg工具 链接&#xff1a;https://pan.baidu.com/s/1NZArgbiF88_qBbAIiUR4qQ 提取码&#xff1a;2sqs –来自百度网盘超级会员V5的分享

IO流 之 转换流( InputStreamReader 字节输入转换流 和 OutputStreamWriter 字节输出转换流)

当文本文件和代码的编码不一致时&#xff0c;使用字符流会导致读取出来的文字乱码。如下&#xff1a; 读取文件的编码时GBK编码。 代码的编码时UTF-8的编码。 程序运行出来中文则是乱码。 这里就要使用到转换流了。 字节转换流 InputStreamReader 字节输入转换流 使用步骤…

一文搞懂时间序列ARIMA模型

文章目录 1 ARIMA的定义2 差分(differencing)2.1 Order&#xff1a;差分的阶数2.2 Lag&#xff1a;差分的滞后2.3 滞后运算/滞后算子/延迟算子2.4 关于差分的两个误解 3 ARIMA的平稳性4 ACF与PACF5 时序模型的选择与评估5.1 超参数p、q、d的确定5.2 时间序列的评估指标 1 ARIMA…

Linux自用笔记

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Linux相关 ✨特色专栏&#xff1a; My…

码支付添加银行转账功能,手动回调

在后台中通道列表先加上 路径&#xff1a;【后台】 - > 【通道管理】 - > 【新增】 总后台页面通道类型加上支付类型yh_pay和通道yhzz添加后存到数据库admin_chanel上 修改商户页面的【新增通道】页面 /view/index/channel/index.html 添加一个支付通道 <option…

【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是螺旋矩阵&#xff0c;使用【二维数组】这个基本的数据结构来实现 螺旋矩阵【EASY】 二维数组的结构特性入手 题干 解题思路 根据题目示例 mat…

【DevOps】搭建你的第一个 Docker 应用栈

搭建你的第一个 Docker 应用栈 1.Docker 集群部署2.第一个 Hello World2.1 获取应用栈各节点所需镜像2.2 应用栈容器节点互联2.3 应用栈容器节点启动2.4 应用栈容器节点的配置2.4.1 Redis Master 主数据库容器节点的配置2.4.2 Redis Slave 从数据库容器节点的配置2.4.3 Redis 数…

sql server查询结果:行转列、XML形式

1.普通查询 SELECT M.name From Menu M INNER JOIN MenuRoleRelation MRR ON M.idmrr.MenuId AND MRR.RoleId1; 结果&#xff1a; 2.做xml字符串返回 最后面加上&#xff1a;FOR XML PATH() 结果&#xff1a; 3.可以改为逗号分隔 SELECT ,M.name From Menu M INNER JOIN Me…

深度学习——深度学习计算一

深度学习——深度学习计算一 文章目录 前言一、层和块1.1. 自定义块1.2. 顺序块1.3. 在前向传播函数中执行代码1.4. 小结 二、参数管理2.1. 参数访问2.1.1. 目标参数2.1.2. 一次性访问所有参数2.1.3. 从嵌套块收集参数 2.2. 参数初始化2.2.1. 内置初始化2.2.2. 自定义初始化 2.…