opencv-python图像处理笔记《一》:计算机中的图像

色彩空间、图片通道转换


前言

本文主要分析计算机上的图像的存储方式以及格式,做图像处理应先了解清楚图像的本质进而才能做出相关的图像处理操作。


提示:以下为个人学习笔记,如有错误,敬请指正。

一、色彩空间

色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。所以人类对于色彩的认识经历了极为漫长的过程,直到近代才逐步完善起来,但至今,人类仍不能说对色彩完全了解并准确表述了,许多概念不是那么容易理解。“色彩空间”一词源于西方的“Color Space”,又称作“色域”,**色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。**我们经常用到的色彩空间主要有RGB、CMYK、Lab等。

1.色彩空间对比

RGB和CMYK

**CMYK**描述的是青,品红,黄和黑四种油墨的数值(0%-100%)。绘画调色中使用的比较多。CMYK 印刷过程中使用减法混色法,因为它描述的是需要使用何种油墨,通过光的反射显示出颜色。,CMYK仅有101³+101共1,030,402色。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514105548572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MDI3Mzc0,size_16,color_FFFFFF,t_70#pic_center) **RGB** 采用加法混色法,因为它是描述各种“光”通过何种比例来产生颜色。光线从暗黑开始不断叠加 产生颜色。 RGB描述的是**红绿蓝三色光**的数值。在计算机中分为三个通道进行表示,数值范围(0-255)、即可用8位数据保存。基于这样的24-位RGB 模型的色彩空间可以表现 256×256×256 ≈ 1680万色。一些实现方法采用每原色16位,能在相同范围内实现更高更精确的色彩密度。这在宽域色彩空间中尤其重要,因为大部分通常使用的颜色排列的相对更紧密。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210514105827907.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MDI3Mzc0,size_16,color_FFFFFF,t_70) RGB所包含的色彩空间一般来说会比CMYK大,故而印刷厂一般都会强调不能以显示屏上所看到的色彩要求输出成品的色差。 ### 其他

代码如下(示例):
除了RGB,计算机上还有许多其他的类型的色彩空间:HSV、YUV、YCrCb等等。
HSV和HLS把颜色分解成色调、饱和度和亮度/明度。这是描述颜色更加自然的方法,可以通过抛弃最后一个元素,使算法对输入图像的光照条件不敏感。
YCrCb在JPEG图像格式中广泛使用。
opencv利用cv2.cvtColor()函数可以任意变换图片的色彩空间,下图为一些opencv提供的部分转化参数:
函数参数
变换结果如下图:
原图、HSV、YUV、YCrCb

二、计算机中图像

1.存储方式

在计算机中图片是由一个一个像素矩阵构成,而图像由一帧一帧的图片构成。现在最常用的是用RGB色彩空间三通道表示的彩色图以及单通道表示的灰度图。 RGB 三通道对应彩色图 0-255 255表示最亮 灰度图 只有单通道 0-255 255表示最亮接近白色 在opencv中彩色图存放通道顺序为 B-G-R,而在matlabplot中存放顺序为R-G-B,在opencv中读取的图像要经过转化才能正确在matlabplot中显示。
# img为读入图像
BGR_img = img
B,G,R = cv2.split(BGR_img)
RBG_img = cv2.merge([R,G,B])
plt.subplot(1, 2, 1), plt.imshow(BGR_img, "gray")
plt.subplot(1, 2, 2), plt.imshow(RBG_img, "gray")
plt.show()

原图和灰度图
灰度图将三通道转化为单通道数据:
RGB值和灰度的转换,实际上是人眼对于彩色的感觉到亮度感觉的转换,这是一个心理学问题,
有一个公式:
G r e y = 0.299 ∗ R + 0.587 ∗ G + 0.114 ∗ B Grey = 0.299*R + 0.587*G + 0.114*B Grey=0.299R+0.587G+0.114B
R、G、B分别为三个通道的数值、Grey为灰度值(取整)
BGR和RGB在matlabplot中显示
彩色图片为三维矩阵[3,28,28]–>通道数、像素横纵坐标,RGB图片数据值在0-255之间。
灰图为二维矩阵[28,28]–>像素横纵坐标,其数值一般也是在0-255之间,二值图片数据非零即一。RGB

总结

以上就是所有的内容,后续如有新体会,将会继续补充。本文仅仅简单介绍了关于图像处理中的部分图像数据存储的知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值