【问题标题】:MATLAB Program own function for image filteringMATLAB程序自己的图像过滤函数
【发布时间】:2014-04-14 08:17:06
【问题描述】:

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

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

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

我真的是 MATLAB 新手,非常迷茫。

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

谢谢!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    简单的方法。

    生成“图像”:

    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    
    

    现在您可以做一些事情来“矢量化”它。但你认为你能解决这个问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      相关资源
      最近更新 更多