1

サイズ 480 (高さ) x 640 (幅) の画像があります。サイズ [1 x 280] のマトリックスもあります。これらの 280 の値は、画像内で見つけることができるポイントです。

画像の特定のセクションで見つけることができるマトリックスのポイントは何かを知りたいです。forポイントを検索するためにスキャンする場所を指定するためにネストされたループを実行しましたが、「スキャン」を行うのに問題があります。

% matrixC = [435 560 424 132 453 ........ 596] for example of size 280
for height = 1:480
    for width = 635:640
    W = C(max);
    end
end

これは、C の最大値として W を表示するだけですが、高さが 1 から 480、幅が 635 から 640 のセクション内の C の最大値のみを表示する必要があります。関心のある特定のセクションのみをスキャンするコードを作成するにはどうすればよいでしょうか。また、そのセクション内に 10 個の数字が見つかった場合、それらを選択するにはどうすればよいでしょうか?

4

1 に答える 1

2

イメージ マトリックスでismemberと直接インデックスを使用して、"is" または "is-not" 値のバイナリ マトリックスを取得できます。

imageC = randi(256, 480, 640); % random image
vectorW = randi(256, 1, 280);  % random vector of points 

imagePart = imageC(1:480, 635:640); % select section by indexing
imageMember = ismember(imagePart, vectorW);  % check membership 

更新(vectorWへの変更C、3 チャンネル画像の処理の追加、および実際のポイント値の戻り値):最初の 2 行を置き換えることにより、以下に 独自の画像imageCとベクトルを適用できます。C

imageC = randi(256, 480, 640, 3); % (random) image [480 x 640 x 3]
C = randi(256, 1, 280);  % (random) vector of points [1 x 280]

imagePart = imageC(1:480, 635:640, :); % select section by indexing [480 x 6 x 3]
imageMember = ismember(imagePart, C);  % check membership [480 x 6 x 3] 
pointsInImage = unique(imagePart(imageMember)); % unique set of points from C found in imagePart
于 2012-09-13T18:50:30.853 に答える