[討論] 關於頻域和空間域濾波的FFT轉換問題已刪文
大家好, 這學期修了一門課關於頻域和空域的傅立葉轉換. 對於跟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
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章