s1091403 作業4
1112 Digital Image Processing Assignment #4
主題: 影像還原練習
作業說明:
附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜
訊去除)。
(原圖)
(復原後影像)
開發環境:
Windows10
Anaconda
3(22.9.0)
Spyder
5.4.1
Python 3.9
Opencv(4.7.0)
Numpy(1.24.2)
程式片段(程式碼截圖在readme中):
使用cv2.imread(file,cv2. cv2.IMREAD_GRAYSCALE)輸入灰階照片,其中cv2.IMREAD_GRAYSCALE能直接把照片轉換成灰階。設定對應的函式回傳的圖片與顯示的視窗,顯示之後按任意鍵會消失。
使用np.fft.fft2()將原影像透過fft得到f,再透過np.fft.fftshift()把中心點移到中心的位置(fshift),再透過np.abs()、np.log()取絕對值之後再取log再乘上20得到振福(magnitude_spectrum),最後再使用cv2.normalize()進行規一化,使用cv2.NORM_MINMAX將陣列數直線性縮放到指定的範圍,獲得目標圖片(magnitude_spectrum)。
透過cv2.imshow()顯示出當下的振幅圖片(magnitude_spectrum),透過滑鼠點擊標註幾個亮點,標註後會以滑鼠點擊的點為圓心畫出黑色的實心圓形並更新圖片,點擊q或是esc可以退出標註。
將magnitude_spectrum當作mask與fshift相乘過濾訊號,再使用np.fft.ifftshift()把fshift的中心點移回去(notch),再使用np.ifft.fft2()透過ifft轉換回去(iff_img),再透過np.abs()取絕對值(iff_abs),再用cv2.normalize()分進行規一化,使用cv2.NORM_MINMAX將陣列數直線性縮放到指定的範圍 (iff_nor) ,最後再將圖片進行高斯模糊,獲得目標圖片(Result)並輸出。
設定對應的函式回傳的圖片與顯示的視窗,顯示之後按任意鍵會消失。
Demo影片: https://youtu.be/XTe-OPbFetk
留言
張貼留言