首页 > 解决方案 > 如何使用带圆圈的矩阵作为蒙版?

问题描述

我是 MATLAB 的新手,将其用于一些医学分析。我有一个矩阵,其中包含一个圆形。这是一个示例:

   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   0
   0   0   0   1   0   1   1   0   0   0
   0   0   1   0   0   0   0   1   0   0
   0   1   0   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0
   0   0   1   1   0   1   1   0   0   0
   0   0   0   0   1   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0

这个矩阵是由这条线计算出来的:

egslbr= edge(slbr,'log'); 

哪里 slbr 是我的形象。通过将 egslbr 与我的 slbr 合并,我得到了下面的图像。

在此处输入图像描述

我想取消绿色圆圈之外的所有颜色像素。有没有办法做到这一点?

标签: imagematlabimage-processing

解决方案


您应该能够从您的圆圈中创建一个蒙版(假设它是一个完整的圆圈——您提供的示例矩阵中有一个间隙,这使得这变得更加困难,但我会假设这是一个错误)。这是一个简单的方法:

mask = ~cumsum(egslbr) | ~cumsum(egslbr,'reverse');
slbr(mask) = 0;

这应该将圆外的每个像素(包括圆的边缘)设置为零。


推荐阅读