2017-05-01 24 views
3

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

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

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

回答

1

你的代码的问题是,你只是设置图像的元素为零。相反,您只应将感兴趣的体素传递给grayscale算法。例如,如果BW是在投资回报为零,可以说

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

这将只选择要用于阈值计算的元素。据简写

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

此表达式的第二形式创建与索引的中间阵列 - 这是通常比使用逻辑索引(这是这种指标被调用)慢。

+1

有关更多信息,请参阅[逻辑索引](https://nl.mathworks.com/help/matlab/math/matrix-indexing.html#bq7egb6-1)。 – m7913d

0

@SimaGuanxing,还可以通过以下实现相同:

级别= graythresh(I(BW));

但是你必须确保BW是一个与我的逻辑值相同的矩阵。

相关问题