Рубрики
Без рубрики

Обнаружение марки с использованием компьютерного зрения и Python

Фон, мой друг, протягивает меня и спросил, могу ли я написать программу, чтобы обнаружить … Tagged с помощью Python, Computerervision, программирования, учебного пособия.

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

Изображения генерируются в контролируемой среде, поэтому мало алгоритмов компьютерного зрения должно сделать трюк. Чтобы проиллюстрировать алгоритмы компьютерного зрения, используемые при обнаружении марок, я буду использовать образец, загружаемый из Google, в качестве исходного изображения – это свойство компании. Цель состоит в том, чтобы определить две марки в образце изображения.

Шаги решения высокого уровня:

  1. Прочитайте изображение.
  2. Размывать и обнаружите края.
  3. Найдите все контуры и удалите меньшие контуры.
  4. Заполните область внутри контуров и закройте капли.
  5. Отфильтруйте марки.

Прежде чем мы начнем, позвольте нам импортировать необходимые пакеты.

1. Прочитайте изображение

Прочитайте цветное изображение, используя функцию imread. Чтобы отобразить изображение, мы будем использовать Matplotlib. Matplotlib ожидает, что каналы изображения цветного изображения будут отказаться от RGB, но OpenCV читает изображение как BGR, поэтому мы напишем вспомогательную функцию для преобразования.

2. Размывать и обнаруживайте края

Во -первых, нам нужно преобразовать изображение в Greyscale, используя cvtcolor функция Тогда мы будем использовать Bilateralfilter Чтобы уменьшить шум в изображении. Двусторонний фильтр предпочтительнее Гауссоя, потому что он сохраняет края намного лучше. Наконец, мы будем использовать хитрый Детектор края, чтобы вызвать изображение и обнаружить края. Нормальный детектор с хитрым краем требует двух пороговых параметров, которые трудно настроить, поэтому мы будем использовать тот, который из Ноль параметров, автоматическое обнаружение хитрых краев с Python и OpenCV

3. Найдите все контуры и удалите меньшие контуры

FindContours Функция может найти все контуры на изображении. Внешние большинство контуров достаточно хороши для нашего варианта использования, поэтому мы будем использовать режим поиска Retr_external Анкет Chain_approx_none Режим предпочтительнее, так как мы не хотим терять точку на контуре из -за приближения. Чтобы удалить нежелательные меньшие контуры, мы можем отфильтровать контуры по площади.

Общий NR контуры найден: 408

4. Заполните область внутри контуров и закройте Blobs

Вместо того, чтобы работать над оригинальным бинарным изображением, мы будем нарисовать верхние контуры на изображении с черным фоном и использовать его в качестве основания. Любое отключение в контурах легче идентифицировать при заполнении области внутри контуров, используя DrawContours функция

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

5. Отфильтруйте марки

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

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

  1. Дублируйте исходное изображение и размывайте все изображение.
  2. Проверка через размытое изображение, и для точек на изображении или внутри (с помощью pointpolygontest Чтобы проверить) мы заменяем его значениями пикселя с выходного изображения. Мы используем значения пикселя из выходного изображения, потому что нам нужны синие линии, нарисованные на марок.

Да, это все для этого поста. Вы можете получить доступ к этой записной книжке из Здесь Анкет

Оригинал: “https://dev.to/6aravind/stamp-detection-using-computer-vision-and-python-1ghg”