Определение пространственной ориентации объекта, маркированного QR кодом

Алгоритм обнаружения и расшифровки QR кода. Методы 3D реконструкции, стереозрение. Определение ориентации плоскости кода относительно камеры. Программное обеспечение для распознавания QR кода и определения его ориентации. Описание и тестирование продукта.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.05.2014
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

[Введите текст]

Санкт-Петербургский ГосУдарственный политехнический университет

ИНСТИТУТ МЕТАЛУРГИИ, МАШИНОСТРОЕНИЯ И ТРАНСПОРТА

ОТДЕЛЕНИЕ ТЕХНОЛОГИЙ МАШИНОСТРОЕНИЯ

Кафедра «Мехатроника и роботостроение» (при ЦНИИ РТК)

ВЫПУСКНАЯ РАБОТА БАКАЛАВРА

Тема: Определение пространственной ориентации объекта, маркированного QR кодом

Направление: 220200.62.01 «Автоматизация и управление»

Санкт-Петербург, 2013

Реферат

QR КОД, КАМЕРА, ОБНАРУЖЕНИЕ И РАСПОЗНАВАНИЕ МЕТКИ, ПРОСТРАНСТВЕННАЯ ОРИЕНТАЦИЯ QR КОДА, РАЗРАБОТКА АЛГОРИТМОВ

Целью этой работы является разработка приложения для обнаружения, расшифровки и определения положения QR кода в пространстве.

С помощью библиотеки OpenCV реализовано обнаружение и обработка QR кода. На основе спецификации ISO/IEC 18004 Information technology - Automatic identification and data capture techniques - Bar code symbology - QR Code (Информационная технология - Автоматическая идентификация и сбор данных - Символика штрихового кода - QR Код) изучен и программно реализован алгоритм расшифровки QR кода. Разработан алгоритм определения положения QR кода в системе координат, связанной с камерой.

Данное приложение может быть использования для нахождения определенного объекта среди объектов, на которых нанесен QR код и позиционирования манипулятора с использованием данных об ориентации плоскости QR кода.

Содержание

Введение

1. Алгоритмы распознавания графического маркера

1.1 Алгоритм обнаружения QR кода

1.2 Алгоритм расшифровки QR кода

2. Методы 3D реконструкции

2.1 Метод триангуляции

2.2 Стереозрение

2.3 Определение ориентации плоскости QR кода относительно камеры

3. Программное обеспечение для распознавания QR кода и определения его ориентации

3.1 Описание программы

3.2 Тестирование программы

4. Применение разработанного программного обеспечения

Заключение

Список использованных источников

Перечень условных обозначений, терминов и сокращений

3D

-

трехмерное пространство или изображение

2D

-

двумерное изображение

ПЗС

-

прибор зарядовой связи

QR

quick response (быстрый отклик)

Введение

код плоскость программный обеспечение

В настоящее время для маркировки различной продукции всё чаще используется QR код. Данную особенность можно использовать для создания автоматических систем обнаружения, захвата и транспортировки этой продукции на основе обработки информации, зашифрованной в QR коде и информации об ориентации кода в пространстве.

Для возможности работы подобной системы необходимо, чтобы графический маркер находился в строго определенном месте на объектах, с которыми будут производиться манипуляции. С помощью видеокамеры будет детектироваться QR код и информация, полученная в ходе его обработки, будет использования для позиционирования устройств захвата объекта для его последующей транспортировки.

Эти коды представляют собой миниатюрные носители данных, которые хранят текстовую информацию объемом в половину страницы А4 формата. При помощи белых и черных квадратов эти данные кодируются. Тогда как расшифровка осуществляется посредством специальных сканирующих устройств. То есть используется тот же принцип, что и в компьютерной технике. Их объединяет следующее правило: определенному сочетанию квадратов соответствует конкретное значение (к примеру, число или буква).

Отметим, что QR-коды могут быть выполнены с использованием бинарных сочетаний цветов, отличных от сочетания «черный-белый». Главное, чтобы между темными и светлыми участками был четко выраженный контраст.

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

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

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

В первом разделе описаны разработанные алгоритмы обнаружения и расшифровки QR кода.

Во втором разделе приведен обзор методов нахождения координат объекта и описан разработанный алгоритм определения ориентации объекта по графическому маркеру.

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

1. Алгоритмы распознавания графического маркера

1.1 Алгоритм обнаружения QR кода

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

Рисунок 1 - Изначальное изображение

Ниже приведен алгоритм обнаружения QR кода, реализованный с помощью библиотек VideoInput и OpenCV. Идея данного алгоритма описывается в [1]. Данный алгоритм был нами модифицирован и дополнен деталями необходимыми для его практического использования.

В качестве технического средства была использована веб-камера Ritmix RVC-006M с матрицей 0,3 мегапикс, разрешением видео 640*480, подключенная через USB 2.0. А в качестве среды разработки была выбрана среда Visual Studio 2010, а в качестве языка программирования - C++ . такой выбор обусловлен тем, что на этом языке написана мощная профессиональная библиотека для реализации задач компьютерного зрения OpenCV. Также для осуществления захвата видео была использована библиотека videoInput.

OpenCV - Библиотека компьютерного зрения с открытым исходным кодом(Open Source Computer Vision Library), содержащая более 500 функций. До первой версии разработкой занималась русская команда Intel в Нижнем Новгороде. Библиотека содержит алгоритмы для обработки, реконструкции и очистки изображений, распознания образов, захвата видео, слежения за объектами, калибровки камер и др. [2].

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

Приложения должны быть переносимыми, оптимизированными, код которых не обязательно должен быть открытым. Приложения также могут создаваться в коммерческих целях. OpenCV поддерживает компиляторы Visual C++, Borland C++, Intel Compiler, MinGW, GCC, Intel Compiler, Carbon. В начале мы подключаемся к web камере с помощью библиотеки VideoInput и делаем снимок QR кода и далее начинаем обработку снимка (рисунок 5). Преобразуем полученное изображение в градации серого, делаем изображение двоичным с помощью порогового преобразования. Всем пикселям, значение которых меньше порога, присваиваем значение 255 - белый цвет, всем пикселям, значение которых выше порога присваиваем 0 - черный цвет. Для получения корректного результата нужно, чтобы снимок был достаточно контрастным. Таким образом, мы получаем черно-белое изображение.

Далее находим все контуры, которые присутствуют на черно-белой картинке. Теперь среди найденных контуров нам необходимо найти 3 мишени. Мишень - область QR кода образованная тремя вложенными квадратами с отношением сторон 7:5:3 (рисунок 2).

Рисунок 2 - Мишень QR кода

Считаем мишенью квадрат, имеющий внутри себя два вложенных квадрата (рисунок 3).

Рисунок 3 - Изображение с найденными мишенями

Для того чтобы найти мишени, нужно сначала отыскать среди контуров все квадраты, и потом для каждого квадрата проверить: есть ли в нем 2 вложенных квадрата.

В цикле обходим все контуры и ищем квадраты. Чтобы определить, что контур является квадратом, используем два критерия поиска: 1) мы найдем размеры минимального прямоугольника, охватывающего текущий контур и, перемножив размеры, получим площадь этого прямоугольника. Напрямую с помощью специальной функции OpenCV найдем площадь контура. Если площади контура и прямоугольника, ограничивающего контур, примерно совпадают, то можно считать этот контур прямоугольником;

2) сравниваем высоту и ширину прямоугольника, ограничивающего контур. Если они примерно равны, то считаем это прямоугольник квадратом.

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

Определяем точки-вершины каждой мишени. Мы имеем все вершины QR кода кроме правой нижней. Для того, чтобы ее определить проведем прямые линии через правую сторону правой верхней мишени и нижнюю сторону левой нижней мишени. Точка пересечения данных прямых (точка А на рисунке 4) будет искомой нижней правой вершиной QR кода.

Рисунок 4 - Нахождение правой нижней вершины QR кода

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

1.2 Алгоритм расшифровки QR кода

Полученный методами компьютерного зрения массив нулей и единиц будет расшифрован с помощью алгоритма, описанного в спецификации ISO/IEC 18004 Информационная технология - Автоматическая идентификация и сбор данных - Символика штрихового кода - QR Код [3]. Опишем данный алгоритм:

1) получение массива "0" и "1" бит;

2) считывание информации о формате QR кода. Извлечение информации о маске (рисунок 5);

Рисунок 5 - Состав QR кода

3) считывание информации о версии (где применимо), а затем определение версии кода; 4) применение к каждой ячейки массива маски посредством исключающего или. Всего существует 8 видов масок, значения бит которых определяются по формулам (1) - (8);

(i + j) mod 2 = 0, (1)

(i)mod 2 = 0, (2)

(j)mod 3 = 0, (3)

(i + j) mod 3 = 0, (4)

((i div 2) + (j div 3)) mod 2 = 0, (5)

(i j) mod 2 + (i j) mod 3 = 0, (6)

((i j) mod 2 + (i j) mod 3) mod 2 = 0, (7)

((i j) mod 3 + (i+j) mod 2) mod 2 = 0, (8)

где i и j - номера ячеек.

Рисунок 6 - Виды масок

Применяем маску к полученному нами массиву посредством операции XOR (рисунок 7);

Рисунок 7 - Применение маски

5) определение режима кодирования и считывание кода в соответствии с правилами размещения и восстановление данных и кодовых слов в сообщении.

Узнаем индикатор режима по четырем битам в правом нижнем углу и соответствующий ему режим по таблице 1.

В данной работе мы реализуем два режима: числовой и 8-битный. Цифровой режим кодирует данные из десятичного набора цифр (0 - 9) (ASCII значения 30HEX к 39HEX) при нормальной плотности 3 символа данных на 10 бит. В 8-битный режиме кодируется 8-битный Latin/Kana набор символов в соответствии с JIS X 0201 (символьные значения 00hex к FFhex). В этом режиме плотность данных составляет 8 бит / символ;

6) обнаружение ошибок с помощью коррекции ошибок кодовых слов. Если любая ошибка обнаружена, то исправить ее;

Таблица 1 - Режимы кодирования

Режим

индикатор

ECI

0111

Числовой

0001

Буквенно-цифровой

0010

8-битный

0100

Kanji

1000

Structured Append

0011

FNC1

0101

Разделитель

0000

7) разделение кодовых слов данных на сегменты в зависимости от режима и показателями количество символов (рисунок 8).

Считывание происходит змейкой, начиная с правой нижней ячейки (рисунок 9). Старший значащий бит (бит 7) каждого кодового блока находится в первом доступном положении модуля;

Рисунок 8 - Сегменты с данными

Рисунок 9 - Считывание бит

8) наконец, декодирование данных в соответствии с режимом.

2. Методы 3D реконструкции

2.1 Метод триангуляции

Триангуляция - это способ измерения расстояний и определения положения объектов, часто с использованием лазера. Он использует способность лазерного луча распространяться в хорошо коллимированной форме (т.е. с малой расходимостью) на большие расстояния. Обычно лазерный луч освещает точку, расстояние до которой от лазерного устройства необходимо измерить; по существу, лазер используется в качестве указателя. Рассеянное или зеркальное отражения от этой точки контролируются детектором, который устанавливается на некотором расстоянии от лазерного луча, таком, что источник лазерного излучения, объекта и детектор образуют треугольник. На детекторе линза фокусирует отраженный свет на ПЗС-матрице, и положение яркого пятна на чипе показывает направление входящего света, т. е. угол между лазерным лучом и возвращенным светом, откуда расстояние и может быть рассчитано [4].

Высокая скорость обнаружения позволяет отслеживать положение движущейся или вибрирующей части, например, какой-либо машины. Полученная точность может, как правило, достигать одной тысячной доли расстояния. Для рассеянного отражения расстояние может быть ограничено требованием получить определённую отраженную оптическую мощность; при зеркальном отражении могут быть измерены гораздо большие расстояния, но требуется какое-либо угловое выравнивание в направлении измерения.

Принцип триангуляции также может быть реализован с помощью лазерного луча, в направлении которого производится быстрое сканирование в двух измерениях (рисунок 10). Таким образом, можно получить трехмерные (3D) изображения.

В идеале, лазерный источник для триангуляции должен иметь высокое качество пучка, чтобы осветить небольшое пятно на большом расстоянии. Так же требуется определенная оптическая мощность, особенно для целей с рассеянным отражением. Лучше использовать безопасные для глаз длины волны лазерного излучения (например, в 1,5 мкм области), хотя видимый луч помогает убедиться, что подсвечена правильная точка.

Триангуляционный метод измерения - это перспективный и широко применяемый подход к решению важных измерительных задач в разных областях науки. Этот метод в основном использовался в геодезии и картографии, и только с недавних пор стал развиваться в направлении линейно-угловых измерений и контроля точных деталей сложной формы. Связано данное обстоятельство в первую очередь с тем, что электронные компоненты необходимые для создания устройств на базе триангуляционного метода не соответствовали требованиям, предъявляемым к ним, и были невыгодны для внедрения в производство по соотношению цена-качество, но сейчас положение изменилось к лучшему. Метод оптической триангуляции положен в основу современных измерительных устройств, таких как триангуляционные щупы и датчики, лазерные 2D/3D профиломеры, лазерные 3D сканеры и другие.

Рисунок 10 - Принцип триангуляции

2.2 Стереозрение

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

Стереозрение включает два процесса: совмещение деталей, наблюдаемых двумя (или большим числом) камерами и восстановление их трехмерного прообраза. Последний процесс относительно прост: прообраз соответствующих точек можно (в принципе) найти как точку пересечения лучей, проходящих через эти точки и центры соответствующих диафрагм камер. Следовательно, если характерную точку изображения можно наблюдать в любой момент времени, стереозрение реализуется просто [6].

При наличии откалиброванного стереоустройства и двух согласованных точек изображений р и р' задача восстановления соответствующей точки прообраза - это, в принципе, простой процесс: требуется найти пересечение двух лучей, R = Ор и R' = О'р'. В то же время, на практике лучи R и R' никогда не пересекаются, поскольку имеются ошибки калибровки и локализации характерных точек образа (рисунок 11). В таком контексте для решения задачи восстановления можно применять различные разумные подходы. Например, можно построить сегмент прямой, перпендикулярный R и R', который пересечет оба данных луча: средняя точка Р этого сегмента - ближайшая к двум лучам, и ее можно считать прообразом точек р и р'.

Размещено на http://www.allbest.ru/

[Введите текст]

Рисунок 11 - Восстановление точки прообраза

Точку прообраза можно восстановить и с помощью альтернативного, чисто алгебраического подхода: для данных проекционных матриц М и М' и согласованных точек р и р' условия zp = MP и z'p' = MP можно переписать следующим образом: p*MP = 0, p`*M`P = 0.

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

Можно восстановить точку прообраза, соотнесенную с р и р', как точку Q с образами q и q' минимизировав величину d2(p,q) + d2(p'',q'). В отличие от двух других методов, представленных в этом разделе, данный подход не позволяет аналитически вычислить восстановленную точку.

2.3 Определение ориентации плоскости QR кода относительно камеры

Математическая модель камеры

Модель камеры представляет собой перспективную проекцию, где камера находится в центре перспективы. Изображение проецируется на картинную плоскость, находящуюся между камерой и наблюдаемым предметом [1].

С точкой О (рисунок 12), в которой находится камера, свяжем систему координат (X,Y,Z). Из этой точки опустим перпендикуляр на картинную плоскость. Точка пересечения перпендикуляра и картинной плоскости называется принципиальной точкой p. С этой точкой свяжем систему отсчета (x,y).

Рисунок 12 - Модель камеры

Системы координат (X,Y,Z) и (x,y) связаны нелинейным преобразованием (формулы (9) и (10)).

(9)

(10)

Свяжем систему координат (u,v) с левым верхним углом. Отсчет в этой системе происходит в пикселях (рисунок 13). Принципиальная точка имеет координаты p=(0,0) в системе (x,y); координаты (0,0,Z) в системе (X,Y,Z) и координаты (Cx,Cy) в системе (u,v).

Рисунок 13 - Система координат (u, v)

Системы координат (u,v) и (x,y) связаны аффинными преобразованиями (формулы (11) и (12)).

,

где pix - длина пикселя.

Подставляя формулы (9) и (10) в формулы (11) и (12), получаем выражения, связывающие системы (u,v) и (X,Y,Z).

, (13)

, (14)

где f = 3,85 мм;

pix = 0,0232 мм;

Cx = 300 пикселей;

Cy = 255 пикселей.

Параметры Cx и Cy были определены в ходе калибровки камеры с разрешением 640*480.

Создание алгоритма для определения ориентации по ключевым точкам QR кода

Нашей задачей является определение углов поворота QR кода вокруг осей x и y. Информацию об этих углах мы получим, сравнивая изображение повернутого QR кода, центр которого расположен на расстоянии Z` от камеры, с QR кодом, находящемся на таком же расстоянии, но в картинной плоскости, то есть с нулевыми углами поворота. В данной работе мы используем факт, что координаты точек QR, лежащих на осях ox и oy, изменяются под влиянием только одного поворота.

Сначала нам нужно узнать координаты центра p` =(CCx,CCy) QR кода на изображении в системе (u,v) (рисунок 14) . Определить их примерно можно по формулам (14) и (15).

Рисунок 14 - Картинная плоскость камеры

15)

(16)

где LeftUp, RightUp, LeftDown, RightDown - ключевые точки изображения QR кода.

Для начала рассмотрим случай поворота QR кода только вокруг одной оси x (рисунок 15).

Рисунок 15 - Поворот QR кода вокруг x`

Пусть длина стороны квадрата равна A, тогда в системе (x`,y`) вершины квадрата, лежащего в картинной плоскости имеют координаты (-A/2,-A/2); (A/2,-A/2); (A/2,A/2); (-A/2,A/2). Предположим, QR код повернут вокруг x` на угол a, тогда координаты точек этого квадрата, лежащих на оси ох` не изменятся, а координаты точек Vв и Vн, лежащих на оси oy`, уменьшатся. Используя рисунок, на котором представлен вид сбоку, можно выразить координату точки Vн в системе (X,Y,Z) через a (рисунок 16).

Рисунок 16 - Плоскость QR кода, вид сбоку

(17)

После поворота по часовой стрелке вокруг оси ox` точка Vн стала находиться ближе к камере, а значит, ее координата Z уменьшилась на sin(a)*A/2.

Используя формулу (13), выразим координату точки Vн в системе (u,v) через a и получим формулу (18):

, (18)

где Z` - координата центра квадрата.

Значение Vн получаем из анализа изображения. Зная Z` мы находим угол поворота a. Аналогичным образом определим угол поворота b вокруг оси oy.

При повороте вокруг оси oy координаты точек кода, лежащих на оси oy не изменятся, а по изменению координат точек, лежащих на оси ox, можно судить об угле b (рисунок 17).

Рисунок 17 - Поворот вокруг обеих осей x и y

При повороте против часовой стрелки вокруг oy координата Z точки Uп увеличится и станет равна Z`+A/2*sin(b), а координата X уменьшится и станет равна cos(b)*A/2.

(19)

Используя формулу (19) и зная Z`, находим искомый угол b.

Определение угла поворота QR кода в картинной плоскости камеры, т. е. в плоскости xoy, будет производиться путем анализа координат центров верхней левой и верхней правой мишеней. При нулевом угле поворота координаты у обеих мишеней совпадают, а при повороте кода изменяются. По разности ?координат можно судить об угле поворота.

3. Программное обеспечение для распознавания QR кода и определения его ориентации

3.1 Описание программы

Программа представляет собой приложение для распознавания кода и определения углов поворота плоскости, в которой он лежит, относительно камеры. Для распознавания QR кода нами была использована библиотека для работы с компьютерным зрением OpenCV. С помощью нее кадры, поступающие с камеры, обрабатываются и проверяются на наличие QR кода. Работу части программы, отвечающей за детектирование, описывает блок схема, изображенная на рисунке 18.

Рисунок 18 - Блок-схема алгоритма обнаружения QR кода

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

Рисунок 19 - Блок-схема алгоритма расшифровки QR кода

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

3.2 Тестирование программы

При запуске программы начинается видеозахват с камеры. Все снимки делаются автоматически (рисунок 20).

Рисунок 20 - Снимок QR кода

На камеру поступает картинка каждые 33 мc, автоматически обрабатывается и сканируется на наличие мишеней (рисунок 22).

Рисунок 21 - Снимок после порогового преобразования

Рисунок 22 - Снимок с нарисованными на нем найденными мишенями

Как только поступает изображение, имеющее 3 мишени, запускается код распознавания: находятся вершины QR кода, строится сетка и далее массив нулей и единиц, который выводится в консоль и записывается в файл (рисунок 23).

Рисунок 23 - Снимок с нарисованной на нем построенной сеткой

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

Далее в соответствии с разработанным алгоритмом мы определяем ориентацию кода относительно камеры, т. е. углы поворота в системе координат, связанной с камерой и выводим результаты в консоль (рисунок 24).

Рисунок 24 - Вывод результатов в консоль

В данном примере видно, что QR код повернут вокруг трех осей: на угол равный 2 градуса вокруг оси х, на 3 градуса - вокруг оси у и на 5 градусов в картинной плоскости, т. е. вокруг оси z. В ходе многочисленных тестов программы установлено, что относительная погрешность измерения углов поворота плоскости кода относительно камеры составляет 20%.

4. Применение разработанного программного обеспечения

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

1) возможностью выделения существенной информации из множества независимых признаков;

2) способностью к обучению на примерах и обобщению этих знаний с целью их применения в новых ситуациях;

3) возможностью восстановления событий по неполной информации;

4) способностью определять цели и формулировать планы для достижения этих целей.

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

Заключение

В ходе выполнения работы был разработан и программно реализован на языке C++ и с помощью библиотеки OpenCV алгоритм обнаружения QR кода. На основе спецификации ISO/IEC 18004 Information technology - Automatic identification and data capture techniques - Bar code symbology - QR Code изучен и программно реализован алгоритм расшифровки QR кода. Также был разработан алгоритм определения углов смещения QR кода на основе данных о координатах ключевых точек QR кода, полученных при его распознавании. Значения определенных углов являются приблизительными, возможны отклонения от истинных значений в размере 20%, что установлено экспериментальным путем. Разработанное программное обеспечение может быть использовано для позиционирования манипуляторов роботов в случаях, когда не требуется высокая точность.

Список использованных источников

1. Детектирование QR Code с помощью средств OpenCV [Электронный ресурс] - Режим доступа: http://recog.ru/blog/barcode/3.html. - Загл. с экрана. (Дата обращения: 20.05.2013).

2. Gary Bradski, Adrian Kaehler. Learning OpenCV.: издательство O'Reilly, 2008. -577с.

3. ISO/IEC 18004 Information technology - Automatic identification and data capture techniques - Bar code symbology - QR Code. - 122c.

4. Фрайден Дж. Современные датчики. Справочник. - М.: издательский центр Техносфера, 2006 - 801 с.

5. Назаров А.С. Фотограмметрия: учеб. пособие для студентов вузов. - Мн.: ТетраСистемс, 2006. - 368 с.

6. Форсайт Дэвид А. Компьютерное зрение. Современный подход. - М.: издательский дом "Вильямс", 2004.- 928с.

Размещено на Allbest.ru


Подобные документы

  • Выполнение отладки программных модулей с использованием специализированных программных средств. Тестирование, оптимизация кода модуля. Реализация базы данных в конкретной системе управления. Анализ проектной и технической документации на уровне компонент.

    дипломная работа [5,0 M], добавлен 08.06.2017

  • Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.

    реферат [30,7 K], добавлен 01.03.2011

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

    лабораторная работа [8,0 K], добавлен 29.06.2011

  • Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.

    курсовая работа [51,7 K], добавлен 24.12.2012

  • Характеристика рефакторинга как процесса изменения структуры программы. Предпосылки его проведения, основополагающие принципы. Признаки "плохого" кода. Применение кодирования и управления исходным кодом в качестве приема "Экстремального программирования".

    контрольная работа [26,2 K], добавлен 29.05.2014

  • Исследование методов оптимизации программного кода на языке Си с помощью компилятора. Тестирование результатов утилитой optbench.c. Определение особенностей оптимизации компилятора на собственной программе. Удачные примеры быстроты и компактности кода.

    лабораторная работа [26,5 K], добавлен 17.12.2012

  • Общее описание и особенности использования программы, предназначенной для определения нечетных чисел, находящихся в массиве чисел. Листинг и методы оптимизации данной компьютерной программы. Источники оптимизации кода, описание выполненных команд.

    лабораторная работа [17,4 K], добавлен 25.03.2011

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

    курсовая работа [775,3 K], добавлен 09.02.2009

  • Определение понятий кода, кодирования и декодирования, виды, правила и задачи кодирования. Применение теорем Шеннона в теории связи. Классификация, параметры и построение помехоустойчивых кодов. Методы передачи кодов. Пример построения кода Шеннона.

    курсовая работа [212,6 K], добавлен 25.02.2009

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

    курсовая работа [26,4 K], добавлен 01.12.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.