四.代码 准备第三方库 安装 numpy
mkl
scipy
matplotlib
scikit-image 下载SKIMAGE的全部测试图片 pip install pooch
python
from skimage.data import download_all
download_all() 1. 采样(修改radio) from skimage import data
from matplotlib import pyplot as plt
import numpy as np #导入所需类包
image=data.coffee() #载入测试图像
print(image.shape) #显示图像原始大小
print(type(image)) #显示图像类型
ratio=20 #设置采样比率(此处修改)
image1=np.zeros((int(image.shape[0]/ratio),
int(image.shape[1]/ratio),image.shape[2]),dtype='int32')#设置采样后图像大小
for i in range(image1.shape[0]):
for j in range(image1.shape[1]):
for k in range(image1.shape[2]):#对图像进行遍历
delta=image[i*ratio:(i+1)*ratio,j*ratio:(j+1)*ratio,k]#获取需要采样图像块
image1[i,j,k]=np.mean(delta)#计算均值,并存入结果图像
plt.imshow(image1)#打印采样后图像图像
plt.show()
2. 量化(修改radio) from skimage import data
from matplotlib import pyplot as plt
image=data.coffee() #载入测试图像
ratio=128 #设置量化比率
for i in range(image.shape[0]):
for j in range(image.shape[1]):
for k in range(image.shape[2]):
image[i][j][k]=int(image[i][j][k]/ratio)*ratio
#对图像每个像素进行量化
plt.imshow(image)#打印采样后图像图像
plt.show()
3. gamma调整(修改adjust_gamma方法的第二个参数) from skimage import data,io,exposure
from matplotlib import pyplot as plt
#读入图像
image=data.coffee()
#分别计算gamma=0.2,0.67,25时的图像
image_1=exposure.adjust_gamma(image,0.1)
image_2=exposure.adjust_gamma(image,0.67)
image_3=exposure.adjust_gamma(image,25)
#分别展示原图及结果图像
plt.subplot(2,2,1)
plt.title('gamma=1')
io.imshow(image)
plt.subplot(2,2,2)
plt.title('gamma=0.2')
io.imshow(image_1)
plt.subplot(2,2,3)
plt.title('gamma=0.67')
io.imshow(image_2)
plt.subplot(2,2,4)
plt.title('gamma=25')
io.imshow(image_3)
plt.show()
4. 提取色彩通道 from skimage import data,io
from matplotlib import pyplot as plt
#读入图像
image=data.coffee()
#分别取出红、绿、蓝三个颜色通道
image_r=image[:,:,0]
image_g=image[:,:,1]
image_b=image[:,:,2]
#分别展示三个通道
plt.subplot(2,2,1)
io.imshow(image)
plt.subplot(2,2,2)
io.imshow(image_r)
plt.subplot(2,2,3)
io.imshow(image_g)
plt.subplot(2,2,4)
io.imshow(image_b)
plt.show()
5. 通道互换 from skimage import data,io
from matplotlib import pyplot as plt
#读入图像
image=data.coffee()
#分别取出红、绿、蓝三个颜色通道
image_r=image[:,:,0]
image_g=image[:,:,1]
image_b=image[:,:,2]
#红色和蓝色互换
temp=image_r
image_r=image_b
image_b=temp
#将互换后的通道颜色重新赋值给图像
image[:,:,0]=image_r
image[:,:,2]=image_b
#图像显示
plt.imshow(image)
plt.show() 6. 图像加减 from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=12)
from skimage import data
from matplotlib import pyplot as plt
moon=data.moon()
camera=data.camera()
image_minus=moon-camera
image_plus=moon+camera
plt.set_cmap(cmap='gray')
plt.subplot(2,2,1)
plt.title('月亮图像',fontproperties=font_set)
plt.imshow(moon)
plt.subplot(2,2,2)
plt.title('摄影师图像',fontproperties=font_set)
plt.imshow(camera)
plt.subplot(2,2,3)
plt.title('月亮加摄影师图像',fontproperties=font_set)
plt.imshow(image_plus)
plt.subplot(2,2,4)
plt.title('月亮减摄影师图像',fontproperties=font_set)
plt.imshow(image_minus)
plt.show() 7. 直方图均衡 from skimage import data,exposure
import matplotlib.pyplot as plt
img=data.moon()
plt.figure("hist",figsize=(8,8))
arr=img.flatten()
plt.subplot(221)
plt.imshow(img,plt.cm.gray) #原始图像
plt.subplot(222)
plt.hist(arr, bins=256, density=1,edgecolor='None',facecolor='red',stacked=True) #原始图像直方图
img1=exposure.equalize_hist(img)
arr1=img1.flatten()
plt.subplot(223)
plt.imshow(img1,plt.cm.gray) #均衡化图像
plt.subplot(224)
plt.hist(arr1, bins=256, density=1,edgecolor='None',facecolor='red',stacked=True) #均衡化直方图
plt.show() |