Распознавание штрих-кодов с ИИ

Как проект / опыт обучения домашних животных (нет, это не домашняя работа) Я работаю над программным обеспечением для распознавания штрих-кодов по фотографии , Я не ищу программное обеспечение или библиотеку, которая делает это - вместо этого я использую это как учебное упражнение, о котором я пишу в блоге и опубликую в Codeplex.

У меня есть код, который успешно распознает штрих-коды EAN13 (который Я опубликовал на CodePlex) и UPC версия A / E должна последовать в ближайшее время. У меня есть две области, которые меня беспокоят, хотя. Во-первых, декодирование штрих-кодов, которые выглядят немного размытыми или с низкой контрастностью и т. Д. Во-вторых, просто находим фактический штрих-код на большом изображении (сейчас вы должны дать мне фотографию только штрих-кода).

У меня ощущение, что какая-то форма ИИ поможет мне здесь. В прошлом я немного поиграл с генетическими алгоритмами и несколько лет назад прошел курс обучения искусственному интеллекту, поэтому он не совсем чужд мне, но я не совсем уверен, с чего начать.

Какой тип алгоритма лучше всего подходит для этого? тип проблемы? Любое рекомендуемое чтение или код для искусственной работы AI? Да, я хочу понять, что происходит, но я не обязательно хочу опускаться до уровня кодирования и т.д.

6
задан ctacke 15 April 2013 в 19:11
поделиться

3 ответа

Я бы посоветовал поискать свойства штрих-кода. Я имею в виду следующие:

  1. Гистограмма цветов показывает два различных цвета с примерно равным распределением
  2. Выполнение хотя преобразование обнаруживает много параллельных линий
  3. Толщина линий имеет два различных Габаритные размеры.

Что-то другое?

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

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

Это вам поможет?

9
ответ дан 8 December 2019 в 18:29
поделиться

Как уже отмечал mp, для этого вам не нужна настоящая техника искусственного интеллекта. Взгляните на главу 12 Real World Haskell . Он реализует почти полный распознаватель штрих-кода. Пример кода находится на Haskell, но есть много объяснений, поэтому вы, вероятно, сможете понять идеи и приемы даже без опыта работы с Haskell.

Если вы хотите решить эту проблему с помощью ИИ, то, вероятно, лучше всего использовать ИНС. Для данной проблемы я бы рекомендовал использовать довольно продвинутую технику под названием HyperNEAT. См. Мое объяснение (и ссылки) как первый ответ на вопрос SO Размер нейронной сети ...

Я бы, вероятно, использовал две или три разные сети,

  • Первую, которая обнаружит штрих-код на большей рисунок. Один выходной нейрон на пиксель / набор пикселей, выходное значение - это уверенность, если этот пиксель кажется частью штрих-кода. Основываясь на результате, я бы использовал некоторую трансформацию изображения, чтобы преобразовать его в «стандартный» формат (прямоугольник x * y)
  • . Если у вас возникли трудности с поиском местоположения штрих-кода, используйте второй. Накормите результат первого и попросите дать координаты двух углов. Однако я не совсем уверен, что это будет очень легко развить.
  • Последний будет работать в стандартизированном формате, выводя нейроны для каждой строки (или квадрата, если вы работаете, возможно, с двумерным штрих-кодом), сообщая, следует ли считать данную область черной или белой.

Возможно, это также поможет выполнить некоторую предварительную обработку изображения, например те, что описаны в RWH.

4
ответ дан 8 December 2019 в 18:29
поделиться

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

0
ответ дан 8 December 2019 в 18:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: