Министерство образования и науки Российской
Download
1 / 25

???????? : ??????? ?.?. - PowerPoint PPT Presentation


  • 192 Views
  • Uploaded on

Министерство образования и науки Российской федерации Государственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского» Радио ф изический факультет Лаборатория физических основ беспроводной связи.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '???????? : ??????? ?.?.' - clovis


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
2646539

Министерство образования и науки Российской федерации

Государственное образовательное учреждение высшего профессионального образования

«Нижегородский государственный университет им. Н.И. Лобачевского»

Радио физический факультет

Лаборатория физических основ беспроводной связи

Выполнил:Миронов И.М.

“Введение в OpenCV”


2646539

Введение науки Российской

  • OpenCV (OpenSourceComputerVision) — библиотека компьютерного зрения с открытым исходным кодом

  • Реализована на C/C++, также разрабатывается для Python, Ruby, Matlab, Lua


2646539
Поддерживаемые платформы науки Российской

  • Microsoft Windows:

    • MicrosoftVisual C++ (6.0-9.0, .NET)

    • Intel Compiler,

    • Borland C++,

    • Mingw (GCC 3.x).

    • qt

  • Linux(В том числе и MeeGo):

    • GCC (2.9x, 3.x),

    • Intel Compiler: «./configure-make-make install»

    • qt

  • Mac OS X:

    • GCC (3.x, 4.x)

  • Android:

    • Android-NDK+cmake


2646539
Модули науки Российской


2646539
Модули науки Российской

  • opencv_core — основная функциональность. Включает в себя базовые структуры, вычисления(математические функции, генераторы случайных чисел) и линейную алгебру, DFT, DCT, ввод/вывод для XML и YAWL и т. д.

  • opencv_imgproc — обработка изображений (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.).

  • opencv_highgui — простой UI, ввод/вывод изображений и видео.

  • opencv_ml — статистические модели машинного обучения (SVM, деревья решений, обучение со стимулированием и т. д.).


2646539
Модули науки Российской

  • opencv_features2d — распознавание и описание плоских примитивов (SURF, FAST и другие, включая специализированный фреймворк).

  • opencv_video — анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).

  • opencv_objdetect— обнаружение объектов на изображении (нахождение лиц с помощью алгоритма Виолы-Джонса (англ.), распознавание людей HOG и т. д.).

  • opencv_calib3d — калибровка камеры, поиск стерео-соответстсвия и элементы обработки трехмерных данных.


2646539
Модули науки Российской

  • opencv_flann — библиотека быстрого поиска ближайших соседей (FLANN 1.5) и обертки OpenCV.

  • opencv_contrib— сопутствующий код, еще не готовый для применения.

  • opencv_legacy — устаревший код, сохраненный ради обратной совместимости.

  • opencv_gpu — ускорение некоторых функций OpenCV за счет CUDA, создан при поддержке NVidia


2646539
Создание окон науки Российской

  • intcvNamedWindow( constchar* name, intflags ); — создаёт окно, в которое мы будем выводить наше изображение.

    • Первый параметр — название окна

    • Второй — его размер, 0 — даёт возможность изменять размер окна во время выполнения программы, но обычно указывается флаг CV_WINDOW_AUTOSIZE, который указывает, что окно будет ровно тех же размеров, что и загружаемое в него изображение.

  • voidcvShowImage( constchar* name, constCvArr* image );—

    эта функия отображает изображение в окне;

    • первый параметр — название окна для вывода картинки,

    • второй параметр — изображение для вывода.

  • intcvWaitKey( intdelay=0 ); — эта функция останавливает программу и ожидает нажатия клавиши заданное число миллисекунд и продолжает программу, если ничего не нажато.


2646539
Освобождение ресурсов науки Российской

  • void cvReleaseImage( IplImage** image ); — функция освобождает память, выделенную под изображение и устанавливает указатель в NULL. void cvDestroyWindow( const char* name ); — эта функция закрывает окно и освобождает выделенную память.


2646539
Структура изображения науки Российской

  • IplImage – структур для хранения изображений

  • Наиболее часто используемые поля:

    • intnSize;

    • intnChannels;

    • int depth;

    • int width;

    • int height;

    • char *imageData;

    • intdataOrder;


2646539
Загрузка изображения науки Российской

  • IplImage* cvLoadImage( const char* filename, intiscolor=CV_LOAD_IMAGE_COLOR ); — загружает картинку из файла.

    • filename — имя файла

    • iscolor — определяет как представить картинкуiscolor > 0 — цветная картинка с 3-мя каналамиiscolor == 0 — картинка будет загружена в формате GRAYSCALE (градации серого)iscolor < 0 — картинка будет загружена как есть


Opencv
Простейшая программа на науки Российской OpenCV

  • #include <highgui.h>int main(intargc, char** argv){IplImage *image = cvLoadImage(“testimage.jpg”, 1);        // окно для отображения картинкиcvNamedWindow(“Test”,CV_WINDOW_AUTOSIZE);        // показываем картинкуcvShowImage(“Test”, image);        // ждём нажатия клавишиcvWaitKey(0);        // освобождаем ресурсыcvReleaseImage(& image);        // удаляем окноcvDestroyWindow(“Test”);

    return 0;}


2646539
Детектирование лиц науки Российской

  • Детектор лица OpenCV использует метод П.Виолы и М.Джонса, который был опубликован в 2001

  • Этот подход к детектированию объектов на изображении комбинирует четыре ключевые концепции:

    • Простые прямоугольные функции, называемые функциями Хаара.

    • Интегральное Изображение для быстрого обнаружения функции.

    • Метод машинного обучения AdaBoost.

    • Каскадный классификатор для эффективного совмещения множественных функций.


2646539
Функции науки Российской Харра

  • Функции Харра представляют собой прямоугольные волны одинаковой длины


2646539
Интегральное Изображение для быстрого обнаружения функции Харра

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

  • Наличие функции Хаара определяется посредством вычитания среднего значения области темных пикселей из среднего значения области светлых пикселей. Если разница превышает порог (определяется в процессе обучения), тогда говорят, что функция является существующей.


Adaboost
Метод машинного обучения быстрого обнаружения функции AdaBoost


2646539
Каскадный классификатор быстрого обнаружения функции


2646539
Работа с каскадами быстрого обнаружения функции

  • CvHaarClassifierCascade * cascade– хранит данные классификатора, загруженного из xml файла.

  • Для загрузки XML-данных из файла можно использовать функцию cvLoad()

    • cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name, 0, 0, 0);


2646539
Буфер памяти быстрого обнаружения функции

  • CvMemStorage*storage; - динамически расширяемый буфер памяти. В него пишется перечень найденных лиц.

  • storage = cvCreateMemStorage(0);- выделение памяти для буфера.

  • cvReleaseMemStorage(&storage);- освобождение памяти буфера.


2646539
Последовательности данных быстрого обнаружения функции

  • Последовательности - это самостоятельно связанные списки разных структур.

  • Единственный вид объекта, который может храниться в хранилище памяти, является последовательность.

  • В OpenCVпоследовательности описываются структурой CvSeq.


Cvseq
Структура быстрого обнаружения функции CvSeq

typedefstructCvSeq {

intflags; // разные флаги

intheader_size; // размер заголовка последовательности

CvSeq* h_prev; // горизонтально-предыдущая последовательность

CvSeq* h_next; // горизонтально-следующая последовательность

CvSeq* v_prev; // вертикально-предыдущая последовательность

CvSeq* v_next // вертикально-следующая последовательность

inttotal; // общее число элементов

intelem_size; // размер элемента последовательности в байтах

char* block_max; // максимальная граница последнего блока

char* ptr; // текущий указатель на запись

intdelta_elems; // сколько элементов выделено

CvMemStorage* storage; // где хранится последовательность

CvSeqBlock* free_blocks; // список свободных блоков

CvSeqBlock* first; // указатель на первый блок последовательности

}


2646539
Доступ к элементам последовательности

  • char* cvGetSeqElem( seq, index )– возвращает элемент последоваетельности по индексу.

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

  • Пример получение данных из последовательности

    for( int i=0; i<seq->total; ++i ) {

    CvPoint* p = (CvPoint*)cvGetSeqElem ( seq, i );

    }


2646539
Выделение контуров последовательности

  • Для выделения контуров в OpenCVсуществует несколько функций для оконтуривания

    • cvThreshold – бинаризует изображение

    • cvLaplace – вычисляет производную от изображения и находит локальные экстремумы

    • cvSobel– вычисляет оператор собеля

    • cvCanny – вычисляет фильтр кени


2646539
Поиск контуров на изображении последовательности

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

    );-производит поиск контуров и записывает их в хранилище последовательности


2646539
Отрисовка последовательности контуров

  • void cvDrawContours(CvArr *img,CvSeq* contour,CvScalarexternal_color,CvScalarhole_color,intmax_level,int thickness=1,intline_type=8,CvPoint offset=cvPoint(0,0));- отрисовывает контуры записанные в последовательность


ad