
在前面,我们只介绍了三种图像的类型,分别位二值图像、灰度图像以及RGB图像。但我们现在常用的图像肯定是RGB图像,不过它只是色彩空间的一种类型,在实际的图像中,还有许多其他的色彩空间,对于会PS的读者来说肯定不会陌生。
比如GRAY色彩空间(灰度图像),XYZ色彩空间,YCrCb色彩空间,HSV色彩空间,HLS色彩空间,CIEL a b 色彩空间,CIEL u v 色彩空间,Bayer色彩空间等。
每个图像都有其擅长处理的内容,因此我们要掌握这些色彩空间图像的转换,以便后续更方便的处理图像的问题。
GRAY就是我们前面介绍的灰度图像,通常指8位灰度图像,其具有256个灰度级,像素值范围位[0,255]。
RGB转换位GRAY的数学公式如下:
Gray=0229 R+0587 G+0114B
而图像有GRAY色彩空间转换为RGB色彩空间时,最终所有通道的值都是相同的,其处理方式如下:
R=Gray
G=Gray
B=Gray
XYZ色彩空间是由CIE(International Commission on Illumination)定义的,是一种更便于计算的色彩空间,它不像RGB转换位GRAY,只能单向转换,XYZ色彩空间与RGB转换不会丢失任何值。
将RGB色彩空间转换为XYZ色彩空间,其转换公式为:
将XYZ色彩空间转换为RGB色彩空间,其转换公式为:
人眼视觉系统对颜色的敏感度要低于对亮度的敏感度。在传统的RGB色彩空间内,RGB三原色具有相同的重要性,但是忽略了亮度的信息。所以,才有了YCrCb色彩空间。
在YCrCb色彩空间中,Y代表光源的亮度,色度信息保存在Cr和Cb中,其中,Cr表示红色分量信息,Cb表示蓝色分量信息。
亮度给出了颜色亮或暗的程度信息,该信息可以通过照明中强度成分的加权和来计算。在RGB光源中,绿色分量的影响最大,蓝色分量的影响最小。
从RGB色彩空间转换YCrCb色彩空间的数学公式如下:
Y=0229 R+0587 G+0114B
Cr=(R-Y)0713+delta
Cb=(B-Y)0564+delta
其中delta的值为:
从YCrCb色彩空间转RGB数学公式如下:
R=Y+1403(Cr-delta)
G=Y-0714 (Cr-delta)-0344 (Cb-delta)
B=Y+1773(Cb-delta)
RGB是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定的差异。而HSV色彩空间是一种面向视觉感知的颜色模型。HSV色彩空间是从心理学和视觉的角度出发,指出人眼色彩知觉主要包含3个要素:色调,饱和度,亮度。
说到这里,相信用过PS的都应该清楚HSV到底能干什么了吧?不过,我们还是介绍一些这3个要素,毕竟本篇博文就是专门将色彩空间理论知识的,不能有空缺。
色调(H):指光的颜色,色调与混合光谱中的主要光波长相关,例如“赤橙黄绿青蓝紫”分别表示不同的色调。如果从波长的角度考虑,不同的波长的光表现为不同的颜色,实际上它们体现的是色调的差异。
饱和度(S):指色彩的深浅层度,相对于纯净度,或一种颜色混合白光的数量。纯谱色是全饱和的,像深红色(红加白)和淡紫色(紫加白)这样的彩色是欠饱和的,饱和度与所加白光的数量成反比。
亮度(V):反映的是人眼感受到的光的明暗程度,该指标与物体的反射度有关。对于色彩来讲,如果在其中掺入的白色越多,则其亮度越高;如果在其掺入的黑色越多,则亮度越低。
在具体的实现上,我们将物理空间的颜色分布在圆周上,不同的角度代表不同的颜色。因此,通过调整色调值,我们就能选取不同的颜色,色调的取值范围为[0,360]。色调取值不同,颜色也不同,具体如下表所示:
饱和度的值为[0,1],饱和度的值为0时,只有灰度,饱和度越大,颜色值越丰富。至于亮度,其取值范围也是[0,1]。
例如,博主现在取色调=0,饱和度=1,亮度=1,就可以提取色彩深红色。
介绍完理论知识,HSV与上面的色彩空间一样,也需要与RGB进行转换,不过,我们这里转换之前,需要先将RGB色彩空间的值转换到[0,1]之间,然后在进行处理。具体处理如下:
V=max(R,G,B) 亮度
这里,H的计算结果可能小于0,如果出现这种情况,则需要对H进一步的处理计算。如下所示:
上述公式计算的结果肯定与前面说的色调,亮度,饱和度的范围一致。至于HSV转RGB,感兴趣的可以参考开发文档。
HLS与HSV色彩空间类似,都具有3要素。只是HLS色彩空间就L与V不同,其中HLS色彩空间的L(光亮度/明度)替换了亮度。
那么什么是光亮度/明度呢?
其实,光亮度/明度是用来控制色彩的明暗变换,它的取值范围同样也是[0,1]。我们在程序中,可以通过光亮度/明度的大小来衡量有多少光线从物体表面反射出来。光亮度/明度对于眼睛感知颜色很重要,因为当一个具有色彩的物体处于光线太强或者太暗的地方时,眼睛是无法准确获取物体颜色的。
说实话,编辑公式有点费劲,感兴趣的自己查询开发文档,后续在python中开发,我们都是使用cv2cvtColor()进行转换的。使用起来,你只需要了解其到底做什么的,并不需要知道其内部如何实现,但内部实现,就是上面的这些数学公式。
CIEL a b色彩空间是均匀色彩空间模型,它是面向视觉感知的颜色模型。从视觉感知均匀的角度来讲,人所感知到的两种颜色的区别程度,应该与这两种颜色在色彩空间中的距离成正比。在某个色彩空间中如果人所观察的两种颜色的区别程度,与这两种颜色在该色彩空间中对应的点之间的欧式距离成正比,则称该色彩空间为均匀色彩空间。
CIEL a b 色彩空间中的L分量用于表示像素的亮度,取值范围为[0,100],表示从纯黑到纯白;a 分量表示从红色到绿色的范围,取值范围为[-127,127];b分量表示从**到蓝色的范围,取值范围为[-127127]。
由于CIEL a b 是在CIE的XYZ色彩空间上发展起来的,所以转换的时候,需要先将RGB转换为XYZ色彩空间,然后在转换为CIEL a b 。具体的数学公式感兴趣的查询开发文档。
CIEL u v 色彩空间同CIEL a b 色彩空间一样,是均匀的颜色模型。CIEL u v色彩空间与设备无关,适用于显示器显示和根据加色原理进行组合的场合,该模型中比较强调对红色的表示,即对红色的变化比较敏感,但对蓝色的变化不太敏感。
同样的,CIEL u v 色彩空间也需要先将RGB转换为XYZ色彩空间,然后在转换为CIEL u v ,具体公式感兴趣的可以查询开发文档。
Bayer色彩空间被广泛的应用在CCD和CMOS相机中。
色彩空间的理论知识,到这里基本就讲解完成了,感兴趣的可以自己扩展最后几个数学公式。
opencv怎么生成 opencv createsamplesexe
Math
C
Foxpro
可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:
main()
{
int i,j,s=0,average,v[3],a[5][3];
printf("input score\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{ scanf("%d",&a[j][i]);
s=s+a[j][i];}
v[i]=s/5;
s=0;
}
average =(v[0]+v[1]+v[2])/3;
printf("math:%d\nc languag:%d\ndbase:%d\n",v[0],v[1],v[2]);
printf("total:%d\n", average );
}
程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0],v[1],v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。
723 二维数组的初始化
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。
首先去OpenCV下载2411的文件包,该文件为exe格式的。下载完成后进行安装,选择需要的解压路径,本文将其解压到vs安装目录下。接下来对环境变量进行设置,首先在桌面计算机处右键选择属性。在d出的窗口中选择高级系统设置。选择环境变量。在 用户变量中 新建opencv,并根据解压路径将其值设置为bulid的路径。如果有path项,则选中对其编辑,在已有路径后添加VC12的bin路径,用英文下的分号隔开。我的路径为D:\Program Files (x86)\Microsoft Visual Studio 120\opencv\build\x86\vc12\bin。设置完成后保存。同样在 系统变量 中的path中再将bin路径添加一遍,保存,此时需要重启系统才可完成设置。
没有添加环境变量吧,最好是把opencv dll的路径添加到环境变量路径,那么执行程序时会按路径搜索所需要的dll文件。
另外的办法就是把所有的dll拷到windows/system32文件夹下面,或者拷到自己编译出的exe文件相同文件夹
libopencvso文件的大小取决于使用的OpenCV库版本,不同版本libopencvso文件的大小也会有所不同。一般来说,libopencvso文件的大小大约在10MB~100MB之间。
”……“ was not declared in this scope。。。当出现这种问题的时候,一般是头文件不对,查一下你库存放的位置,版本不同 #include 后面写的都不同的
以上就是关于色彩空间类型---OpenCV-Python开发指南(7)全部的内容,包括:色彩空间类型---OpenCV-Python开发指南(7)、opencv怎么生成 opencv createsamples.exe、如何解决 opencv2013无法启动exe,拒绝访问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)