0

いくつかの処理の後、BMP 画像の白黒マスクを取得しました。

ここで、BMP 画像の白い部分だけをマスクで表示したいと思います。

私はmatlabの初心者です(しかし、私はそれが大好きです)、Googleから学んだ多くのマトリックストリックを試しましたが、どれも機能しません(または、正しく実行していません..)

ヒントを教えてください。

お時間をいただきありがとうございます。

4

2 に答える 2

1

2 つの matlab 関数repmatまたはbsxfunのいずれかを使用すると、任意の数のチャネルを持つソース イメージに対して 1 行のコードでマスキング操作を実行できます。

I画像のサイズM-by-N-by-Cとマスクのサイズが であると仮定すると、M-by-Nいずれかの repmat を使用してマスクされた画像を取得できます。

I2 = I .* repmat(mask, [1, 1, 3]);

またはbsxfunを使用して

I2 = bsxfun(@times, I, mask);

これらは両方とも知っておくと非常に便利な関数であり、一般的にコードをベクトル化する場合に非常に役立ちます。また、次の質問への回答に目を通すことをお勧めします: Matlab では、いつ bsxfun を使用するのが最適ですか?

于 2013-03-13T10:29:19.240 に答える
1

マスクが画像と同じサイズであると仮定すると、次のことができます(グレースケール画像の場合):

maskedImage=yourImage.*mask %.* means pointwise multiplication. 

カラー イメージの場合は、3 つのチャネルで同じ操作を行います。

maskedImage(:,:,1)=yourImage(:,:,1).*mask 
maskedImage(:,:,2)=yourImage(:,:,2).*mask 
maskedImage(:,:,3)=yourImage(:,:,3).*mask 

次に、画像を視覚化するには、次のようにします。

imshow(maskedImage,[]);
于 2013-03-13T02:55:23.270 に答える