1

matlab を使用してバイナリ イメージの距離変換を計算すると、bwdist() がイメージのすべてのポイントの距離を計算できることがわかりましたが、特別なポイントの距離を知りたいだけです。たとえば、このようなバイナリ イメージがあります。

image =

     1     0     0
     0     0     1
     0     0     0

bwdist() は、すべてのポイントの距離変換を計算します

>> bwdist(a)

ans =

         0    1.0000    1.0000
    1.0000    1.0000         0
    2.0000    1.4142    1.0000

しかし、ポイント画像(3,2)の距離を計算したいだけなので、関数は1.4142を与えます

どの機能でもできますか?

4

1 に答える 1

0

を使用findしてすべての行と列のインデックスを検索し1's、次にpdist2fromを使用して検索ポイントからStatistics and Machine Learning Toolboxすべての距離を計算し、最終的にそれらの距離の最小値を選択して最終的な出力を得ることができます。サンプル実行として示されている実装は次のとおりです -1's(3,2)

>> image
image =
     1     0     0
     0     0     1
     0     0     0
>> point
point =
     3     2
>> [R,C] = find(image);
>> min(pdist2([R C],point))
ans =
       1.4142

にアクセスできない場合は、次のように置き換えることpdist2ができます-bsxfun

min(sqrt(sum(bsxfun(@minus,[R C],point).^2,2)))
于 2015-08-12T08:30:04.553 に答える