специальное преобразование расстояния между точками в Matlab

Я использую 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.

любая функция может сделать?


person Zihao Li    schedule 12.08.2015    source источник


Ответы (1)


Вы можете использовать find, чтобы найти индексы строк и столбцов для всех 1's, затем используйте pdist2 от 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)))
person Divakar    schedule 12.08.2015