[討論] 關於頻域和空間域濾波的FFT轉換問題已刪文

看板MATLAB作者 (biker)時間5年前 (2019/10/21 20:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好, 這學期修了一門課關於頻域和空域的傅立葉轉換. 對於跟matlab不太熟的我, 感到相當頭痛. 首先說明一下問題. 手上有一張被加了雜訊的相片, 相片尺寸是1704X2272, 處理過程是把相片轉換到頻域, 然後用濾波處理掉雜訊, 然後再從頻域轉換到空域, 在轉換的過程中, 我遇到困難, 如果我用imfilter函數來執行濾波, 處理後的相片是破碎. 上網找了資料後, 發現以下程式. 跑出來的相片是完整的, 大部份雜訊也被移除了. 但是, 問題來了, 如果改用disk濾波, 那就無法指定hsize大小. 請問有什麼方法可以解決這個問題? 謝謝大家了. PS. 我在國外讀書, 所以可能有些專用名詞無法翻譯成正確的中文, 造成困擾, 請多包涵. 程序如下: clear all; close all; original = imread ('cup.jpg'); original2 = double(original); %Change to double %Extract R G B channels, Transform and shift F_r = fftshift(fft2(original2(:,:,1))); F_g = fftshift(fft2(original2(:,:,2))); F_b = fftshift(fft2(original2(:,:,3))); h = fspecial('gaussian',[1704 2272],3); H = fftshift(fft2(h)); FF_R = H .* F_r ; FF_G = H .* F_g; FF_B = H .* F_b; Irr = fftshift(real(ifft2(ifftshift(FF_R)))); Igg = fftshift(real(ifft2(ifftshift(FF_G)))); Ibb = fftshift(real(ifft2(ifftshift(FF_B)))); output = uint8(cat(3, Irr, Igg, Ibb)); figure; imshow(output); -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 109.228.129.77 (瑞典) ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1571662273.A.1FC.html
文章代碼(AID): #1ThQd17y (MATLAB)
文章代碼(AID): #1ThQd17y (MATLAB)