導讀
去除垂直、水平等條紋雜訊的圖像處理步驟,附詳細代碼。
空間域的處理方法比較多,比如傅里葉變換和小波變換等。頻域方法處理的一般步驟是:
① 將圖像從空間域轉換到頻域;
②在頻域處理(挑選或剔除特定的頻段);
③頻域處理后再轉換到空間域
傅里葉變換頻域處理步驟:
① 圖像做傅里葉變換--轉換到頻域;
②在頻域處理(對頻譜圖像處理,剔除不需要的頻段);
③ 反傅里葉變換--轉換到空間域;
④ 如果不能一次得到最終效果,可能還需要添加一些blob分析方法
傅里葉變換頻域圖特點:
傅里葉變換理論與公式這里不做介紹,大家有興趣自行搜索。先看下如下圖片:
對應的使用fft_image()轉換后的傅里葉頻譜圖像
read_image (Image, 'C:/Users/3252314061/Desktop/1.png') fft_image (Image, ImageFFT)
原圖水平方向上變化更多,所以頻譜圖水平方向更亮。豎直方向變化不比水平方向多,所以較水平方向暗。下圖正好相反:
傅里葉變換后的頻譜圖:
原圖豎直方向上變化更多,所以頻譜圖豎直方向更亮。水平方向變化不比豎直方向多,所以較豎直方向暗。
fft_image()變換后頻譜圖像中心為低頻部分,越往邊緣是高頻部分。
再看看下面的圖像,頻譜圖變化也是沿著圓形的各個方向,反應像素灰度值的變化情況:
傅里葉變換去除圖像條紋雜訊步驟:
圖1--豎直條紋雜訊:
由觀察可知,這幅圖像有很多豎直條紋雜訊,沿水平方向變化較大,那么頻譜圖水平方向應該較亮,用fft_image()變換后效果:
那么如果我們想去除豎直條紋,就可以將頻譜圖中水平的亮線條區域抹掉(用灰度值0填充),如下:
然后fft_image_inv()反傅里葉變換看下效果:
fft_image_inv (ImageResult, ImageFFTInv)
圖2-水平條紋雜訊:
由觀察可知,這幅圖像有很多水平條紋雜訊,沿豎直方向變化較大,那么頻譜圖豎直方向應該較亮,用fft_image()變換后效果:
那么如果我們想去除水平條紋,就可以將頻譜圖中豎直的亮線條區域抹掉(用灰度值0填充),如下:
然后fft_image_inv()反傅里葉變換看下效果:
圖3-水平垂直條紋雜訊:
傅里葉頻譜圖:
水平和豎直方向均抹除:
反傅里葉變換效果:
完整代碼(Halcon實現):
read_image (Image, './imgs/5.PNG') rgb1_to_gray (Image, GrayImage) fft_image (GrayImage, ImageFFT) gen_rectangle1 (ROI_0, 2.97368, 217.535, 179.635, 227.458) gen_rectangle1 (TMP_Region, 209.41, 217.535, 387.064, 226.465) union2 (ROI_0, TMP_Region, ROI_0) gen_rectangle1 (TMP_Region, 193.53, 234.404, 203.455, 374.316) union2 (ROI_0, TMP_Region, ROI_0) gen_rectangle1 (TMP_Region, 193.53, 74.6458, 204.447, 207.612) union2 (ROI_0, TMP_Region, ROI_0) paint_region (ROI_0, ImageFFT, ImageResult, 0, 'fill') fft_image_inv (ImageResult, ImageFFTInv)
如果是彩色圖,就先將彩圖通道分離,在每個通道做傅里葉變換處理,然后反變換后合并通道即可。
審核編輯:劉清
-
FFT
+關注
關注
15文章
434瀏覽量
59367 -
小波變換
+關注
關注
2文章
183瀏覽量
29742 -
傅里葉變換
+關注
關注
6文章
441瀏覽量
42592
原文標題:實踐教程|傅里葉變換去除圖像條紋雜訊實現步驟
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論