Ответ 1
Очень хорошая работа по обнаружению границ. Раньше я работал над аналогичными проблемами сегментации.
Теория:
Как только вы получили свою карту границ, где e(i,j)
указывает степень пикселя i,j
с краем края, вам нужна сегментация изображения, которая будет уважать карту края, насколько это возможно.
Чтобы сформулировать это "уважение к краевой карте" более формальным образом, я предлагаю вам взглянуть на Корреляционная кластеризация (CC):
Функциональность CC оценивает качество сегментации на основе парных отношений между соседними пикселями, должны ли они находиться в одном кластере (без края между ними) или в разных кластерах (между ними есть грань).
Взгляните на пример в разделе 7.1 вышеупомянутый документ. < ш > CC используется для аналогичных проблем сегментации в медицинской (нейронной) картине, см., Например, здесь.
Практика
Как только вы убедите себя, что CC действительно является подходящей формулировкой для вашей проблемы, все еще возникает вопрос, как именно преобразовать вашу двоичную карту края в матрицу сродства, которую может обрабатывать CC. Имейте в виду, что CC необходимо как вход a (обычно разреженная) матрица смежности с положительными позициями для пар пикселей, предполагающих принадлежность к одному и тому же сегменту, и отрицательные записи для пар пикселей, предположительно принадлежащих в разных сегментах.
Здесь мое предложение:
-
Края на карте края выглядят довольно толстыми и не очень локализуются. Я предлагаю не-макс-подавление или морфологическое отшелушивание как этап предварительной обработки.
-
После того, как у вас есть лучшие локализованные ребра, вы игнорируете пиксели "края" и работаете только с "не-крайними" пикселями, называя их "активными". Два активных пикселя, которые находятся рядом друг с другом: между ними нет "краевого" пикселя - они должны быть вместе. Таким образом, матрица смежности для бесконечных nieghbors должна иметь положительный эффект.
Рассмотрим три пикселя на линии, причем две конечные точки являются "активными" пикселями: если средний - это край, то два активных пикселя не должны принадлежать одному и тому же кластеру - соответствующие записи в матрице смежности должны быть отрицательными. Если средний пиксель также активен, а соответствующие записи в матрице смежности должны быть положительными. -
Рассмотрим все возможные соседние пары и триплеты (индуцирующие 24-связный сетчатый граф), позволяющий построить матрицу сродства с положительными и отрицательными элементами, подходящими для CC.
-
С учетом матрицы вы должны искать сегментацию с лучшим значением CC (этап оптимизации). У меня есть код Matlab для этого здесь. Вы также можете использовать отличный openGM.
-
Оптимизация будет вызвана только разделом активных пикселей, вы можете перевести его обратно в область входного изображения, оставив пиксели края не назначенными для любого сегмента.