Библиотека OpenCV

На втором этапе - этапе слежения (Tracking) - определяются смещения для каждой особой точки между соседними кадрами и рассчитывается средний по всем точкам вектор сдвига для каждой пары кадров.

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

Таким образом, если в предыдущем кадре координаты особой точки обозначить , то в области поиска ищется такой вектор , что сумма по окрестности будет минимальна:

(3.11)

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

Функцией поиска контуров является функция cvFindContours:

int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) ) ,

где image - исходное 8-битное одноканальное изображение. Ненулевые пиксели считаются 1, нулевые остаются 0 - рассматривается как двоичный файл. Для получения такого бинарного изображения с оттенками серого, можно использовать функции cvThreshold, cvAdaptiveThreshold или cvCanny. Функция изменяет содержимое исходного изображения; Storage - ячейка памяти, содержащая полученные контура; first_contour - выходной параметр, содержащий указатель на первый найденный контур; header_size - размер последовательности заголовка >=sizeof(CvChain).

Таблица 3.1 - Параметры функции выделения контуров

CV_RETR_EXTERNAL

если необходимы только крайние внешние контуры

CV_RETR_LIST

выделение всех контуров и помещение их в список

CV_RETR_CCOMP

выделение всех контуров и помещение их в двойную иерархию

CV_RETR_TREE

получить все контура и реконструировать полную иерархию вложенных контуров

- метод аппроксимации (для всех модов, кроме CV_RETR_RUNS,который использует встроенную аппроксимацию);

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

Таблица 3.2 - Методы аппроксимации для функции определения контуров

CV_CHAIN_APPROX_NONE

преобразует все точки из цепочки в точки

CV_CHAIN_APPROX_SIMPLE

сжимает горизонтальных, вертикальных и диагональных сегментах, то есть функция остается только прекращение их центры

CV_CHAIN_CODE

выходные контура в цепочечном коде Фримена

CV_CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOS

применение одного из аппроксимационных цепочечных кодов Тех-Чина

CV_LINK_RUNS

использовать другой алгоритм поиска контура с помощью горизонтальных связей сегментов в один. Только CV_RETR_LIST может быть использован с этим методом

Перейти на страницу: 1 2 3 4 5

Другое по теме:

Регистратор колебаний поверхности земли
Тема курсового проекта «Регистратор колебаний поверхности земли ». Одним из важнейших факторов, определяющим темпы научно-технического прогресса в современном обществе, являются СВТ (средства вычислительной техники). Ускор ...

Современное состояние и перспективы развития связи в России
Анализ мирового опыта, а также результаты исследований, выполненных ITU-T и рядом компаний, позволяют выделить следующие основные технические и технологические тенденции развития электросвязи. • развитие ...

©  www.techvarious.ru - 2020