图像基本知识

在彩色图像中,图像可用一个二维矩阵表示,其中每个元素是RGB值,RGB每个占一个字节(8位),总共三个字节,每个字节取值范围是0-2^8(255),也可以说是三通道的,分别是R,G,B,比如(255,0,0)代表红色,(0,255,0)代表绿色,(0,0,255)代表蓝色,其他颜色是这三个颜色的混合。
在灰色图像中,每个元素只有单通道,即只有一个值。

在python中可通过numpy获得图像的RGB值:

from PIL import Image
import numpy as np
a = np.array(Image.open('111.jpg'))
print(a.shape,a.dtype)
>>>(1080, 1440, 3),uint8#图像为1080*1440*3字节,高为1080像素,宽为1440像素,3为通道数。R,G,B用二进制的8位来表示(uint8)。

位深度:
位深度是把通道数转化为位,即3通道位深度为3*8=24位。

分辨率,分辨率即为高像素*宽像素,如1080*1440分辨率

DPI(Dots Per Inch,每英寸像素点数)
通过DPI和像素可以求出图片的实际尺寸,如1080*1440分辨率,DPI96,那么图片实际高为1080/96 = 11.25英寸,宽为1440/96=15英寸。
图片清晰程度不是由像素决定,而是用DPI来决定,DPI越大,清晰度越高。
:鼠标的DPI参数指的是鼠标在桌面上移动1英寸的距离的同时,鼠标光标能够在屏幕上移动多少“点”。越高,移动越快越灵敏。

图像的变换
通过python可以改变图像的RGB值:

from PIL import Image
import numpy as np
a = np.array(Image.open('111.jpg'))
print(a.shape,a.dtype)
b = [255,255,255] - a#利用ndarray数组的广播机制
b = Image.fromarray(b.astype('uint8'))#依旧采用24位色深
b.save('222.jpg')

转换前和转换后的图像为:
转换前:
图像基本知识_第1张图片
转换后:
图像基本知识_第2张图片

将彩色图片变为灰度值图片:

from PIL import Image
import numpy as np
a=np.array(Image.open('111.jpg').convert('L'))#convert('L')是PIL库中将彩色图片转化为灰度图片。
print(a.shape,a.dtype)
b = Image.fromarray(a.astype('uint8'))
b.save('333.jpg')
>>>(1080, 1080) uint8#图像变为二维数组,即通道数为1,成为了灰度图像。

转换后的图像为:
图像基本知识_第3张图片

其他还有很多变换:
比如
区间变换:b = 100/255*a+150
平方变换:b = 255*(a/255)**2

你可能感兴趣的:(图像处理)