Это было изображение, полученное после фильтрации Габора ... Есть ли какой-то способ удаления линий внутри изображения, кроме ярко-белого округлого дефекта.
Попробовал другую ориентацию фильтра Габора пойти следующий результат:
После порога: что достаточно хорошо, но не отлично
После медианной фильтрации:
заранее спасибо
Ответы:
Если выходные данные вашего фильтра Габора надежны и вариация в ваших данных изображения не настолько высока, что результат выглядит совершенно иначе, тогда вы можете использовать следующий подход (его части, где уже упоминалось):
Binarize ваше второе изображение с любым автоматическим алгоритмом порога. Диапазон порогов, которые будут работать, велик, как вы увидите.
Используйте алгоритм маркировки компонентов, чтобы пометить каждую подключенную область пикселя уникальным значением.
Рассчитайте для каждого компонента вашего изображения свойство, которое описывает, насколько близок ваш объект к закрашенному кругу. Для этого вы можете использовать, например, компактность . Я использовал ниже долю пикселей в пределах эквивалентного радиуса диска . Этот радиус - это радиус диска с той же площадью, что и у вашего объекта.
Чтобы увидеть, что автоматическая бинаризация должна работать, вот результаты для очень низкого и очень высокого порога:
Обновление маркировки компонентов
Выбор маркировки компонента не является критичным для вашего приложения. Я бы посоветовал, если вам придется реализовать это самостоятельно, использовать очень простой метод. Версия один проход с сайта Википедии очень легко. По сути, вы перебираете свое двоичное изображение, и когда вы встречаете пиксель, который является белым и еще не помечен, вы используете новую метку для этого объекта и начинаете с этого пикселя.
Процесс маркировки этого объекта меткой в основном похож на заливку. Это на сайте Wikipedia внутренние шаги 1-4 в алгоритме. Вы начинаете с этого помеченного пикселя и помещаете всех его соседей в стек (они использовали вектор ). Для пикселя в стеке вы проверяете, является ли он передним планом и еще не помечен. Если вам нужно пометить его, вы снова поместите все его соседи в стек. Делайте это, пока ваш стек не станет пустым.
Затем продолжите сканирование по изображению. В отличие от описания на вики-сайте, вам не нужно удалять пиксель из вашего исходного изображения, вы просто пропускаете, когда у вас есть значение, отличное от 0 в вашем label-image.
источник
Несколько идей:
РЕДАКТИРОВАТЬ: после вашего среднего шага фильтрации, вы большую часть пути там. Молодец! Пункт 2, который я предложил выше (закрытие, затем маркировка региона), - это один из методов, который поможет вам пройти оставшуюся часть пути.
источник
Вы можете попробовать активные контуры. Хотя он может быть медленным, он может справиться с таким сложным случаем.
Или вы можете использовать некоторые предварительные знания для обработки этого изображения. Например, вы знаете, что объект BLOB-объектов «большой» и «связанный». Таким образом, когда вы посчитаете номер каждого подключенного региона, вы можете найти его.
источник