欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)圖像降噪

 更新時間:2022年08月05日 10:29:54   作者:名劍求瑕  
這篇文章主要為大家詳細介紹了python實現(xiàn)圖像降噪,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python實現(xiàn)圖像降噪的具體代碼,供大家參考,具體內(nèi)容如下

任務描述

背景

圖像在數(shù)字化和傳輸?shù)冗^程中會產(chǎn)生噪聲,從而影響圖像的質(zhì)量,而圖像降噪技術(shù)可以有效地減少圖像中的噪聲。如下圖所示,左圖是一幅包含噪聲的圖像(圖中的黑點即為噪聲),右圖是降噪后的結(jié)果(黑點顯著減少)。

中值濾波是一種常用的圖像降噪方法,對于一幅帶噪聲的圖像 1(設分辨率為 w×h),降噪方法如下:

1)將圖像1轉(zhuǎn)換成灰度圖,仍稱為圖像1;
2)新建圖像2,圖像2為灰度圖,分辨率與圖像1相同;
3)對于圖像 1 中坐標為 (x,y) 的像素 p,求 p 的中值 c,然后將圖像 2 中 (x,y) 處的像素值設置成 c,其中,1≤x≤w−2、1≤y≤h−2;
4)保存圖像 2,圖像 2 即存放了降噪后的結(jié)果。

其中,第 3 步要計算 (x,y) 處像素 p 的中值 c,計算方法如下:

1)選取以 p 為中心的 3×3 圖像區(qū)域,如上圖所示,每個小方格代表一個像素,數(shù)字表示像素的灰度值,像素 p 的坐標為 (x,y),則選取的圖像區(qū)域為黃色底紋區(qū)域;
2)對步驟 1 中選取的 9 個像素的顏色值進行升序排列,如上圖所示例子排序后為:11、12、13、14、15、16、17、18、99;
3)在步驟 2 得到的排序結(jié)果中,排在最中間一個值即為中值 c,如上圖所示例子中像素 p 的中值為 15。

任務

本關任務是補全程序,使其能進行圖像降噪,說明如下:
1)排序操作可利用列表中的sort函數(shù)進行;
2)關于代碼的相關說明見注釋。

相關知識

略。

編程要求

在 Begin-End 區(qū)間補全代碼,具體要求見上。

測試說明

測試集正確結(jié)果如下:

(1  , 1 ) -> 255
(72 , 42) -> 191
(120, 45) -> 127
(164, 49) -> 89
(235, 49) -> 38

你的圖像與正確答案相同!

說明如下:

1)系統(tǒng)會調(diào)用你編寫的median函數(shù),并以“像素坐標 -> 中值”的格式打印結(jié)果,如測試集第 1 行的(1 , 1 ) -> 255表示:(1,1) 處像素的中值為255;
2)此外,系統(tǒng)會檢查程序生成的圖像文件,若正確則在測試集最后一行打印你的圖像與正確答案相同!。

開始你的任務吧,祝你成功!

from PIL import Image


# 求圖像img中(x,y)處像素的中值c
def median(img, x, y):
? ? ########## Begin ##########
? ? L = []
? ? xl = [x-1,x,x+1]
? ? yl = [y-1,y,y+1]
? ? for i in xl:
? ? ? ? for j in yl:
? ? ? ? ? ? gray = img.getpixel((i, j)) ?# 取出灰度值
? ? ? ? ? ? L.append(gray)
? ? L.sort()
? ? c = L[4]
? ? ########## End ##########
? ? return c


# 對圖像文件1進行降噪,并將結(jié)果保存為圖像文件2
# 圖像文件1和2的路徑分別為path1和path2
def denoise(path1, path2):
? ? img1 = Image.open(path1) ?# 圖像1
? ? img1 = img1.convert('L') ?# 將圖像1轉(zhuǎn)換為灰度圖
? ? w, h = img1.size
? ? img2 = Image.new('L', (w, h), 'white') ?# 圖像2
? ? for x in range(1, w - 1):
? ? ? ? for y in range(1, h - 1):
? ? ? ? ? ? c = median(img1, x, y) ?# 求中值
? ? ? ? ? ? img2.putpixel((x, y), c) ?# 將灰度設置為中值
? ? img2.save(path2)


path1 = 'step4.bmp' ?# 帶噪聲的圖像
path2 = 'step4_2.bmp' ?# 降噪后的圖像
denoise(path1, path2)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論