2016-07-27 2 views
0

Я работаю с сегментацией изображения в Matlab.Найти строку, перпендикулярную контуру

Мне нужно найти прямую, перпендикулярную множеству точек, чтобы вычислить максимальное расстояние между этой линией и множеством точек.
Вот пример проблемы:

Example of image

Красная точка представляет собой вогнутость контура и эта точка была найдена из кривизны контура.

Черная линия и зеленые точки, которые являются лимитом линии, были нарисованы вручную, чтобы показать результат, который я ищу.

После нахождения линии следующая задача заключается в вычислении максимального расстояния между линией и частью контура, выделенной желтым цветом.

Может ли кто-нибудь предложить возможное решение?

+1

Что представляет собой набор точек ??? А какая линия * перпендикулярна * к множеству точек ??? –

ответ

0

Чтобы нарисовать линию, вам просто нужно получить производную от функции в этой точке, как вы, вероятно, помните из базовой алгебры.

Вы можете просто сделать это с конечными разностями, но я предлагаю вам использовать более 2 баллов, скажем, 5 или 7, чтобы приблизиться к производной в этой точке. Затем рисование линии так же легко, как

y-y0=f'(x) (x-x0) 

где y0,x0 является сама точка. Поскольку у вас нет функции представления вашего контура, чтобы вычислить пересечение линии с контуром, лучше всего было бы ее численно проверить.

Кроме того, вы можете создать двоичное изображение с контуром и всем, что внутри него, а затем использовать improfile с точками в строке, но за пределами белого блоба. Поскольку значение равно единице, интегралом линии по пути будет общая длина линии внутри контура.

EDIT: Я неправильно понял, что, хотя вам нужно расстояние от линии. Расстояние между точкой и линией является базовой алгеброй, google - ваш жареный

Смежные вопросы