2017-05-01 4 views
3

私は画像の前景を表すバイナリマスクを持っています。ヒストグラム等化法やオツー法などの多くの画像処理アルゴリズムが画像全体を扱う。私の質問は、バイナリマスクでラベル付けされた領域だけを処理できるように、それらの画像処理アルゴリズムを適用する方法です。Matlabのバイナリマスクに基づいてラベル付けされたROIに画像処理アルゴリズムを適用するには?

たとえば、Iはグレースケールイメージで、BWはバイナリマスクです。以下のコードは、BWマスクでラベル付けされた特定の領域ではなく、画像全体を処理しています。

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

答えて

1

コードの問題は、画像の要素をゼロに設定していることです。代わりに、目的のボクセルをアルゴリズムgrayscaleに渡すだけです。 BWは、ROI内の非ゼロである場合たとえば、あなたが閾値算出に必要要素のみを選択します

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が論理値を持つエントリと同じサイズの行列であることを確認する必要があります。

関連する問題