#algorithm #computational-geometry
#алгоритм #вычислительная геометрия
Вопрос:
Я не мог понять, как алгоритм обнаружения контуров работает на 2D-графике в целом. Проверяют ли алгоритмы обнаружения контуров все точки в пространстве, чтобы найти каждую линию контура? Может кто-нибудь объяснить интуитивно?
Комментарии:
1. Вы имеете в виду что-то вроде Canny?
2. Андер Бигури, я отредактировал вопрос
3. Хм, ваш вопрос намного интереснее того, что я понял. Я не знаю, как на это ответить, но я попытаюсь провести некоторое исследование. Хороший вопрос.
Ответ №1:
Многое будет зависеть от того, что именно представляет собой ваше приложение. Вам нужны все контурные линии или только одна? С каких данных вы начинаете — точек, расположенных на регулярной сетке, случайных выборок или, возможно, функции, которую вы можете оценить в любой заданной точке. Информация о том, насколько хорошо данные ведут себя, также полезна — есть ли у них несколько больших просмотров или они очень неровные.
Основные алгоритмы включают в себя некоторую форму или следование нулю, скажем, мы хотим следовать нулевому контуру. Есть две основные задачи: найти начальную точку и следовать по контуру.
Например, предположим, что у нас есть данные, расположенные на регулярной сетке, и начальная точка находится в одном квадрате сетки. Вы можете исследовать соседние квадраты и посмотреть на знак функции в углах. Если все углы положительные или все отрицательные, мы знаем, что контур не может проходить через квадрат, и мы игнорируем этот квадрат. Если контур хорошо себя ведет, должно быть ровно два квадрата с изменениями знака, выберите один, перейдите к этому квадрату и повторите. В конечном итоге вы будете следовать контуру обратно к началу или, возможно, к краю вашего домена.
Найти отправные точки сложнее. Вы можете посмотреть вдоль границ вашего домена или использовать некоторую форму выборки.
Комментарии:
1. Я ответил на другой вопрос, поскольку это более конкретно. Будучи монотонным, просто найти начальные точки и выполнить нулевое следование.