MATLAB程序拥有自己的图像过滤功能

时间:2014-03-10 23:30:50

标签: matlab

我正在寻找实现自己的matlab函数,可用于使用3x3内核计算图像过滤。

它会是这样的: “out = myfilter(input_image,my_3x3_kernel)” 其中输出大小与输入图像大小相同。

但是,我不应该使用任何内置的图像过滤功能,如imfilter(),filter2()。 conv2()等

我是MATLAB的新手,我很失落。

我还被告知输入过滤器内核的固定大小为5x5,但我可以对图像使用零填充?不知道这意味着什么,所以一点帮助将帮助我更好地理解这一点。

谢谢!

1 个答案:

答案 0 :(得分:3)

简单的方法。

生成“图片”:

n = 50;
myImage = rand(n,n);
myBiggerImage = zeros(n+2, n+2);
myBiggerImage(2:end-1, 2:end-1) = myImage; % padded copy of the image
myKernel = [1 2 1; 2 4 2; 1 2 1]; % for example - this is a 3x3 kernel
myFilteredImage = zeros(n,n);  % space for the result

现在我们需要以某种方式增加“正确”的元素。无聊的方式是:

for ii = 1 to n
  for jj = 1 to n
    s = 0;
    for kk = 1 to 3
      for ll = 1 to 3
        s = s + myBiggerImage(ii+kk, jj+ll) * myKernel(kk,ll);
      end
    end
    myFilteredImage(ii,jj) = s;
  end
end    

现在你可以做一些事情来“矢量化”这个。但是你认为你能想出那部分吗?