0

次の 2 つの行列があるとします。

>> x = [1 4 3; 6 4 3; 6 9 3; 2 4 3; 5 4 0; 5 3 1; 6 4 7];
>> y = [0 0 1; 1 1 0; 1 1 0; 0 1 1; 0.2 0.8 0.54; 1 1 1; 0 0 0];

xある画像として考えることができ、関心のある領域への各要素のメンバーシップy程度として考えることができます。x

x次のように、メンバーシップの程度が 1 の要素を( core ) に設定1その他の要素を0次のように設定するとします。

x = zeros(size(y));
x(y==1) = 1;

その場合、次の出力が得られます。

     0     0     1
     1     1     0
     1     1     0
     0     1     1
     0     0     0
     1     1     1
     0     0     0

ここで、 の要素について、次のように、対応する場所0の値を の値に置き換えます。y

x(x==0)=y(x==0);

ここで、次のように考慮されているがコアには含まれていないピクセルを選択し4-neighboursます。core

four_neighbourhood_pixels = imdilate(core, strel('diamond', 1)) - core;

私の質問は、 &間の距離を最小化するピクセル選択するにはどうすればよいpfour_neighbourhood_pixelsxcoreですか?

距離については、次のように計算します。

pdist([x,core],'minkowski');

前のコマンドで、 を対応する場所のメンバーシップ値の度合いにx置き換えた後の行列は次のようになりますか?zerosy

では、ゼロを置換して と のfour_neighbourhood_pixels間の距離を最小化するピクセルを選択するにはどうすればよいでしょうか?xcore

ありがとう。

4

1 に答える 1

0

私が正しく理解している場合core、次のマトリックスは次のとおりです。

 0     0     1
 1     1     0
 1     1     0
 0     1     1
 0     0     0
 1     1     1
 0     0     0

xまずとの間の距離を求めますcore

dist=pdist([x,core],'minkowski');
dist1=squareform(dist);
[row1,row2]=find(dist1==min(dist1(:)); %interpretation: you get the minimum distance  between row1 and row2 of [x core]

私の理解が正しいかどうかを確認してください:

距離を最小化する x からのピクセルがdist必要であり、それは に属している必要がありfour_neighbourhood_pixelsます。これがマトリックス[x core]

 1     4     3     0     0     1
 6     4     3     1     1     0
 6     9     3     1     1     0
 2     4     3     0     1     1
 5     4     0     0     0     0
 5     3     1     1     1     1
 6     4     7     0     0     0

2 行目と 3 行目の間の最小値を取得するとします。これに基づいて、「最小化するピクセルを見つける」とはどういう意味か教えてください...

于 2013-02-24T03:42:14.193 に答える