いくつかの処理の後、BMP 画像の白黒マスクを取得しました。
ここで、BMP 画像の白い部分だけをマスクで表示したいと思います。
私はmatlabの初心者です(しかし、私はそれが大好きです)、Googleから学んだ多くのマトリックストリックを試しましたが、どれも機能しません(または、正しく実行していません..)
ヒントを教えてください。
お時間をいただきありがとうございます。
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 を使用するのが最適ですか?
マスクが画像と同じサイズであると仮定すると、次のことができます(グレースケール画像の場合):
maskedImage=yourImage.*mask %.* means pointwise multiplication.
カラー イメージの場合は、3 つのチャネルで同じ操作を行います。
maskedImage(:,:,1)=yourImage(:,:,1).*mask
maskedImage(:,:,2)=yourImage(:,:,2).*mask
maskedImage(:,:,3)=yourImage(:,:,3).*mask
次に、画像を視覚化するには、次のようにします。
imshow(maskedImage,[]);