常见的图像归一化方法
线性归一化(最常见)
将图像的像素值线性映射到[0,1]范围内。
import numpy as np
from skimage import io,data
image=io.imread('c.jpg')
normalized_image=(image-np.min(image))/(np.max(image)-np.min(image))
io.imshow(image)
io.show()
print(image) #打印像素值
显示效果:
均值方差归一化
将图像的像素值减去均值后,除以标准差,使得图像的均值为0,标准差为1。这样可以降低图像数据的偏差和差异性。
import numpy as np
from skimage import io,data
image=io.imread('c.jpg')
image = (image - np.min(image)) / (np.max(image) - np.min(image))
io.imshow(image)
io.show()
print(image)
显示效果:
直方图均衡化
通过重新分布图像像素的直方图,增强图像的对比度和细节。这在图像增强和图像识别等领域非常有用。
from skimage import exposure
from skimage import io,data
image=io.imread('c.jpg')
equalized_image = exposure.equalize_hist(image)
io.imshow(image)
io.show()
print(image)
显示效果:
图像绘制
Cmap颜色谱
颜色图谱 描述
autumn 红-橙-黄
bone 黑-白,x线
cool 青-洋红
copper 黑-铜
flag 红-白-蓝-黑
gray 黑-白
hot 黑-红-黄-白
hsv hsv颜色空间, 红-黄-绿-青-蓝-洋红-红
inferno 黑-红-黄
jet 蓝-青-黄-红
magma 黑-红-白
pink 黑-粉-白
plasma 绿-红-黄
prism 红-黄-绿-蓝-紫-...-绿模式
spring 洋红-黄
summer 绿-黄
viridis 蓝-绿-黄
winter 蓝-绿
函数格式
实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据。
import matplotlib.pyplot as plt
plt.imshow(img, cmap=None)
X: 要绘制的图像或数组。
imshow()函数格式为:
matplotlib.pyplot.imshow(X, cmap=None)
用figure函数和subplot函数分别创建主窗口与子图
分开同时显示图片的三个通道
import matplotlib.pyplot as plt
from skimage import data
import matplotlib.pyplot as plt
img=io.imread('c.jpg')
plt.figure(num='c.jpg',figsize=(8,8)) #创建窗口设置大小
将窗口分为两行两列四个子图,显示四幅图片
plt.subplot(2,2,1) #第一张子图片
plt.title('A') #第一张图片名为A
plt.imshow(img) #绘制第一张图片
plt.subplot(2,2,2) #第二张子图片
plt.title('B') #第二张图片名为B
plt.imshow(img[:,:,0],plt.cm.gray) #绘制第二张图片并灰度化
plt.subplot(2,2,3) #第三张子图片
plt.title('C') #第三张图片名为C
plt.imshow(img[:,:,1],plt.cm.gray) #绘制第三张图片并灰度化
plt.subplot(2,2,4) #第四张子图片
plt.title('D') #第四张图片名为D
plt.imshow(img[:,:,2],plt.cm.gray) #绘制第四张图片并灰度化
plt.subplot(x,y,z)中x代表行数y代表列数z代表所处位置
figsize: 设置窗口大小。
显示效果: