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查找 all 的行和列索引1's,然后使用pdist2fromStatistics and Machine Learning Toolbox计算 all1'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 回答