Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции? |
Самостоятельная работа 5: Сборка и установка Intel® Integrated Performance Primitives. Использование библиотеки в среде Microsoft® Visual Studio
4.5. Запуск приложения и проверка корректности
Для проверки корректности реализации, разработанной на базе Intel® IPP, необходимо реализовать функцию сравнения цветов пикселей отфильтрованных изображений. По существу в функции необходимо выполнить проход по всем пикселям и сравнить значения по каждому из трех каналов. В результате формируется количество пикселей, в которых не совпали значения интенсивности хотя бы по одному каналу.
int compare(const Mat &srcImgOCV, const Mat &srcImgIPP) { int kPoints = 0; int w = srcImgOCV.size().width, h = srcImgOCV.size().height, i, j, idx; for (i = 0; i < h; i++) { idx = 3 * i * w; for (j = 0; j < w; j++, idx += 3) { if (srcImgOCV.data[idx] – srcImgIPP.data[idx] != 0 || srcImgOCV.data[idx + 1] – srcImgIPP.data[idx + 1] != 0 || srcImgOCV.data[idx + 2] – srcImgIPP.data[idx + 2] != 0) { kPoints++; } } } return kPoints; }
На данный момент можно выполнить запуск приложения, нажав сочетание клавиш Ctrl+F5. В результате работы программы будет показано три изображения: исходное и два отфильтрованных (рис. 12.11). Если приложение отработало корректно, то наряду с этим в консоли будет выведено соответствующее сообщение (рис. 12.12). В противном случае, в консоли появится сообщение об ошибке с указанием количества пикселей, в которых получены разные цвета.
5. Разработка приложения для поиска прямых линий на изображении с использованием Intel® Integrated Performance Primitives
5.1. Постановка задачи
Задача поиска заданных геометрических примитивов на изображении (прямых, эллипсов, окружностей и т.п.) – одна из актуальных задач компьютерного зрения. Данная задача возникает при разработке приложений в сфере робототехники и видеоаналитики в процессе поиска объектов, имеющих типичную геометрическую форму. Также существует опыт применения методов поиска примитивов при распознавании рукописных текстов.
Обобщенное преобразование Хафа – наиболее известный метод определения положения геометрических примитивов заданной формы на изображении. В настоящей работе предлагается использовать данное преобразование применительно к задаче поиска прямых линий.
Во второй части лабораторной работы требуется разработать приложение, которое удовлетворяет следующим требованиям:
- Поддержка возможности поиска прямых линий с использованием преобразования Хафа, реализованного в библиотеке OpenCV.
- Поддержка поиска прямых линий с использованием преобразования Хафа и других необходимых функций библиотеки Intel® IPP.
- Отображение полученных прямых линий на исходном изображении.
5.2. Преобразование Хафа
Преобразование Хафа – метод обнаружения прямых и более сложных кривых на бинарных изображениях. Метод позволяет определить параметры семейства кривых и обеспечивает поиск на изображении множества кривых указанного семейства [1]. Первоначально метод был разработан применительно к поиску прямых линий, впоследствии был обобщен на произвольное семейство кривых, заданных параметрически.
Рассмотрим схему работы преобразования Хафа для определения прямых линий на изображении [7]. Прямую на плоскости можно задать параметрически в виде (1), исходя из геометрического представления, показанного на рис. 12.13.
( 1) |
где R – величина перпендикуляра, опущенного из начала координат системы на прямую, – угол наклона перпендикуляра относительно оси .
Тогда неявная функция, определяющая семейство прямых, может быть записана в форме (2).
( 2) |
Таким образом, через каждую точку проходит несколько прямых, соответствующих разным значениям параметров R и . По существу любой фиксированной точке ставится в соответствие набор точек в пространстве параметров . В свою очередь каждой точке можно поставить в соответствие количество точек , лежащих на прямой . Дискретность представления данных в машине требует введения сетки на плоскости параметров . И теперь каждой точке будем ставить в соответствие количество точек, принадлежащих семейству прямых (3).
( 3) |
Выбрав ячейку сетки, которой соответствует максимальное количество точек, получим наиболее вероятную прямую. В качестве параметров этой прямой можно принять координаты центра ячейки сетки. Если необходимо выделить несколько прямых, то достаточно отсортировать множество ячеек сетки в порядке убывания числа точек и выбрать определенное количество первых ячеек.
5.3. Схема решения задачи поиска прямых линий на цветном изображении с использованием преобразования Хафа
Схема решения задачи поиска прямых линий на цветном изображении с использованием преобразования Хафа включает несколько этапов:
- Загрузка изображения.
- Преобразование изображения в оттенки серого.
- Поиск ребер на полученном изображении. Ребра можно найти, например, с использованием детектора Канни. Различные способы выделения ребер были рассмотрены в лабораторной работе "Базовые операции обработки изображений".
- Применение преобразования Хафа к бинарному изображению, содержащему ребра.
- Преобразование полученных параметров прямых из полярной системы координат в декартову систему, связанную с исходным изображением.