Подключенные компоненты с ядром четного размера

Я немного исследовал связанные компоненты. Как в MATLAB, так и в библиотеке OpenCV они всегда указывают, что ядро ​​может быть массивом 3x3 и может быть либо 4-связным, либо 8-связным. Я провел довольно много исследований, но не смог найти ответ.

Я знаю, что ядро ​​может быть любой формы. Но в случае подключенных компонентов, скажем, у нас есть ядро ​​5x5, оно может обнаружить 1, даже если они находятся в другой метке. (Из-за размера ядро ​​5x5 может видеть область 2 пикселя от привязки). И, скажем, у нас есть ядро ​​4x4 (ядро четного размера), в этом случае у нас даже нет якоря. Итак, мой вопрос: как я могу применить маркировку подключенных компонентов с ядрами 4x4 и 5x5?


person Masmm    schedule 06.12.2020    source источник
comment
Извините, если я расплывчата. Что касается маркировки подключенных компонентов, меня попросили сделать три разных маркировки с ядрами полного 2D-массива 3x3,4x4 и 5x5. 3x3 — это просто, 5x5 для меня немного расплывчато, но я могу предположить, что это не оптимально для вещей, о которых я упоминал выше. Моя самая большая дилемма заключается в том, как выполнить анализ CC с массивом 4x4. Я спрашивал, есть ли способ, так как в конструктивном элементе нет средней точки, в данном случае 4x4. Я не знаю, как применить или можно ли применить даже структурированное ядро ​​​​к образу в CCA.   -  person Masmm    schedule 06.12.2020
comment
Хорошо, я отредактировал ваш пост, чтобы он соответствовал тому, что, как я думаю, вы хотите сказать. Пожалуйста, отредактируйте дальше, если я неправильно понял.   -  person Cris Luengo    schedule 06.12.2020
comment
Вы можете выбрать якорь в любом месте ядра. Часто для ядра mxn выбирается якорь ceil([m/2, n/2]) (с использованием индексации на основе 1).   -  person beaker    schedule 06.12.2020


Ответы (1)


Действительно, Connected Component Analysis (CCA) обычно применяется с ядром 3x3, или, точнее, применяется, принимая в качестве соседей только непосредственных 4- или 8-связных соседей.

Но можно выбрать более крупные окрестности, которые будут считаться связанными. С ядром 5x5 промежутки размером в один пиксель можно игнорировать, делая более крупные связанные компоненты.

Чтобы реализовать CCA с большим ядром, можно применить к изображению расширение, применить обычный CCA, а затем сбросить обратно до 0 те пиксели, которые были равны 0 во входном изображении. Расширение должно быть такого размера, чтобы заполнить желаемый размер зазора. Для случая ядра 5x5, который игнорирует промежутки в 1 пиксель, нам нужно применить расширение 2x2, чтобы заполнить промежутки в 1 пиксель.

Что касается ядер четного размера: в целом с такими ядрами проблем нет. Можно определить начало (якорь) где угодно. Мы всегда получаем асимметричное ядро.

Однако с CCA мне неясно, что означает асимметричное ядро. Сосед на два пикселя справа подключен, а на два пикселя слева нет. Этот пиксель B подключен к A, но не подключен к B? Мне кажется, это не имеет смысла. Определение соединения должно быть симметричным, чтобы иметь смысл. Это похоже на определение расстояния, которое требует, чтобы расстояние (a, b) = расстояние (b, a).

person Cris Luengo    schedule 06.12.2020