【问题标题】:How to apply image processing algorithms on the ROI labeled based on a binary mask in Matlab?如何在 Matlab 中基于二进制掩码标记的 ROI 上应用图像处理算法?
【发布时间】:2017-09-29 01:19:35
【问题描述】:

我有一个标记图像前景的二进制掩码。许多图像处理算法,如直方图均衡或 otsu 方法处理整个图像。我的问题是如何应用这些图像处理算法,以便它们只能处理我的二进制掩码标记的区域?

例如,I 是灰度图像,BW 是二进制掩码。下面的代码仍然处理整个图像,而不是 BW 掩码标记的特定区域。

level = graythresh(I.*BW);
BW = im2bw(I.*BW,level);

【问题讨论】:

    标签: matlab mask roi


    【解决方案1】:

    您的代码的问题在于您只是将图像的元素设置为零。相反,您应该只将感兴趣的体素传递给grayscale 算法。例如,如果BW 在 ROI 中不为零,则可以说

    level = graythresh(I(BW>0));
    

    这将只选择您想要进行阈值计算的元素。它是

    的简写
    level = graythresh(I(find(BW>0)));
    

    表达式的第二种形式创建一个带有索引的中间数组 - 这通常比使用逻辑索引(这种索引被称为)要慢。

    【讨论】:

    【解决方案2】:

    @SimaGuanxing,您也可以通过以下方式实现:

    level = graythresh(I(BW));

    但是您必须确保 BW 是一个与 I 大小相同的矩阵,其中逻辑值作为条目。

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2018-07-21
      • 2020-04-13
      • 2018-09-27
      • 2016-04-02
      • 2019-02-13
      • 1970-01-01
      • 2014-05-02
      • 2015-10-11
      相关资源
      最近更新 更多