MATLAB обработка изображений маленьких кружков - PullRequest
10 голосов
/ 13 ноября 2011

У меня есть изображение, которое выглядит так:

Bottle

У меня есть задача, в которой я должен обвести все бутылки вокруг их отверстия.Я создал простой алгоритм и начал работать с ним.Мой алгоритм выглядит следующим образом:

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

Я сделал в соответствии с алгоритмом выше, но у меня есть часть изображения, вокруг которой я рисую круг.Это потому, что я выбрал область, так как площадь устья бутылки и оставшийся шум почти одинаковы.И поэтому я получил такую ​​фигуру.

Обработка, примененная к изображению, выглядит следующим образом:

Enter image description here

И мое окончательное изображение после нанесения круга наИсходное изображение выглядит следующим образом:

Enter image description here

Я думаю, что могу справиться с дополнительным кругом, то есть из-за того, что какая-то белая часть изображения осталась, как показано на рисунке 2 ниже,Это может быть отфильтровано с использованием регионпропинга для эксцентриситета.Это хорошая идея или есть другие подходы к этому?Как мне поступить с другими бутылками за стеклом и выбрать их?

Ответы [ 2 ]

5 голосов
/ 13 ноября 2011

Хорошие примеры изображений, которые вы предоставляете для своего вопроса!

Одна вещь, которую вы можете использовать для обнаружения оставшихся бутылок (если они есть), это четко определенная структура размещения бутылок. Сетка 4 на 5 бутылки должна быть относительно легко обнаруживаемой, и когда сетка будет расположена, вы можете проверить, обнаружена ли бутылка в каждом ожидаемом местоположении бутылки.

Что касается дополнительной обнаруженной бутылки, вы можете использовать такие функции, как

  • эксцентриситет,
  • первый момент Ху
  • соотношение между длиной периметра в квадрате по площади (которая минимизирована для круга) подробнее здесь

Если вы можете обнаружить сетку, должно быть легко определить ее как выброс (вдали от ожидаемого местоположения бутылки) и выбросить соответственно.

Удачи в вашем проекте!

2 голосов
/ 14 ноября 2011

Я использовал тот же подход, что и в третьем предложении середины, используя соотношение площади и периметра, называемое коэффициентом формы:

4π * Площадь / периметр ^ 2

для обнаружения кругов от изображения с контурной трассировкой (от порогового изображения) до большого успеха;

http://www.empix.com/NE%20HELP/functions/glossary/morphometric_param.htm

Что касается 4 не найденных бутылок, то это довольно сложно, без априорных знаний о том, на что вы смотрите (как обсуждалось с использованием сетки 4 x 5, затем глядя из центра каждой клетки). Я действительно думал, что из списка контуров, большинство будет из бутылочных крышек (которые вы можете проверить, используя материал с коэффициентом формы), однако, один будет большого прямоугольника. Если бы вы могли найти конечности прямоугольника (от наибольшего контура по площади), то удалите его из третьего изображения, у вас останутся частичные круги. Если вы затем очерчиваете контуры этих частичных окружностей и используете смесь определения коэффициента формы / кривой и т. Д., Может помочь? И да, удачи снова!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...