计算机视觉自学之路 练习1

1、将一幅图像进行高斯模糊处理。随着σ 的增加,绘制出图像轮廓。
在你绘制出的图中,图像的轮廓有何变化?你能解释为什么会发生这些变化吗?


答:随着 σ 的增加,一幅图像被模糊的程度。σ 越大,处理后的图像细节 丢失越多模糊灰度图 

2、通过将图像模糊化,然后从原始图像中减去模糊图像,来实现反锐化图像掩模操作(http://en.wikipedia.org/wiki/Unsharp_masking)。反锐化图像掩模操作可以实现图像锐化效果。试在彩色和灰度图像上使用反锐化图像掩模操作,观察该操作的效果

输入:

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()  

输出:从上到下依次为彩色高斯模糊灰度图、彩色反锐化图、灰色高斯模糊灰度图、灰色反锐化图

计算机视觉自学之路 练习1_第1张图片

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() 

输出:

计算机视觉自学之路 练习1_第2张图片

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()    

输出:

计算机视觉自学之路 练习1_第3张图片

你可能感兴趣的:(计算机视觉自学之路作业)