![](/img/trans.png)
[英](Matlab) Performance of Gaussian filtering using imfilter on a binary image
[英]Matlab - Image Filtering with a 5X5 Filter without imfilter function
我試圖修改代碼( 在matlab中實現IMFILTER )以使用5X5高斯濾波器對圖像進行濾波。 出了點問題,但我找不到。
gauss_kernel = fspecial('gaussian',5,2);
function [result] = evc_filter(input, kernel)
rsize = size(input);
r = zeros(rsize);
original=padarray(input,[2,2]);
for i = 3:rsize(1)+2
for j = 3:rsize(2)+2
temp = original(i-2:i+2,j-2:j+2) .* kernel;
r(i-2,j-2) = sum(temp(:));
end
end
result=r;
end
如果使用imshow顯示圖片,則使用imfilter函數時看起來會有所不同。 有人可以幫忙嗎?
首先,將圖像轉換為兩倍,然后執行其余步驟。 請參閱下面的示例代碼:
function imfilt()
img = imread('one.jpg');
img = double(img);
[r,c,z] = size(img);
pad = 4;
nimg = zeros(r+pad,c+pad,z);
nimg(pad/2+1: r+pad/2, pad/2+1: c+pad/2,:) = img;
h = fspecial('gaussian',5,2);
res = zeros(r,c,z);
for i = pad/2+1 : r+pad/2
for j = pad/2+1 : c+pad/2
tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,1).*h;
res(i-pad/2,j-pad/2,1) = sum(tmp(:));
tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,2).*h;
res(i-pad/2,j-pad/2,2) = sum(tmp(:));
tmp = nimg(i-pad/2:i+pad/2,j-pad/2:j+pad/2,3).*h;
res(i-pad/2,j-pad/2,3) = sum(tmp(:));
end
end
imshow(uint8(res),[]);
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.