直接上代码
function [ imout ] = ImageFilter( imin, operator)
[m,n,g] = size(imin);
[a,b] = size(operator);
imout = zeros(m,n,g);
if (mod(a,2) ~= 1) || (mod(b,2) ~= 1)
return;
end
imin = im2double(imin);
imout = im2double(imout);
a = fix(a/2);
b = fix(b/2);
for i = 1:m
for j = 1:n
for k = -a:a
for l = -b:b
if ( ((k+i) >= 1) && ( (k+i) <= m) && ( (j+l) >= 1) && ( (j+l) <= n) )
imout(i,j,:) = imout(i,j,:) + imin(k+i,j+l,:)*operator(k+a+1,l+b+1);
end
end
end
end
end
测试代码
clc;
clear;