2017-05-01 20 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是一個與我的邏輯值相同的矩陣。

相關問題