一、图像类型的转换
1、输出原图像的数据类型
print(img.dtype.name)
img:读取图像的路径
输出结果:
.2 2、float转换为uint8
1.导入需要用的库 :img_as_ubyte函数将float转换为uint8类型
from skimage import img_as_ubyte
import numpy as np
2.创建一个数组,值内包括浮点型,类型设置为float
img = np.array([0,0.5,1],dtype = float)
print(img.dtype.name)
3.将float转换为uint8类型
dst = img_as_ubyte(img)
print(dst.dtype.name) #输出出来
运行结果:
3、uint8转换为float
1.导入 img_as_float函数 :将uint8转换为float类型
from skimage import img_as_float
import numpy as np
2.读取这个路径下的图像
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
3.输出其类型
print(img.dtype.name)
# print(img)
4.转换类型
dst = img_as_float(img)
print(dst.dtype.name)
运行结果:
- 对图像进行归一化处理
二、线性归一化
# 线性归一化
1.导入必需的库
from skimage import io
import numpy as np
2.读取图像
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
3.通过min(img)和max(img)获取图像像素点的最大值和最小值
normalized_image=(img-np.min(img))/(np.max(img)-np.min(img))
4.展示出 线性归一化后的图像
io.imshow(normalized_image)
5.输出处理后的像素值
print(normalized_image)
6.输出处理后的图像的数据类型
print(normalized_image.dtype.name)
处理后的像素值会在0~1之间
运行结果:
像素值
2、均值方差归一化
import numpy as np
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
同理:线性归一化 公式
image = (img-np.min(img))/(np.max(img)-np.min(img))
io.imshow(image)
运行结果:
三、直方图均衡化
17.3.1 含义
exposure模块提供了一些图像增强和处理的函数,包括直方图均衡化;用于增强图像的对比度,使图像中的像素值更均匀分布,从而提升图像的视觉效果
# 直方图均衡化
from skimage import exposure,io
image = io.imread(r"C:\Users\86130\Desktop\111.jpg")
调用exposure包下的equalize_hist方法
equalized_image = exposure.equalize_hist(image)
io.imshow(equalized_image)
运行结果:
四、颜色空间转换
from skimage import io,data,color
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
a = color.rgb2hsv(img)
io.imshow(a)
hsv介绍:h------色相 ; s------饱和度 ; v------色彩的亮度 ;
运行结果:
原图 转换后
1.hsv转换rgb
d = color.hsv2rgb(img)
运行结果:
2.rgb转换lab
from skimage import io,data,color
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
b = color.rgb2lab(img)
io.imshow(b)
Lab介绍:L------亮度 ; a------从绿色到红色的分量 ; b------从蓝色到黄色的分量 ;
运行结果:
lab转换rgb
e = color.lab2rgb(img)
运行结果:
3.gray转换rgb
无法转换,会出现错误,rgb图像有三个维度,转变为灰度图像后只剩下一个维度,所以出现错误!!!
3.1使用convert_colorspace函数将rgb转换成hsv
from skimage import io,data,color
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
hsv = color.convert_colorspace(img,'rgb','hsv')
io.imshow(hsv)
运行结果:
18.4.1使用convert_colorspace函数将hsv转换成rgb
rgb = color.convert_colorspace(img,'hsv','rgb')
运行结果:
使用convert_colorspace函数将rgb转换成lab
无法转换,出现错误:被转换类型只有下图这些,不包含其他类型
五、根据不同的灰度值分成三个区域,并用默认颜色表示
1.导入模块,读取图像
from skimage import io,data,color
import numpy as np
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
2.将原图像进行灰度处理
gray = color.rgb2gray(img)
3.获取灰度图像的行和列
rows,cols=gray.shape
4.生成与灰度图像行列相同的全0数组
labels = np.zeros([rows,cols])
5.遍历灰度图像的行和列
for i in range(rows):
for j in range(cols):
6.如果[i,j]位置的灰度值小于0.4,将对应位置标记为0
if (gray[i,j]<0.4):
labels[i,j] = 0
7.如果[i,j]位置的灰度值大于0.4小于0.75,将对应位置标记为1
elif(0.4<gray[i,j]<0.75):
labels[i,j]=1
8.否则,标记为2
else:
labels[i,j]=2
9.使用label2rgb生成新的图像,存在变量dst1中
dst1 = color.label2rgb(labels)
io.imshow(dst1)
运行结果:
六、创建主窗口与子图
1.导入模块,读取图像
import matplotlib.pyplot as plt
img = io.imread(r"C:\Users\86130\Desktop\111.jpg")
2.使用matplotlib库中的figure函数创建一个图像窗口,设置窗口名称为img,大小为(8, 8)
plt.figure(num='img',figsize=(8,8))
3.在窗口创建子图,2行2列,在子图第1个位置放img(从左上角开始编号)
plt.subplot(2,2,1) #参数(行,列,子图位置)
plt.title('origin image') #设置窗口标题
plt.imshow(img)
4.在子图第二个位置放(红色)R通道处理后的图像;plt.cm.gray显示的图像以灰度的方式呈现
plt.subplot(2,2,2)
plt.title('R image')
plt.imshow(img[:,:,0],plt.cm.gray)
plt.axis('off') #不显示坐标
5.在子图第三个位置放(绿色)G通道处理后的图像
plt.subplot(2,2,3)
plt.title('G image')
plt.imshow(img[:,:,1],plt.cm.gray)
plt.axis('off')
- 在子图第四个位置放(蓝色)B通道处理后的图像
plt.subplot(2,2,4)
plt.title('B image')
plt.imshow(img[:,:,2],plt.cm.gray)
plt.axis('off')
- 放在最后,展示图形
plt.show()
运行结果: