s1082046 作業 4
主題: 影像還原練習
附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜訊去除)。一、 開發環境:
l Windows 11
l
Visual Studio 2022 C++
l
OpenCV 4.7.0
二、 程式功能:
(一) 主程式
Step1:
用imread()讀入灰階圖片”image4.png”
Step2: 將圖片resize成適當大小顯示(在此將長寬縮小至原圖的一半)
Step3: 利用imshow()顯示原圖
Step4: 用作業3方法,以dft()副程式獲取原圖片頻譜圖,並用dft_shift()副程式重新排列傅立
葉轉換後圖像象限,使原點位於頻譜圖中心
Step5: 觀察原圖片頻譜圖,發現除了頻譜中心外,另有6個峰值,在此以滑鼠點選
setMouseCallback()頻譜圖峰值來獲得峰值所在座標
(二) 副程式(以陷波濾波概念處理峰值,去除水平雜訊)
Step1: 獲得滑鼠點選的座標點,利用putText()顯示於頻譜圖上(設定字的大小、粗細、顏
色),顯示如下圖
Step2:
利用vector<Point>
p 儲存六個峰值點
(p.push_back(Point(x, y)))
Step3: 當6個峰值點選擇完畢,關掉點選視窗(destroyWindow(" "))
Step4: 設計notch filter,在六個峰值座標畫上黑色實心圓circle()作為遮罩,經過notch filter後
的頻譜如下圖
Step5: 將notch filter後的頻譜經過IDFT(作法如作業3),復原去除雜訊之圖像
notch
filter後的頻譜
留言
張貼留言