我必須: 閱讀'cameraman.tif'並將其轉換爲雙精度,然後使用高通巴特沃斯濾波器(頻域),截止頻率40 px和等級5對其進行濾波。Binarize (等級0.1,高通)。找出距離最近'真實'像素上方20像素的所有像素。統計孤立地區及其地區的數量。這是對的嗎?Butterworth高通濾波器,Matlab
img = imread('cameraman.tif');
img = double(img)/255;
fft = fftshift(fft2(img));
N = 5; D0 = 40;
D = zeros(256); H = zeros(256);
for kz=1:256
for kx=1:256
%Butterworth
D(kz,kx) = sqrt((kz-128)^2 + (kx-128)^2);
H(kz,kx) = 1/(1+(D(kz,kx)/D0)^2*N);
end
end
filtered = fft.*(1-H);
result = ifft2(ifftshift(filtered));
figure; subplot(121); imshow(img); title('Oryginalny');
subplot(122); imshow(result); title('Przefiltrowany');
binarized = im2bw(real(result), 0.1);
ilosc= bwdist(binarized)>20 ;
ilosc=sum(ilosc(:))
figure; imshow(binarized); title('Zbinaryzowany');
w = binarized == 1;
b = binarized == 0;
biale = sum(w(:));
czarne = sum(b(:));
[blab, blobs] = bwlabel(binarized);
您是否收到任何錯誤? – Trilarion 2014-09-02 16:00:47
不,它工作,它給了我像素的數量,但我不確定數字是否正確。我非常確定過濾器本身(我過去做過的那部分),但我是新來的這個bwdist的東西:) – user3748496 2014-09-02 16:09:42
我只使用bwdist來計算比最接近真實像素高20px的像素。它是否正確? – user3748496 2014-09-02 17:16:19