Сегментирование таблетки от фона

9

Я только недавно начал с обработки изображений и взял курс, связанный с этим в аспирантуре. Но у меня уже есть проект, чтобы обойтись без слишком большого количества информации по этому вопросу, однако я добился определенного прогресса. Я пытаюсь отделить таблетки от их соответствующих фонов. Для изображений с контрастным фоном я смог разделить таблетки по методу Оцу. Что касается изображений с похожим фоном, метод Оцу не совсем работает. Я читал довольно много статей, касающихся сегментирования, но в большинстве статей, которые я читал, используется ручное определение порога в зависимости от типа изображения. Можно ли определить правильное значение порога и автоматически портировать изображение и использовать такие методы, как выращивание семян или кластеризация, для сегментирования изображения?

Используемое мной цветовое пространство - L a b *, поэтому я был бы признателен, если бы вы порекомендовали подходящее цветовое пространство, которое я тоже должен использовать.

Изображения в вопросе:

оригинал 1

введите описание изображения здесь

результат 1

введите описание изображения здесь

оригинал 2

введите описание изображения здесь

результат 2

введите описание изображения здесь

оригинал 3

введите описание изображения здесь

результат 3

введите описание изображения здесь

GamingX
источник
7
Не могли бы вы загрузить изображение, пожалуйста? А как насчет адаптивного порога?
Квентин Гайсманн
3
А как насчет методов набора уровней и активных контуров? Вы можете сегментировать таблетки от фона не только по значению интенсивности (порог), но и на основе текстуры объекта. Используемое цветовое пространство - это просто система координат для цветов - используйте систему, которая лучше всего различает цвета в изображении для сегментации. Например, если изображения имеют фиолетовые тона, вы можете использовать преобразование в оттенках серого с большим весом, наложенным на красный и синий компоненты.
Libor
Квентин: У меня недостаточно репутации, чтобы загружать фотографии.
GamingX
@Syed Загрузите их где-нибудь публично и добавьте ссылки на вопрос, если хотите.
Мориц

Ответы:

2

Если вы хотите использовать подход порогового значения, вы должны использовать адаптивный метод порогового значения, если есть большие изменения освещения, как в 3-м примере изображения ( вопрос dsp здесь ).

Кроме того, вам следует поэкспериментировать с цветовыми пространствами, это просто: сценарий для разложения изображения на различные цветовые пространства должен быть не длиннее нескольких строк, и многие программы просмотра изображений имеют эту возможность доступной. Лучшее должно быть легко определить только визуально. Если вы хотите прочитать о цветовых пространствах, здесь есть еще один хороший вопрос о DSP .

Наконец, вы можете попробовать другой подход. Одной из идей было бы сделать неидеальную сегментацию, затем определить края и, наконец, использовать что-то вроде преобразования Хафа для кругов, которое также отлично работает на (неполных) дугах окружностей. (эта идея, конечно, применима только к круглым таблеткам)

Пенелопа
источник
Что было бы хорошей идеей для неидеальной сегментации?
GamingX
@Syed Похоже на OpenCV Canny (обнаружение контуров) и даже Hough работает с серыми изображениями (не нужно пороговое значение), так что вы можете пропустить шаг установки порога все вместе. Пороговое значение - сегментация сильно зависит от изображений. Но прямой ответ будет: извините, не знаю. Я думаю, что неадаптивного метода было бы достаточно, но я не мог предложить конкретный метод, так как некоторое время не делал этого. Просто сделайте небольшое исследование простых методов сегментации;)
Пенелопа
2

Круговые преобразования из библиотеки OpenCV хорошо подходят для этого приложения. Вам нужно будет выполнить несколько радиусов, но лучший ответ даст вам границы и центры таблеток. Обратите внимание, что вам придется использовать обобщенные преобразования Хафа, чтобы найти некруглые таблетки. Это будет работать, даже если у таблеток есть закупоренные или отсутствующие краевые точки.

Пороговая обработка может быть плохим решением этой проблемы, потому что в этой области вы можете попасть в ситуации, когда никакое пороговое значение не отделяет таблетку от фона, поэтому алгоритм, который зависит от взаимного расположения групп ребер, является лучшим.

Кристиан Чепмен
источник
1

Для решения этой проблемы вам нужно отделить фон и передний план. Это решение, я предлагаю вам:

1) преобразовать изображение из Rgb в оттенки серого; Вы получите изображение, которое мы называем I1;

2) применить морфологический фильтр, эрозия с использованием большого радиуса, в конце концов несколько раз ==> вы должны стереть таблетку путем эрозии и получить только фон; Вы получите новое изображение I2;

3) вычитать I2до I1, вы получите на переднем плане , т.е. таблетки;

4) примените другой морфологический фильтр, чтобы заполнить любое отверстие в таблетке, которую вы получили;

5) применить морфологический фильтр, эрозию, небольшой радиус, чтобы удалить любой изолированный пиксель.

Этот метод не требует какого-либо порога, определения формы, цветовой сегментации или чего-либо еще.

Samir
источник