现代数字图像处理作业———对lena图像进行简单处理
作業題目:
對lena圖像加入椒鹽噪聲,強度為30%,分別采用均值濾波,中值濾波進行處理。并討論不同尺度的模板對結果的影響。
作業代碼及內容展示和分析:
##lena加入椒鹽噪聲效果圖
1、噪聲強度為5%
2、噪聲強度為30%
?
代碼展示:
import cv2 as cv
import random as rd
import matplotlib.pyplot as plt
lena = cv.imread('lena.jpeg',0)
def saltNoise_image(im,var):?????????????????? #生成椒鹽噪聲圖函數
??? w,h = im.shape
??? saltNoiseNum = int(w*h*var)??????????????? #噪聲總的點數
??? for i in range(saltNoiseNum):????????????? #在圖像找n個點加入噪聲
??????? x = rd.choice(range(w))
??????? y = rd.choice(range(h))
??????? if im[x,y] < 127:
?????????? im[x,y] = 255
??????? else:
?????????? im[x,y] = 0
??? return im
def filterImage(im):?????????????????????? ???#濾波函數
??? im = cv.cvtColor(im,cv.COLOR_BGR2RGB)
??? ksize = [3,5,7]
??? im_filter = [[cv.blur(im,(i,i)),?????????? #均值濾波
?????????????? cv.medianBlur(im,i),?????????? #中值濾波
?????????????? cv.GaussianBlur(im,(i,i),0,0)] #高斯濾波
?????????????? ?for i in ksize]
??? plt.figure('濾波結果')???????????????????? #創建窗口
??? x = 0
??? for i in range(3):
??????? for j in range(3):
?????????? x += 1
?????????? plt.subplot(3,3,x)???????????????? #生成9個子窗口
?????????? plt.imshow(im_filter[j][i]),plt.axis('off') #顯示圖像
??? plt.tight_layout(0,0.1,0)
??? plt.show()
new_lena = saltNoise_image(lena,0.3)?????????? #傳入圖片和噪聲比例
filterImage(new_lena)????????????????????????? #濾波
(1)采用卷積子大小為[3,5,7],噪聲強度為5%,采用中值、均值、高斯濾波,其效果圖如下:
(2)采用卷積子大小為[3,5,7],噪聲強度為30%,采用中值、均值、高斯濾波,其效果圖如下:
分析:
??? 當對lena圖像加入脈沖噪聲時,不管強度是5%還是30%,所采用的中值和高斯濾波的效果都不理想,而采用中值濾波的效果卻有明顯的改善;且當卷積由3→5→7增大時,去除噪聲干擾的效果越好,但是相對而說圖像變得更加的模糊,丟失了更多的細節。由于對lena圖像加入脈沖噪聲導致原圖的結構遭到了破壞,高斯和中值濾波都是線性濾波器,會帶入很多的噪聲進行計算,從而使得效果變得越加的不理想,而中值濾波是非線性濾波器,對噪聲的依賴較低,所以它的濾波效果要明顯的優于另外兩種的濾波效果。
總結
以上是生活随笔為你收集整理的现代数字图像处理作业———对lena图像进行简单处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ空间自动点赞代码
- 下一篇: 0DAY和warez