OpenCV学习(1) RGB颜色空间
1.1彩色空间
颜色是外来的光刺激作用于人的视觉器官而产生的主观感觉,它具有色调、饱和度和亮度三个特性。物体的颜色不仅取决于物体本身,还与光源、周围环境的颜色,以及观察者的视觉系统有关
1.1.1颜色的基本特性
1.光与颜色
从根本上讲,光是人的视觉系统能够感知到的电磁波,其波长在380nm--780nm之间,正是这些电磁波使人产生了红、黄、蓝等颜色的感觉。光可由它的光谱能量分布p(λ)来表示 ,其中λ是波长,当一束光的各种波长的能量大致相等时,我们称其为白光,否则称其为彩色光。若一束光中只包含一种波长的能量,其它波长都为零时,称其为单色光。
事实上,我们可以用主波长、纯度和明度来简洁地描述任何光谱分布的视觉效果。但是由实验结果知道,光谱与颜色的对应关系是多对一的,也就是说,具有不同光谱分布的光产生的颜色感觉是有可能一样的。我们称两种光的光谱分布不同而颜色相同的现象为“异谱同色”。由于这种现象的存在,我们必须采用其它的定义颜色的方法,使光本身与颜色一一对应。
2.色彩的视觉心理特性
色彩是人的眼睛对于不同频率的光线的不同感受,色彩是一种视觉感受,客观世界通过人的视觉器官形成信息,使人们对它产生认识。来自外界的一切视觉形象,如物体的形状、空间、位置以及它们的界限和区别都由色彩和明暗关系来反映。
3.颜色的基本概念
颜色定义为:色是光作用于人眼引起除形象以外的视觉特性。
颜色与光的波长有关,不同波长的光呈现不同颜色。自然界中的颜色可以分为非彩色和彩色两大类。非彩色指黑色、白色和各种深浅不一的灰色,而其它所有颜色均属于彩色。
4.颜色的基本特性
国际照明委员会CIE(International Commission on Illumination)对颜色的描述作了一个通用的定义,用颜色的三个特性来区分颜色。这些特性是:色调(Hue)、饱和度(Saturation)和亮度(Lightness),它们是颜色所固有的并且是截然不同的特性,任一彩色光都是这三个特征的综合效果。
(1)色调(hue)
色调又称为色相,是当人眼看到一种或多种波长的光时所产生的彩色感觉,它反映颜色的种类,是决定颜色的基本特性。色调用红、橙、黄、绿、青、蓝、靛、紫等术语来刻画。
不透明物体的色调是指该物体在日光的照射下,所反射的各光谱成分作用于人眼的综合效果;透明物体的色调则是透过该物体的光谱综合作用的效果。
(2)饱和度(saturation)
饱和度是指颜色的纯度,即色彩含有某种单色光的纯净程度,它可用来区别颜色的深浅程度。对于同一色调的彩色光,饱和度越深颜色越鲜明或说越纯,例如鲜红色饱和度高,而粉红色的饱和度低。完全饱和的颜色是指没有渗入白光所呈现的颜色,例如仅由单一波长组成的光谱色就是完全饱和的颜色。
(3)亮度(brightness)
亮度是视觉系统对可见物体辐射或者发光多少的感知属性。亮度是光作用于人眼时所引起的明亮程度的感觉,它与被观察物体的发光强度有关。由于其强度的不同,看起来可能会亮一些或暗一些。对于同一物体,照射光越强,反射光也越强,感觉越亮;对于不同的物体在相同照射情况下,反射越强者看起来越亮。
通常我们把色调和饱和度通称为色度。亮度是用来表示某彩色光的明亮程度,而色度则表示颜色的类别与深浅程度。
1.1.2 三基色原理
研究表明,人的视网膜有对红、绿、蓝颜色敏感程度不同的三种锥体细胞
1.三色学说
某一种波长的光可以通过三种不同波长的光混合而复现出来,且红(R)、绿(G)、蓝(B)三种单色光可以作为基本的颜色-原色,把这三种光按照不同的比例混合就能准确的复现其它任何波长的光,而它们等量混合就可以产生白光。
近代的三色学说研究认为,人眼的视网膜中存在着三种锥体细胞,它们包含不同的色素,对光的吸收和反射特性不同,对于不同的光就有不同的颜色感觉。
当黄光刺激眼睛时,将会引起红、绿两种锥体细胞几乎相同的反应,而只引起蓝细胞很小的反应,这三种不同锥体细胞的不同程度的兴奋程度的结果产生了黄色的感觉,这与颜色混合时,等量的红和绿加上极小量的蓝色可以复现黄色是相同。
这三种色光既是白光分解后得到的主要色光,又是混合色光的主要成分,并且能与人眼视网膜细胞的光谱回应区间相匹配,符合人眼的视觉生理效应。
2.色彩的形成
我们称这种由两种以上色光相混合,呈现另一种色光的方法为色光加色法。
加色法实质是不同能量的色光混合时,可以导致混合色光能量的变化。从色光混合的能量角度分析,色光加色法的混色方程为:
C = α(R) + β(G) + γ(B)
式中:C为混合色光总量;(R)、(G)、(B)为三原色的单位量;α,β,γ为三原色分量系数。
3.补色光
补色律:每一个色光都有一个相应的补色光,某一色光与其补色光以适当比例混合,便产生白光,最基本的互补色有三对:红-青,绿-品红,蓝-黄;
4.亮度相加律
亮度相加律:由几种色光混合组成的混合色的总亮度等于组成混合色的各种色光亮度的总和。这一定律叫作色光的亮度相加律。
1.2 RGB颜色空间
1.2.1 RGB颜色模型
RGB(Red, Green, Blue)颜色模型通常使用于彩色阴极射线管等彩色光栅图形显示设备中,彩色光栅图形的显示器都使用R、G、B数值来驱动R、G、B电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉发出不同亮度的光线,并通过相加混合产生各种颜色; 扫描仪也是通过吸收原稿经反射或透射而发送来的光线中的R、G、B成分,并用它来表示原稿的颜色。
RGB颜色模型称为与设备相关的颜色模型,RGB颜色模型所覆盖的颜色域取决于显示设备荧光点的颜色特性,是与硬件相关的。它是我们使用最多,最熟悉的颜色模型。它采用三维直角坐标系。红、绿、蓝原色是加性原色,各个原色混合在一起可以产生复合色。RGB颜色模型通常采用如图所示的单位立方体来表示。
在正方体的主对角线上,各原色的强度相等,产生由暗到明的白色,也就是不同的灰度值。(0,0,0)为黑色,(1,1,1)为白色。正方体的其他六个角点分别为红、黄、绿、青、蓝和品红。
1.2.2图像RGB颜色空间
在OpenCV中RGB颜色空间被定义为BGR,只是存储的排列顺序。
彩色图像中的每一个像素点的一个表示颜色的值就是一个三维的向量,这个向量是由RGB三基色的一个线性表出。
图像亮度的形成:
三色光的亮度强度各不相同,根据人的感觉是:绿光最亮,红光其次,蓝光最弱。假设得到的白光的亮度强度为100%,如果Y表示景物的亮度,则通常有Y=0.299R+0.587G+0.114B
平时所用的RGB的彩色图抓换为灰度图的时候,用的就是这个公式。
灰度图其实就表示了亮度这一个概念,但是视觉上看起来的灰度图像不一定是单通道的图像,3通道的图像也可以没有色彩,只有灰度。因为RGB的取值在颜色空间立方体的主对角线上,在这条线上,视觉上只有亮度,没有色彩。
1.2.3图像的颜色
数字位图图像中每个像素上用于表示颜色的二进制数字位数称为图像深度(也称图像灰度、颜色深度),用n表示,那么它能描述的色彩数C=2^n 。根据颜色深度的不同,可以将图像分为以下三种模式:
(1)黑白图像指图像的每个像素只能是黑或者白,没有中间的过渡,故又称为二值图像。二值图像的像素值为0、1,颜色深度为1。
(2)灰度图像灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息,只有256级的明暗变化,颜色深度为8。
(3)彩色图像彩色图像是指每个像素的信息由RGB三原色构成的图像,其中RBG是由不同的灰度级来描述的,颜色深度为24。
OpenCV学习(1) RGB颜色空间的更多相关文章
- OpenCV学习笔记(5)——颜色空间转换
学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等 创建一个程序用来从一幅图像中获取某个特定颜色的物体 1.转换颜色空间 OpenCV中有超过150种进行颜色空间转化的方法,但是 ...
- OpenCV 学习笔记(10)HSV颜色空间及颜色空间转换(RGB-HSV)
1.1 颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成.然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色 调 H ...
- OpenCV 学习笔记(8)彩色图像RGB通道的分离、合并与显示
https://blog.csdn.net/ZYTTAE/article/details/42234989 由于算法的需要,需要把彩色图像的R.G.B值分离出来,OpenCV中正好有split() 和 ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- openCV学习——一、图像读取、显示、输出
openCV学习——一.图像读取.显示.输出 一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
- OpenCV学习笔记:opencv_highgui模块
一,简介 本模块为跨平台的gui/IO组件,支持平台包括windows,linux,mac,IOS,android,可支持图像/视频/摄像头的读取显示以及转码. 二,分析 本模块为跨平台的gui/IO ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- opencv学习笔记D01
目录 opencv学习笔记D01 一.图片读取 二.图片保存 三.图片展示 四.图片缩放 五.四种常用插值方式的比较 1.最近邻插值 2.双线性插值 3.区域插值 4.三次样条插值 我是尾巴: ope ...
随机推荐
- swift Dictionary 字典
// // main.swift // 字典 // // Created by zhangbiao on 14-6-15. // Copyright (c) 2014年 理想. All rig ...
- iOS音频播放(二):AudioSession
(本文转自码农人生) 前言 在实施前一篇中所述的7个步骤步之前还必须面对一个麻烦的问题,AudioSession. AudioSession简介 AudioSession这个玩意的主要功能包括以下 ...
- (六)Android中Service通信
一.启动Service并传递参数 传递参数时只需在startService启动的Intent中传入数据便可,接收参数时可在onStartCommand函数中通过读取第一个参数Intent的内容来实现 ...
- MVC+simpleinjector 简单使用
一.首先添加NuGet包如下图
- Nodejs随笔(三):全局对象之global
首先,进入node REPL: mesogene@mesogene-team:~$ node > 查看global对象,发现其他全局对象(包括Buffer.require对象)以及全局方法都包含 ...
- jQuery绑定事件-多种方式实现
jQuery绑定事件-多种方式实现: <html> <head> <meta charset="utf-8" /> <script src ...
- windows批处理(.bat)
转自http://www.cnblogs.com/shiney/archive/2011/07/04/2097236.html 本文在运行中有一些小小的问题,我修改了一下,将会在稳重标出 批处理文件是 ...
- Python urllib和urllib2模块学习(二)
一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...
- Qt中添加OpenCV库
配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: Op ...
- CC++初学者编程教程(5) 安装codeblocks软件开发环境
Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.Code::Blocks由纯粹的C++语言开发完成,它使用了蓍名的图形界面库w ...