赤、緑、青のチャンネルを持つ画像と、画像のバイナリ バージョンがあります。
私がやりたいことは、これらの 2 つの画像を連結して、バイナリ画像が通常の画像のマスクとして機能するようにすることです。
カラー画像からバイナリで 1 のピクセルのみを選択したい。
cat
これは、または でさえも動作するはずrepmat
ですが、Matlab にはかなり慣れていないため、関数のドキュメントを読んだ後でも、これを行う方法がわかりません。
赤、緑、青のチャンネルを持つ画像と、画像のバイナリ バージョンがあります。
私がやりたいことは、これらの 2 つの画像を連結して、バイナリ画像が通常の画像のマスクとして機能するようにすることです。
カラー画像からバイナリで 1 のピクセルのみを選択したい。
cat
これは、または でさえも動作するはずrepmat
ですが、Matlab にはかなり慣れていないため、関数のドキュメントを読んだ後でも、これを行う方法がわかりません。
3 次元イメージI
とバイナリ マスクM
がある場合は、イメージにマスクを掛けることによって、無関係なビットをゼロにマスクできます。
I = bsxfun(@times, I, M);
または論理インデックス付けによって:
I(~mask(:, :, ones(1, size(I, 3)))) = 0;
あなたの問題を 100% 理解しているとは言えませんが、ここに 1 つの提案があります。
rgbIm
がRGBイメージで、bwIm
がバイナリ イメージであるとします。
次のコード行を使用して、バイナリ イメージを " 3D " に "拡張" してみてください (その寸法が元の RGB イメージと一致するようにするため)。
bwImAux = bwIm(:,:,[1 1 1]);
次に、単純な乗算を実行して、バイナリ イメージ内のピクセルではないすべてのピクセルを「削除」します。
rgbImNew = rgbIm.*bwImAux;
お役に立てれば。
バイナリ イメージを 3dim イメージの論理インデックスとして使用できます。image
binary でゼロであるすべてのピクセルをゼロにするにmask
は、各次元に対して次のコードを使用できます。image(~mask)=0;