Я только недавно начал с обработки изображений и взял курс, связанный с этим в аспирантуре. Но у меня уже есть проект, чтобы обойтись без слишком большого количества информации по этому вопросу, однако я добился определенного прогресса. Я пытаюсь отделить таблетки от их соответствующих фонов. Для изображений с контрастным фоном я смог разделить таблетки по методу Оцу. Что касается изображений с похожим фоном, метод Оцу не совсем работает. Я читал довольно много статей, касающихся сегментирования, но в большинстве статей, которые я читал, используется ручное определение порога в зависимости от типа изображения. Можно ли определить правильное значение порога и автоматически портировать изображение и использовать такие методы, как выращивание семян или кластеризация, для сегментирования изображения?
Используемое мной цветовое пространство - L a b *, поэтому я был бы признателен, если бы вы порекомендовали подходящее цветовое пространство, которое я тоже должен использовать.
Изображения в вопросе:
оригинал 1
результат 1
оригинал 2
результат 2
оригинал 3
результат 3
источник
Ответы:
Если вы хотите использовать подход порогового значения, вы должны использовать адаптивный метод порогового значения, если есть большие изменения освещения, как в 3-м примере изображения ( вопрос dsp здесь ).
Кроме того, вам следует поэкспериментировать с цветовыми пространствами, это просто: сценарий для разложения изображения на различные цветовые пространства должен быть не длиннее нескольких строк, и многие программы просмотра изображений имеют эту возможность доступной. Лучшее должно быть легко определить только визуально. Если вы хотите прочитать о цветовых пространствах, здесь есть еще один хороший вопрос о DSP .
Наконец, вы можете попробовать другой подход. Одной из идей было бы сделать неидеальную сегментацию, затем определить края и, наконец, использовать что-то вроде преобразования Хафа для кругов, которое также отлично работает на (неполных) дугах окружностей. (эта идея, конечно, применима только к круглым таблеткам)
источник
Круговые преобразования из библиотеки OpenCV хорошо подходят для этого приложения. Вам нужно будет выполнить несколько радиусов, но лучший ответ даст вам границы и центры таблеток. Обратите внимание, что вам придется использовать обобщенные преобразования Хафа, чтобы найти некруглые таблетки. Это будет работать, даже если у таблеток есть закупоренные или отсутствующие краевые точки.
Пороговая обработка может быть плохим решением этой проблемы, потому что в этой области вы можете попасть в ситуации, когда никакое пороговое значение не отделяет таблетку от фона, поэтому алгоритм, который зависит от взаимного расположения групп ребер, является лучшим.
источник
Для решения этой проблемы вам нужно отделить фон и передний план. Это решение, я предлагаю вам:
1) преобразовать изображение из Rgb в оттенки серого; Вы получите изображение, которое мы называем
I1
;2) применить морфологический фильтр, эрозия с использованием большого радиуса, в конце концов несколько раз ==> вы должны стереть таблетку путем эрозии и получить только фон; Вы получите новое изображение
I2
;3) вычитать
I2
доI1
, вы получите на переднем плане , т.е. таблетки;4) примените другой морфологический фильтр, чтобы заполнить любое отверстие в таблетке, которую вы получили;
5) применить морфологический фильтр, эрозию, небольшой радиус, чтобы удалить любой изолированный пиксель.
Этот метод не требует какого-либо порога, определения формы, цветовой сегментации или чего-либо еще.
источник