1

赤、緑、青のチャンネルを持つ画像と、画像のバイナリ バージョンがあります。

私がやりたいことは、これらの 2 つの画像を連結して、バイナリ画像が通常の画像のマスクとして機能するようにすることです。

カラー画像からバイナリで 1 のピクセルのみを選択したい。

catこれは、または でさえも動作するはずrepmatですが、Matlab にはかなり慣れていないため、関数のドキュメントを読んだ後でも、これを行う方法がわかりません。

4

3 に答える 3

6

3 次元イメージIとバイナリ マスクMがある場合は、イメージにマスクを掛けることによって、無関係なビットをゼロにマスクできます。

I = bsxfun(@times, I, M);    

または論理インデックス付けによって:

I(~mask(:, :, ones(1, size(I, 3)))) = 0;
于 2013-05-19T11:45:29.733 に答える
1

あなたの問題を 100% 理解しているとは言えませんが、ここに 1 つの提案があります。

rgbImがRGBイメージで、bwImバイナリ イメージであるとします。

次のコード行を使用して、バイナリ イメージを " 3D " に "拡張" してみてください (その寸法が元の RGB イメージと一致するようにするため)。

bwImAux = bwIm(:,:,[1 1 1]); 

次に、単純な乗算を実行して、バイナリ イメージ内のピクセルではないすべてのピクセルを「削除」します。

rgbImNew = rgbIm.*bwImAux;

お役に立てれば。

于 2013-05-19T11:44:44.427 に答える
1

バイナリ イメージを 3dim イメージの論理インデックスとして使用できます。imagebinary でゼロであるすべてのピクセルをゼロにするにmaskは、各次元に対して次のコードを使用できます。image(~mask)=0;

于 2013-05-19T11:45:06.027 に答える