1

ここに画像の説明を入力してください 行列があるとします。このマトリックスは、同じサイズの長方形を作成するいくつかのポイントを除いて空白です。長方形を作成するすべての点には、その長方形のすべての点に等しい正の数があります。この行列には、それぞれ同じ番号の長方形がいくつかある可能性があります。

同じ構造の2番目の行列があると想像してください。しかし、長方形は、写真の行列AとBと同じように、他のサイズと他の値で他の位置にあります。

両方の行列を組み合わせたいので、長方形が絡み合っている場合は、最小数の長方形が消去されます。

それを行うための最良の方法はどれですか?やり遂げることは可能だと思いますが、30回やりたいので、改善しないとオクターブが完成するまでにかなりの時間がかかります。

4

1 に答える 1

2

仕事をしているように見えるこの小さなコードを作成しました:

A=[0 0 1 1 1 0 ;
   0 0 1 1 1 0 ;
   0 0 0 0 0 0 ;
   2 2 0 0 0 0 ;
   2 2 0 0 0 0 ;
   2 2 0 0 0 0 ];

B=[3 0 2 2 0 0 ;
   3 0 2 2 0 0 ;
   0 0 2 2 0 0 ;
   0 0 0 0 0 0 ;
   1 1 1 1 1 0 ;
   1 1 1 1 1 0 ];


%give a unique id to each rectangle
lblA=bwlabel(A);
lblB=bwlabel(B);

%search for overlap
overlap= A & B;

% find out overlaping rectangle s unique id
overlapLbl= unique([lblA(overlap(:)) lblB(overlap(:))],'rows');

%eliminate rectangle with lower score
for ov=1:size(overlapLbl,1)
  scoreA=A(find((lblA==overlapLbl(ov,1)),1));
  scoreB=B(find((lblB==overlapLbl(ov,2)),1));
  if scoreA>scoreB
    B(B==scoreB)=0;
  else
    A(A==scoreA)=0;
  end
end
C=A+B

出力:

C =
     3     0     2     2     0     0
     3     0     2     2     0     0
     0     0     2     2     0     0
     2     2     0     0     0     0
     2     2     0     0     0     0
     2     2     0     0     0     0
于 2012-06-21T17:45:14.820 に答える