连接组件之间的距离

时间:2015-07-13 16:30:57

标签: matlab image-processing

我想知道是否有一些内置函数可以在MATLAB中获取不同连接组件之间的距离。我使用bwlabel来获取各种连接组件。是否有某种方法可以获得这些连接组件之间的距离?

1 个答案:

答案 0 :(得分:2)

我猜您可以使用regionprops找到每个连接组件的质心,然后应用pdist来查找每个组件之间的成对距离。

简单示例:

clear
clc
close all

%// Create logical array
BW = logical ([1     1     1     0     0     0     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     1     1     0
               1     1     1     0     0     0     0     0])

%/ Call regionprops and concatenate centroid coordinates
S = regionprops(bwlabel(BW,4),'Centroid')

Centroids = vertcat(S.Centroid)

%// Measure pairwise distance
D = pdist(Centroids,'euclidean')

命令窗口中的输出:

BW =

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


S = 

3x1 struct array with fields:

    Centroid


Centroids =

    2.0000    4.5000
    5.5000    2.5000
    6.8000    5.8000


D =

    4.0311    4.9729    3.5468