Контурный анализ — это один из важных и очень полезных методов описания, хранения, распознавания, сравнения и поиска графических образов/объектов.
Контур — это внешние очертания (обвод) предмета/объекта.
При проведении контурного анализа:
* полагается, что контур содержит достаточную информацию о форме объекта;
* внутренние точки объекта во внимание не принимаются.
31. Типы данных OpenCV — хранилище памяти, последовательность
На шаге про , вы, возможно, обратили внимание, на непонятные CvMemStorage и CvSeq, которые использовались в примерах использования функций cvHoughLines2() и cvHoughCircles()
OpenCV использует сущность хранилища памяти (memory storage — CvMemStorage) в своих методах, для которых требуется хранить динамические объекты. Фактически, хранилище памяти — это связанный список блоков памяти.
30. Трансформация изображения — аффинные преобразования, гомография
Преобразование плоскости(изображения) называется аффинным, если оно взаимно однозначно и образом любой прямой является прямая.
Взаимно однозначное преобразование, переводит каждую точку плоскости(изображения) I в другую точку плоскости(изображения) I', таким образом, что каждой точке I соответствует какая-то точка I'.
Возможно кто-нибудь помнит, как на новогодних каникулах мы проводили (подобен D-link DSL-2500U) и при выводе я обмолвился о возможности превращения модема в своеобразный -шилд.
Чтож, настала пора это сделать!
Раз уж мы научились брать , то было бы неплохо брать и интеграл изображения :)
Интегральное представление изображения — это матрица, размерность которой совпадает с размерностью исходного изображения. Элементы этой матрицы рассчитываются по формуле:
II(x,y) = Summ( I(i,j) )
, где I(i,j) — яркость пикселя исходного изображения.
На прошлом шаге мы узнали о функции, реализующей . Если вы немного поэкспериментировали с представленным примером, то обратили внимание, что cvCanny() помогает замечательно выделять границы предметов и окружающей обстановки. В нашем рукотворном мире городов и квартир преобладают прямые линии и другие простые геометрические формы (квадрат, прямоугольник, треугольник, круг).
Поэтому, одной из задач зрения робота может быть детектирование этих линий (для поиска каких-либо геометрических форм, например, дверного проёма, круглой розетки и т.п.)
Эта задача весьма неплохо решается с помощью т.н. преобразования Хафа.
27. Обработка изображения — детектор границ Кенни (Canny)
Края(границы) — это такие кривые на изображении, вдоль которых происходит резкое изменение яркости или других видов неоднородностей.
Проще говоря, край — это резкий переход/изменение яркости.
Причины возникновения краёв:
* изменение освещенности
* изменение цвета
* изменение глубины сцены (ориентации поверхности)
26. Обработка изображения — операторы Собеля и Лапласа
На прошлом шаге, мы рассмотрели операцию и отметили, что свёртка — это очень полезная и распространённая операция, лежащая в основе различных фильтров.
Одна из важнейших свёрток – это вычисление производных.
Рассмотрим процесс установки библиотеки OpenCV под ОС Linux на примере дистрибутива , но с незначительными вариациями должно сработать и под другими дистрибутивами (проверялось под ALT Linux).
Для установки OpenCV нужно архив с исходными текстами.
Скачаем последнюю (на данный момент) версию:
(англ. convolution) — это операция, показывающая «схожесть» одной функции с отражённой и сдвинутой копией другой.
В случае работы с изображениями — свёртка — это операция вычисления нового значения заданного пикселя, при которой учитываются значения окружающих его соседних пикселей.
Главным элементом свёртки является т.н. ядро свёртки — это матрица (произвольного размера и отношения сторон; чаще всего используется квадратная матрица (по-умолчанию, размеры 3х3)).