Нахождение пикселя / точки вогнутости в двоичной карте с использованием Matlab - PullRequest
6 голосов
/ 29 апреля 2011

Дана бинарная маска с объектом в Matlab.Я собираюсь найти точку вогнутости границы объекта.Точка вогнутости, которую я имею в виду здесь, является самой глубокой точкой вогнутости относительно евклидова расстояния до выпуклых хорд корпуса K_1, K_2 и K_3 в областях вогнутости B_1, B_2, B_3 соответственно.Красной точкой обозначена вогнутая точка, которую я хочу найти, где в вогнутой области B_1 я рисую три линии, перпендикулярные хорде K_1, самая глубокая вогнутая точка - это средняя, ​​поскольку она имеет наибольшую длину.*

У кого-нибудь есть эффективный способ / код для этого?Спасибо.

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

enter image description here

1 Ответ

4 голосов
/ 06 мая 2011

Эффективен относительно ...

Как насчет вычисления выпуклой оболочки (для нее существует стандартных алгоритмов ), а затем уменьшения ее до тех пор, пока она полностью не окажется внутри границ объекта. Последнее касание точки - это желаемая точка вогнутости.

Альтернативная стратегия:

  • расчет выпуклой оболочки
  • найти все различия между выпуклой оболочкой и границей объекта (должны быть прямые линии, K1 K2 K3 в вашем случае)
  • для каждой строки, поверните изображение так, чтобы линия была горизонтальной
  • взять самый нижний пиксель границы объекта ниже линии
...