Библиотека OpenCV Архитектура и возможности Кирилл Корняков, Itseez Апрель 2013.

Презентация:



Advertisements
Похожие презентации
Введение в OpenCV МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Государственное образовательное учреждение высшего профессионального образования.
Advertisements

Программировани е Сергей Салищев Занятие 1. Введение.
Разработка на CUDA с использованием Thrust Михаил Смирнов.
Анатолий Свириденков (сodedgers.com) Блог:
Сравнение производительности NVidia NPP и Intel IPP Участники: Калишев Глеб Майоров Алексей Руководитель: Половинкин Алексей Участники: Калишев Глеб Майоров.
Разработка параллельных приложений для многоядерных систем С.В. Ковальчук НИИ Наукоемких компьютерных технологий, СПбГУ ИТМО.
Intro Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Введение в компьютерную графику URL:
Определение положения деталей местности по видео Дмитрий Маракасов OpenStreetMap Микроконференция Мапперов в Москве 2012
Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
Электронный задачник по программированию для системы 1С:Предприятие М. Э. Абрамян, М. Ю. Беренкеева Южный федеральный университет, факультет математики,
OpenCV Библиотека компьютерного зрения для всех Вадим Писаревский Intel Corporation, Software & Solution Group.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 2 Понятие об облачных вычислениях. Обзор платформ.
Объектно-ориентированное программирование С++. Лекция 9 Карпов В.Э.
Основы информатики Лекция. Функции Заикин Олег Сергеевич
Обработка изображений Image Processing (IP) Изображение Компьютерное зрение Computer Vision (CV) Изображение Модель (Описание) Компьютерная графика Computer.
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Краткий обзор ОСРВ. RTLinux Встраивается в обычный Linux RTLinux kernel находится между ядром Linux и «железом» RTLinux обрабатывет все прерывания независимо.
Дисциплина: МДК Системное программирование ПМ.01 Разработка программных модулей программного обеспечения для компьютерных систем Группа: А/ПК(9)
Определение положения и ориентации беспилотного летательного аппарата на основе системы технического зрения Автор – Степанов Д. Н., ИПС РАН Научный руководитель.
Компьютерные 3D- и 2D- методы анализа фото- и видео-изображений для криминалистических экспертиз.
Транксрипт:

Библиотека OpenCV Архитектура и возможности Кирилл Корняков, Itseez Апрель 2013

Содержание 1.Общая информация 2.Архитектура и возможности 3.Ключевые концепции 4.Заключение

OpenCV Open-source Computer Vision Library 1.Более тысячи алгоритмов и функций компьютерного зрения 2.Кросс-платформенность 3.Производительность 4.Либеральная BSD лицензия

Панорамы улиц в картах Google (+ другие продукты) Система зрения робота PR2 компании Willow Garage Роботы для исследования поверхности Марса (проект NASA) Контроль качества монет (Центробанк Китая) Примеры использования

История NVIDIA Willow Garage Intel Используется во всем мире Применяется в академии и индустрии Разрабатывается профессионально, при участии сообщества

Информационные ресурсы

Инфраструктура разработки

Содержание 1.Общая информация 2.Архитектура и возможности 3.Ключевые концепции 4.Заключение

Фильтрация Сегментация Нахождение объектов Трансформации Обработка изображений Видео, Стерео, 3D Калибрация камер Сопоставление с помощью особых точек Построение карты глубины Ребра, контурный анализ Оптический поток Вычисление положения в пространстве Функциональность

Модули Алгоритмические модули core, imgproc, calib3d, video, ml, objdetect, features2d photo, stitching, videostab, superres contrib, legacy, nonfree, flann GPU модули gpu, ocl Инфраструктурные модули highgui, world python, java androidcamera, ts

OpenCV – базовая, в основном низкоуровневая библиотека. Предоставляет строительные блоки, кирпичики для приложений. Захват изображений Пред. обработка Извлечение особенностей Детектирование объектов, сегментация Распознавание, регистрация, вычисление положения в 3D, 3D реконструкция, анализ движения Принятие решений highguiimgproc imgproc, features2d imgproc, objdetect calib3d, contrib, video, stitching, videostab, ml ml? Типичное CV приложение OpenCV в приложениях

#include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char** argv) { Mat img, gray; img = imread(argv[1], 1); imshow("original", img); cvtColor(img, gray, COLOR_BGR2GRAY); GaussianBlur(gray, gray, Size(7, 7), 1.5); Canny(gray, gray, 0, 50); imshow("edges", gray); waitKey(); return 0; } Как скомпилировать и запустить эту программу? Информация имеется в уроках на сайте с документацией.документацией Пример программы

Нужны компилятор и IDE для C/C++ Visual Studio Xcode GCC + make (Linux) А также CMake (необязателен, но желателен) По возможности, не используйте MinGW, Borland C++, Sun Studio и разные экзотические компиляторы. Разработка с OpenCV Eclipse + CDT QtCreator

Your application Dependencies: Eigen, IPP, JPEG, PNG, Jasper, multimedia TBB OpenCV Environment x86, x64ARMGPU Windows Linu x MacOSX MIPS CUDAOpenCLSSE, AVX Android iOSWinRT NEON GCD Concurrency PythonJava C cv::parallel_for_ OpenCV Acceleration API Hardware Operating System Threading API Bindings Library

Плюсы использования OpenCV 1.Переносимость – Кросс-платформенные приложения – Простота разработки и отладки 2.Производительность – Автоматическая акселерация – Корректность

Параллелизация История: OpenMP, TBB Native back-ends: GCD, Concurrency cv::parallel_for_ – TBB, Concurrency, GCD, C= (c stripes) cv::mutex OpenCV is fully re-enterable.

Содержание 1.Общая информация 2.Архитектура и возможности 3.Ключевые концепции 4.Заключение

cv::Mat Image data RGBRGBRGBRGBRGBRGBRGBRGBRGBRGB****** Image data RGBRGBRGBRGBRGBRGBRGBRGBRGBRGB****** cv::Mat Размеры, step Счетчик ссылок Указатель на данные cv::Mat Размеры, step Счетчик ссылок Указатель на данные Memory layout RGBRGBRGBRGB******************RGBRGBRGBRGB**********************… Memory layout RGBRGBRGBRGB******************RGBRGBRGBRGB**********************… cv::Mat Размеры, step Счетчик ссылок Указатель на данные cv::Mat Размеры, step Счетчик ссылок Указатель на данные cv::Mat Размеры ROI, step Счетчик ссылок Указатель на данные cv::Mat Размеры ROI, step Счетчик ссылок Указатель на данные

Mat M(480, 640, CV_8UC1); // Создаем полутоновую VGA картинку Rect roi(100, 200, 20, 20); // Определяем ROI Mat subM = M(roi); // выделяем ROI в отдельную // матрицу без копирования subM.at (0,1) = 255; // изменяем пиксель в ROI // и в исходном изображении Mat_ ::iterator it = subM.begin (), itEnd = subM.end (); // оцениваем резкость в выбранном ROI, // например для реализации автофокуса float contrast = 0.f; for(; it != itEnd; ++it) { uchar* ptr = &(*it); int dx = ptr[1] – ptr[-1], dy = ptr[subM.step] – ptr[-subM.step]; contrast += sqrtf((float)(dx*dx + dy*dy)); } Работа с матрицами

cv::Mat и std::vector std::vector XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZ std::vector XYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZXYZ cv::Mat XYZ … XYZ cv::Mat XYZ … XYZ Массив из N точек Nx1, 3-канальное изображение cv::Mat Размеры, step Счетчик ссылок (отсутствует) Указатель на данные cv::Mat Размеры, step Счетчик ссылок (отсутствует) Указатель на данные

Ключевые концепции 1. cv::Mat – базовый тип 2. cv::Algorithm – основа для высокоуровневых алгоритмов 3. InputArray и OutputArray (Mat, std::vector, Matx, Vec or Scalar) Подробная информация на сайте с документацией.документацией

Содержание 1.Общая информация 2.Архитектура и возможности 3.Ключевые концепции 4.Заключение

Будущее библиотеки Микромодули (+ пользовательские модули) Hardware Abstraction Layer (модуль HAL) Повсеместное использование cv::Algorithm Новые платформы – WinRT, QNX (BlackBerry) Новые языки – MATLAB – C# (official support)

Ссылки 1.OpenCV 1.opencv.orgopencv.org 2.OpenCV TutorialsTutorials 3.Краткая история проекта OpenCV (ссылка)ссылка 2.Books 1.Лучшая современная книга по компьютерному зрению (на английском) : 2.Официальная книга про OpenCV: Computer-Vision-Library/dp/ Доступна на Озоне, описывает OpenCV 1.x. Завершается работа над вторым изданием. Computer-Vision-Library/dp/

Спасибо за внимание! Завтра состоится практическое занятие Вопросы?