3

BLACK & WHITE の画像の一部をマスクする方法を教えてください。

エッジ検出が必要なオブジェクトを取得しましたが、ターゲット オブジェクトの下にある背景に他の白い干渉オブジェクトがあります... 画像の下部全体を黒くマスクしたいのですが、どうすればそれを行うことができますか? ?

ありがとう !!

編集

他の部分 (上部) もマスクしたいのですが、どうすればいいですか?

コードがどのように機能するかを学び、自分の理解で実装したいので、コードを説明してください。

EDIT2

私の画像は 480x640 です...特定のピクセルをマスクする方法はありますか? たとえば、画像から180x440 ...

4

2 に答える 2

6

マトリックスに保存されている2Dグレースケール強度画像がある場合Aは、次のようにして下半分を黒に設定できます。

centerIndex = round(size(A,1)/2);         %# Get the center index for the rows
A(centerIndex:end,:) = cast(0,class(A));  %# Set the lower half to the value
                                          %#   0 (of the same type as A)

これは、最初にA関数SIZEを使用して行数を取得し、それを2で除算し、それを四捨五入して画像の高さの中央付近の整数インデックスを取得することで機能します。次に、ベクトルcenterIndex:endは中央のインデックスから最後まですべての行にインデックスを:付け、すべての列にインデックスを付けます。これらのインデックス付き要素はすべて0に設定され、黒を表します。

関数CLASSは、のデータ型を取得するために使用されるため、関数CASTAを使用して0をその型にキャストできます。ただし、0はおそらく自動的にそれらのないタイプに変換されるため、これ必要ない場合があります。A

マスクとして使用する論理インデックスを作成する場合は、次のように実行できます。

mask = true(size(A));  %# Create a matrix of true values the same size as A
centerIndex = round(size(A,1)/2);  %# Get the center index for the rows
mask(centerIndex:end,:) = false;   %# Set the lower half to false

ここで、は、保持するピクセルの場合は(つまり、「1」)、0に設定するピクセルの場合は(「0」)maskの論理行列です。必要に応じて、の要素をさらに設定できます。次に、マスクを適用する場合は、次の操作を実行できます。truefalsemaskfalse

A(~mask) = 0;  %# Set all elements in A corresponding
               %#   to false values in mask to 0
于 2010-05-15T22:01:07.437 に答える