一、8位, 16位,24位,32位图片显示原理及对比
我们都知道一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等。这个是从文件格式的角度看,我们抛开文件格式,看图片本身,我们可以分为8位, 16位, 24位, 32位等。
单击右键,属性->详细信息即可查看
图
片
位
深
度
\color{red}{图片位深度}
图片位深度:
8位: 2^8 = 2^2(B) 2^3(G) 2^3® = 256 (256色) 可以总共显示256种颜色
16位: 2^16 = 2^5(B) 2^6(G) 2^5® = 65536 可以总共显示65536种颜色
24位: 2^24 = 2^8(B) 2^8(G) 2^8® = 16777216 可以总共显示16777216种颜色
32位: Alpha透明度 + 24位
当8/16位深度时,单个原始颜色 (R/G/B)最大只能表示为(02^3)/(02^6), 无法满足(0~0xff)的范围,所以显示的颜色范围有限。
当24位深度时,使用24bit显示一个像素点, 由8bit Red 8bit Green 8bit Blue组合颜色而成,每一个原始颜色(R/G/B)都可以完全显示(0~0xff),所以24位及以上,我们就叫做真彩色
当32位深度时,与24位相同,可以显示所有的颜色,同时多了一个透明度值。
同一张图片,不用位深度的表现如下:
24位 & 16位:
8位 & 4位:
1位:(只能显示黑白了)
二、8位深的mask图
原mask:
使用PIL读入转array之后:
img_path = 'F:\\2Affair\毕业论文\\2022.1.3组会PPT\\1.code\CaNet-master\数据集\单mask.png'
img = Image.open(img_path)
np.array(img)
三、判断是否为灰度图
3.1 Ps:图片的通道数、位深度
3.11 单通道
- 灰度图的位深度为1*8=8
- 二值化图像的位深度为1*1=1
单通道图片,每个像素点的数值表示了黑的程度,0表示黑色。
3.12 三通道
三通道是用的最多的一种图片了。三通道图的意思是每个像素点都有3个值表示 。位深度=3*8=24
3.13 四通道
四通道图的意思是每个像素点都有4个值表示 ,所以就是4通道。其中4通道图片表示的是RGBA。RGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha。alpha通道,表示透明度,alpha=0表示全透明,alpha=255表示不透明。采用的颜色是RGB,可以属于任何一种RGB颜色空间。位深度=4*3=32.
PNG是一种使用RGBA的图像格式。
3.14 通道数之间的转化:
# 高通道数向低通道数转化
img_gray=img.convert('L') # 将四通道或三通道图片转化为灰度图
img_white=img.convert('1') # 将四通道,三通道,灰度图转化为二值化图片
#低通道数向高通道数转化,主要涉及到灰度图向RGB的转化。
img_color=img_gray.convert('RGB') # 灰度图向三通道图的转化注意这里输出的图片依然是灰色的,但是位深度已经达到24.
二值化图像
二值图像的意思,就是每个图像当中的每个像素点,只能取0或255,其中0为黑,255为白,即非黑即白。我们将我们的彩色图片转化为灰度图并输出。
我们使用im.convert('1')
来将一张图片转化为二值化的图片。通过转化为np数组看到了二值化图片的真正面目。我们保存这张二值化图片img.save('dd.png')
,查看它的详细信息。
我们可以看到,位深度为1,代表每个像素点用1位表示,即非1即0.这就是二值化图像的全部面目了。
灰度图像
接下来我们查看cat_gray.png
的详细信息:
这印证了理论:灰度图是单通道的,且位深度为8。
参考:实验带你看懂关于灰度图像,二值化图像,彩色图像、图片通道数,位深度的全部内容
3.2 VOC2012中的四种图:
我们所说的灰度图和二值化的图像都是单通道图片。
VOC2012中有如下四种图:
3.21 Binary_map_aug
点击查看属性:
3.22 JPEGImages
点击查看属性:
3.23 SegmentationClass(使用cv2.imread()直接读入是3通道的)
点击查看属性:
3.24 SegmentationObject
点击查看属性: