输入:
from PIL import Image
from numpy import *
from scipy.ndimage import filters
import matplotlib.pyplot as plt
"""
显示了随着 σ 的增加,一幅图像被模糊的程度。σ 越大,处理后的图像细节 丢失越多
模糊灰度图
"""
im = array(Image.open('1.jpg'))
#im2 = filters.gaussian_filter(im,5)
imc = array(Image.open('1.jpg').convert('L'))
imc2 = filters.gaussian_filter(imc,5)
#反锐化
#im2a = im - im2
imc2a = imc - imc2
im2 = zeros(im.shape)
"""
如果打算模糊一幅彩色图像,只需简单地对每一个颜色通道进行高斯 模糊:
模糊彩色图
"""
for i in range(3):
im2[:,:,i] = filters.gaussian_filter(im[:,:,i],5)
#im2 = uint8(im2) #im2 = array(im2,'uint8')
im2a = im - im2
plt.figure("broiler")
plt.subplot(411)
plt.imshow(im2) #显示的是黄绿图 或者说是热量图 如果需要显示灰度图 需添加参数,cmap = 'gray'
plt.subplot(412)
plt.imshow(im2a)
plt.subplot(413)
plt.imshow(imc2,cmap = 'gray' ) #显示的是黄绿图 或者说是热量图 如果需要显示灰度图 需添加参数,cmap = 'gray'
plt.subplot(414)
plt.imshow(imc2a,cmap = 'gray' )
plt.show()
输出:从上到下依次为彩色高斯模糊灰度图、彩色反锐化图、灰色高斯模糊灰度图、灰色反锐化图
3、除了直方图均衡化,商图像是另一种图像归一化的方法。商图像可以通过除以模糊后的图像I/(I *Gσ) 获得。尝试使用该方法,并使用一些样本图像进行验证。
输入:
from PIL import Image
from numpy import *
from scipy.ndimage import filters
import matplotlib.pyplot as plt
"""
显示了随着 σ 的增加,一幅图像被模糊的程度。σ 越大,处理后的图像细节 丢失越多
模糊灰度图
"""
imc = array(Image.open('1.jpg').convert('L')) #读取灰色图
imc2 = filters.gaussian_filter(imc,5) #灰色图高斯滤波
imc2a = imc - imc2 #灰度图反锐化
imc2as = imc/imc2
im = array(Image.open('1.jpg')) #读取彩色图
im2 = zeros(im.shape)
"""
如果打算模糊一幅彩色图像,只需简单地对每一个颜色通道进行高斯 模糊:
模糊彩色图
"""
for i in range(3):
im2[:,:,i] = filters.gaussian_filter(im[:,:,i],5) #彩色图高斯滤波 三通道
im2a = im - im2 #彩色图反锐化
im2as = im/im2
plt.figure("broiler")
plt.subplot(611)
plt.imshow(im2) #彩色高斯滤波图
plt.subplot(612)
plt.imshow(im2a) #彩色反锐化图
plt.subplot(613)
plt.imshow(im2as) #彩色商图像
plt.subplot(614)
plt.imshow(imc2,cmap = 'gray' ) #灰色高斯滤波图
plt.subplot(615)
plt.imshow(imc2a,cmap = 'gray' ) #灰色反锐化图
plt.subplot(616)
plt.imshow(imc2as) #灰色商图像
plt.show()
输出:
4、使用图像梯度,编写一个在图像中获得简单物体(例如,白色背景中的正方形)轮廓的函数。
输入:
from PIL import Image
from numpy import *
from scipy.ndimage import filters
import matplotlib.pyplot as plt
im = array(Image.open('123456.png').convert('L'),'f')
# Sobel 导数滤波器
imx = zeros(im.shape)
filters.sobel(im,1,imx)
imy = zeros(im.shape)
filters.sobel(im,0,imy)
magnitude = sqrt(imx**2+imy**2)
plt.figure("imx")
plt.imshow(imx, cmap ='gray')
plt.figure("imy")
plt.imshow(imy, cmap ='gray')
plt.figure("magnitude")
plt.imshow(magnitude, cmap ='gray')
plt.figure("imximx")
plt.contour(imx, origin='image')
plt.figure("imyimy")
plt.contour(imy, origin='image')
plt.figure("magnitudemagnitude")
plt.contour(magnitude, origin='image')
plt.show()
输出: