slide1
Download
Skip this Video
Download Presentation
Выполнил : Миронов И.М.

Loading in 2 Seconds...

play fullscreen
1 / 25

Выполнил : Миронов И.М. - PowerPoint PPT Presentation


  • 191 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
slide1

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

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

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

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

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

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

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

slide2

Введение

  • OpenCV (OpenSourceComputerVision) — библиотека компьютерного зрения с открытым исходным кодом
  • Реализована на C/C++, также разрабатывается для Python, Ruby, Matlab, Lua
slide3
Поддерживаемые платформы
  • 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
slide5
Модули
  • opencv_core — основная функциональность. Включает в себя базовые структуры, вычисления(математические функции, генераторы случайных чисел) и линейную алгебру, DFT, DCT, ввод/вывод для XML и YAWL и т. д.
  • opencv_imgproc — обработка изображений (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.).
  • opencv_highgui — простой UI, ввод/вывод изображений и видео.
  • opencv_ml — статистические модели машинного обучения (SVM, деревья решений, обучение со стимулированием и т. д.).
slide6
Модули
  • opencv_features2d — распознавание и описание плоских примитивов (SURF, FAST и другие, включая специализированный фреймворк).
  • opencv_video — анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).
  • opencv_objdetect— обнаружение объектов на изображении (нахождение лиц с помощью алгоритма Виолы-Джонса (англ.), распознавание людей HOG и т. д.).
  • opencv_calib3d — калибровка камеры, поиск стерео-соответстсвия и элементы обработки трехмерных данных.
slide7
Модули
  • opencv_flann — библиотека быстрого поиска ближайших соседей (FLANN 1.5) и обертки OpenCV.
  • opencv_contrib— сопутствующий код, еще не готовый для применения.
  • opencv_legacy — устаревший код, сохраненный ради обратной совместимости.
  • opencv_gpu — ускорение некоторых функций OpenCV за счет CUDA, создан при поддержке NVidia
slide8
Создание окон
  • intcvNamedWindow( constchar* name, intflags ); — создаёт окно, в которое мы будем выводить наше изображение.
    • Первый параметр — название окна
    • Второй — его размер, 0 — даёт возможность изменять размер окна во время выполнения программы, но обычно указывается флаг CV_WINDOW_AUTOSIZE, который указывает, что окно будет ровно тех же размеров, что и загружаемое в него изображение.
  • voidcvShowImage( constchar* name, constCvArr* image );—

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

    • первый параметр — название окна для вывода картинки,
    • второй параметр — изображение для вывода.
  • intcvWaitKey( intdelay=0 ); — эта функция останавливает программу и ожидает нажатия клавиши заданное число миллисекунд и продолжает программу, если ничего не нажато.
slide9
Освобождение ресурсов
  • void cvReleaseImage( IplImage** image ); — функция освобождает память, выделенную под изображение и устанавливает указатель в NULL. void cvDestroyWindow( const char* name ); — эта функция закрывает окно и освобождает выделенную память.
slide10
Структура изображения
  • IplImage – структур для хранения изображений
  • Наиболее часто используемые поля:
    • intnSize;
    • intnChannels;
    • int depth;
    • int width;
    • int height;
    • char *imageData;
    • intdataOrder;
slide11
Загрузка изображения
  • 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;}

slide13
Детектирование лиц
  • Детектор лица OpenCV использует метод П.Виолы и М.Джонса, который был опубликован в 2001
  • Этот подход к детектированию объектов на изображении комбинирует четыре ключевые концепции:
    • Простые прямоугольные функции, называемые функциями Хаара.
    • Интегральное Изображение для быстрого обнаружения функции.
    • Метод машинного обучения AdaBoost.
    • Каскадный классификатор для эффективного совмещения множественных функций.
slide14
Функции Харра
  • Функции Харра представляют собой прямоугольные волны одинаковой длины
slide15
Интегральное Изображение для быстрого обнаружения функции Харра
  • Интегральное значение для каждого пикселя есть сумма всех пикселей над ним и слева от него.
  • Наличие функции Хаара определяется посредством вычитания среднего значения области темных пикселей из среднего значения области светлых пикселей. Если разница превышает порог (определяется в процессе обучения), тогда говорят, что функция является существующей.
slide18
Работа с каскадами
  • CvHaarClassifierCascade * cascade– хранит данные классификатора, загруженного из xml файла.
  • Для загрузки XML-данных из файла можно использовать функцию cvLoad()
    • cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name, 0, 0, 0);
slide19
Буфер памяти
  • CvMemStorage*storage; - динамически расширяемый буфер памяти. В него пишется перечень найденных лиц.
  • storage = cvCreateMemStorage(0);- выделение памяти для буфера.
  • cvReleaseMemStorage(&storage);- освобождение памяти буфера.
slide20
Последовательности данных
  • Последовательности - это самостоятельно связанные списки разных структур.
  • Единственный вид объекта, который может храниться в хранилище памяти, является последовательность.
  • В 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; // указатель на первый блок последовательности

}

slide22
Доступ к элементам последовательности
  • char* cvGetSeqElem( seq, index )– возвращает элемент последоваетельности по индексу.
    • Необходимо делать преобразование типа возвращаемого значения к типу данных в зависимости от хранимых типов в последовательности.
  • Пример получение данных из последовательности

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

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

}

slide23
Выделение контуров
  • Для выделения контуров в OpenCVсуществует несколько функций для оконтуривания
    • cvThreshold – бинаризует изображение
    • cvLaplace – вычисляет производную от изображения и находит локальные экстремумы
    • cvSobel– вычисляет оператор собеля
    • cvCanny – вычисляет фильтр кени
slide24
Поиск контуров на изображении
  • 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)

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

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