【问题标题】:Image Cropping with a Matrix Filter使用矩阵过滤器进行图像裁剪
【发布时间】:2013-03-13 20:16:14
【问题描述】:

经过一些处理,我得到了一张 BMP 图像的黑白蒙版。

现在,我只想显示蒙版中 BMP 图像的白色部分。

我是 matlab 的新手(但我喜欢它),并且我尝试了很多从谷歌那里学到的矩阵技巧,但是没有一个有效(或者我做得不对..)

请给我一些建议。

提前感谢您的宝贵时间。

【问题讨论】:

    标签: image matlab


    【解决方案1】:

    假设蒙版与图像大小相同,那么您可以这样做(对于灰度图像):

    maskedImage=yourImage.*mask %.* means pointwise multiplication. 
    

    对于彩色图像,在三个通道上做同样的操作:

    maskedImage(:,:,1)=yourImage(:,:,1).*mask 
    maskedImage(:,:,2)=yourImage(:,:,2).*mask 
    maskedImage(:,:,3)=yourImage(:,:,3).*mask 
    

    然后要可视化图像,请执行以下操作:

    imshow(maskedImage,[]);
    

    【讨论】:

    • 非常感谢帕拉格。正是我所需要的
    【解决方案2】:

    使用 repmatbsxfun 两个 matlab 函数之一,可以在一行代码中对具有任意数量通道的源图像执行屏蔽操作。

    假设您的图像I 的大小为M-by-N-by-C 并且掩码的大小为M-by-N,那么我们可以使用任一repmat 来获取掩码图像

    I2 = I .* repmat(mask, [1, 1, 3]);
    

    或使用 bsxfun

    I2 = bsxfun(@times, I, mask);
    

    这些都是非常方便的函数,在一般情况下对代码进行矢量化时非常有用。我还建议您查看这个问题的答案:In Matlab, when is it optimal to use bsxfun?

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2012-08-13
      • 1970-01-01
      相关资源
      最近更新 更多