OpenCV Библиотека компьютерного зрения для всех Вадим Писаревский Intel Corporation, Software & Solution Group.

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



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

Python как инструмент Data Mining Лекция 4.4 Инструменты Data Mining Зырянов Александр Олегович.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
1 Процессоры семейства Intel® XScale®. Разработка эффективных приложений Василий Басов Intel
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Использование языка Си для программирования ЦСП TMS320C67x.
Сербис Илья Николаевич ?. Разработчик: кафедра математики и дидактики Университета Байройта (Германия) Идеолог – Альфред Вассерман Разрабатывается:
Разработка параллельных приложений для многоядерных систем С.В. Ковальчук НИИ Наукоемких компьютерных технологий, СПбГУ ИТМО.
Алгоритмический трейдинг c Python Денис Колодин ген. директор AlgoMarkets LLC Денис Колодин ген. директор AlgoMarkets LLC.
СУБД Microsoft Access 2003 ЗНАКОМСТВО. Что такое Access? Access – Приложение, входящее в состав пакета Microsoft Office (разработано компанией Microsoft).
Применение MPEG-7 для классификации и поиска визуальных данных Вихровский Кирилл Graphics & Media Lab.
Система поддержки принятия решений в кризисных ситуациях В.С.Кретов,д.т.н., профессор Российской академии государственной службы при Президенте РФ И.С.Лебедев,ведущий.
1999 год – создан первый сайт Научной библиотеки СибГТУ 1999 год – создан первый сайт Научной библиотеки СибГТУ 2011 год – введен в эксплуатацию сайт,
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРА Ключевые слова программа программное обеспечение (ПО) системное ПО прикладное ПО система программирования.
Принципы адаптации вычислительных алгоритмов под параллельную архитектуру графических акселераторов С.М.Вишняков научный руководитель: д.т.н. А.В.Бухановский.
Содержание 1. Введение GIMP многоплатформенное программное обеспечение для работы над изображениями. Редактор GIMP пригоден для решения множества задач.
FAONET-LIN16PC ЦИФРОВАЯ СИСТЕМА ВИДЕОНАБЛЮДЕНИЯ. FAONET-LIN16PC FAONET-LIN16PC –ЦИФРОВАЯ СИСТЕМА ВИДЕОНАБЛЮДЕНИЯ FAONET-LIN16PC –ЦИФРОВАЯ СИСТЕМА ВИДЕОНАБЛЮДЕНИЯ.
Сравнение производительности NVidia NPP и Intel IPP Участники: Калишев Глеб Майоров Алексей Руководитель: Половинкин Алексей Участники: Калишев Глеб Майоров.
Обзор операционных систем ВОУНБ им. М. Горького «Операционная система - это совокупность программ, обеспечивающих управление процессом обработки информации.
Сервисы сетевых операционных систем : web- сервер Seti.ucoz.ru.
Транксрипт:

OpenCV Библиотека компьютерного зрения для всех Вадим Писаревский Intel Corporation, Software & Solution Group

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 2 Что такое OpenCV? OpenCV – сокращение от Open Source Computer Vision Library OpenCV – сокращение от Open Source Computer Vision Library Является библиотекой алгоритмов компьютерного зрения, обработки изображений, численных алгоритмов общего назначения Является библиотекой алгоритмов компьютерного зрения, обработки изображений, численных алгоритмов общего назначения Реализована на C/C++ и очень эффективна Реализована на C/C++ и очень эффективна Имеет похожую на BSD лицензию – т.е. свободна для академического и коммерческого использования Имеет похожую на BSD лицензию – т.е. свободна для академического и коммерческого использования Её можно получить здесь Её можно получить здесь

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 3 Зачем создана OpenCV? Для утверждения общего стандартного интерфейса компьютерного зрения для приложений в этой области. Для способствования роста числа таких приложений и создания новых моделей использования PC. Для утверждения общего стандартного интерфейса компьютерного зрения для приложений в этой области. Для способствования роста числа таких приложений и создания новых моделей использования PC. Сделать платформы Intel привлекательными для разработчиков таких приложений засчёт дополнительного ускорения OpenCV с помощью Intel® Performance Libraries. Сделать платформы Intel привлекательными для разработчиков таких приложений засчёт дополнительного ускорения OpenCV с помощью Intel® Performance Libraries.

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 4 История проекта Начат проект CVL; главные цели: Новые способы взаимодействия человека и компьютера Способность выполнения всех разрабатываемых алгоритмов в режиме реального времени – криточно для разработчиков пользовательского интерфейса, видео-конференций, игр Специальная оптимизация под IA. 1999/01 OpenCV alpha 3 выпущена и представлена на CVPR /062000/12 Разработка библиотеки и ведение исследований на её базе OpenCV beta 1 с поддержкой стерео выпущена и представлена на CVPR /08 Выпущена OpenCV beta 4 (последняя на текущий момент).

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 5 Сообщество пользователей OpenCV В настоящее время библиотека используется множеством компаний, включая IBM, Microsoft, Intel, SONY, Siemens, Google,…, а также университетами и исследовательскими центрами, включая Stanford, MIT, CMU, Cambridge, INRIA и т.д. В настоящее время библиотека используется множеством компаний, включая IBM, Microsoft, Intel, SONY, Siemens, Google,…, а также университетами и исследовательскими центрами, включая Stanford, MIT, CMU, Cambridge, INRIA и т.д. Список рассылки включает более человек, с трафиком около сообщений в день. Список рассылки включает более человек, с трафиком около сообщений в Пользователи помогают улучшить библиотеку: сообщают об ошибках, посылают заплатки, создают новую функциональность (например, захват видео, слежение в 3d, анализ текстур, интерфейс к Python) Пользователи помогают улучшить библиотеку: сообщают об ошибках, посылают заплатки, создают новую функциональность (например, захват видео, слежение в 3d, анализ текстур, интерфейс к Python)

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 6 OpenCV в числах Размер библиотеки (beta 4): Размер библиотеки (beta 4): –Код библиотеки: 500+ функций, ~ строк, ~6MB –Документация (HTML): >13000 строк, ~650K –Тесты: >51000 строк, ~1.7MB Число загрузок: Число загрузок: –beta3.1: ~46000 (36000 – Win32, – Linux), –beta 4: ( – Win32, 5000 – Linux) (начиная с beta4 пользователи могут загружать обновления из CVS)

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 7 Поддерживаемые платформы и инструменты Сами библиотеки: Сами библиотеки: –Windows: компиляторы Microsoft Visual C++ (6.0,.NET 2003), Intel Compiler, Borland C++, Mingw (GCC 3.x). –Linux: GCC (2.9x, 3.x), Intel Compiler:./configure-make- make install, RPM (spec файл включен в поставку) –Используются C и облегченный C++. Прагмы и условная компиляция используются очень ограниченно. Средства GUI, захват видео: Средства GUI, захват видео: –Windows: DirectShow, VFW, MIL, CMU1394 –Linux: V4L2, DC1394, FFMPEG Документация: статический HTML Документация: статический HTML

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 8 OpenCV и Performance Libraries Intel® Performance libraries ведут начало с середины 90x. Intel® Performance libraries ведут начало с середины 90x. Сейчас включают IPP (низко- уровневые библиотеки для обработки сигналов, изображений, а также медиа-кодеки) и MKL (специальная версия LAPACK и FFTPack) Сейчас включают IPP (низко- уровневые библиотеки для обработки сигналов, изображений, а также медиа-кодеки) и MKL (специальная версия LAPACK и FFTPack) Некоммерческие и пробные версии можно свободно загрузить с сайта Intel. Некоммерческие и пробные версии можно свободно загрузить с сайта Intel. Оптимизированы под Pentium® 4, Itanium®-based, Xscale® (только IPP), много-процессорные конфигурации; оптимальная конфигурация выбирается на лету. Оптимизированы под Pentium® 4, Itanium®-based, Xscale® (только IPP), много-процессорные конфигурации; оптимальная конфигурация выбирается на лету. OpenCV способна автоматически обнаруживать присутствие IPP и MKL и использовать их для ускорения обработки. OpenCV способна автоматически обнаруживать присутствие IPP и MKL и использовать их для ускорения обработки. CV CXCore IPP MKL

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 9 Увеличение скорости с использованием IPP Примерные коэффициенты ускорения засчет использования IPP вместо обычной реализации на C (для процессора Pentium® 4) Группа функций Ускорение (OpenCV/IPP) (зависит от типа данных, режимов операций и т.д.) Гауссовы пирамиды~3 Морфология~3-7 Медианный фильтр~2-18 Линейная фильтрация~2-8 Поиск шаблона~1.5-4 Цветовые преобразования (RGB Grayscale, HSV, Luv) ~1-3 Пространственные моменты~1.5-3 Преобразование расстояний~1.5-2 Афинные и перспективные преобразования ~1-4 Нахождение особых точек~1.8 DFT/FFT/DCT~1.5-3 Математические функции над векторами (exp, log, sin, cos …) 3-10

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 10 Архитектура OpenCV Низкоуровневые C функции Диспетчер OpenCV (классы C++, высокоуровневые C функции) Открытый код IPP, MKL Приложения, примеры IPP и MKL не требуются для построения и использования OpenCV!

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 11 Функциональность OpenCV в нескольких словах Ядро cxcore, также частично используется в Intel Open Source Probabilistic Network Library: Ядро cxcore, также частично используется в Intel Open Source Probabilistic Network Library: –Базовые операции над многомерными числовыми массивами –Матричная алгебра, математические ф-ции, генераторы случайных чисел –DFT, DCT –Запись/восстановление структур данных в/из XML/YAML –Базовые функции 2D графики –Поддержка более сложных структур данных: разреженные массивы, динамически растущие последовательности, графы Модуль обработки изображений и компьютерного зрения cv: Модуль обработки изображений и компьютерного зрения cv: –Базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и т.д.) –Анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы) –Структурный анализ (описание форм, плоские разбиения, …) –Анализ движения, слежение за объектами –Обнаружение объектов, в частности лиц –Калибровка камер, элементы восстановления пространственной структуры Модуль для ввода/вывода изображений и видео, пользовательского интерфейса highgui: Модуль для ввода/вывода изображений и видео, пользовательского интерфейса highgui: –Захват видео с камер и из видео файлов, чтение/запись статических изображений. –Функции для организации простого UI (сейчас все демо приложения используют HighGUI) Экспериментальные и устаревшие функции cvaux: Экспериментальные и устаревшие функции cvaux: –Пространств. зрение: стерео калибрация, само калибрация –Поиск стерео-соответствия, клики в графах –Нахождение и описание черт лица –Сравнение форм, построение скелетонов … –Скрытые Марковские цепи –Описание текстур

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 12 Функциональность в картинках

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 13 Будущее развитие OpenCV, планы Стратегия смещается и расширяется - от настольных приложений HCI к более актуальным задачам (встроенные системы (камерафоны), цифровой дом, безопасность, медицинские приложения, поиск в домашних и промышленных цифровых библиотеках изображений и видео и т.д.) Стратегия смещается и расширяется - от настольных приложений HCI к более актуальным задачам (встроенные системы (камерафоны), цифровой дом, безопасность, медицинские приложения, поиск в домашних и промышленных цифровых библиотеках изображений и видео и т.д.) Следующий релиз 1.0 запланирован на конец 2005 Следующий релиз 1.0 запланирован на конец 2005 Библиотека останется свободной Библиотека останется свободной Улучшится стабильность и скорость Улучшится стабильность и скорость Улучшится интеграция с IPP для еще большей производительности Улучшится интеграция с IPP для еще большей производительности Переход к более открытой модели разработки Переход к более открытой модели разработки Перенос некоторой функциональности из прошлых и текущих исследовательских проектов Перенос некоторой функциональности из прошлых и текущих исследовательских проектов

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 14 Команда OpenCV всех времен

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 15 Ссылки (оф. страница OpenCV) (оф. страница OpenCV) (страница на SourceForge. Отсюда можно загрузить последние версии) (страница на SourceForge. Отсюда можно загрузить последние версии) (Форум, подпишитесь и задайте свои вопросы) (Форум, подпишитесь и задайте свои вопросы) (OpenCV редактируемые страницы Wiki) (OpenCV редактируемые страницы Wiki) (привязки для C#) (привязки для C#) (привязки для Python. Будет включена в следующую версию OpenCV) (привязки для Python. Будет включена в следующую версию OpenCV) (диалект Lisp от Яна Лекуна, с поддержкой OpenCV) (диалект Lisp от Яна Лекуна, с поддержкой OpenCV) (страница ПО Intel, включая IPP, компилятор и другие инструменты) (страница ПО Intel, включая IPP, компилятор и другие инструменты) (OpenPNL - открытая библиотека для работы с Байесовыми сетями) (OpenPNL - открытая библиотека для работы с Байесовыми сетями) (множество ссылок на код алгоритмов компьютерного зрения) (множество ссылок на код алгоритмов компьютерного зрения) (источик множества материалов по OpenCV) (источик множества материалов по OpenCV)

Дополнение: Примеры кода с OpenCV

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 17 Минимальная программа #include int main( int argc, char** argv ) { IplImage* image; if( argc != 2 ) return -1; image = cvLoadImage( argv[1] ); if( !image ) return -1; cvNamedWindow( Sample, 1 ); cvShowImage( Sample, image ); cvWaitKey(); return 0; } $ g++ –o sample `pkg-config --cflags opencv` sample.cpp `pkg- config –-libs opencv` … $./sample lena.jpg sample.cpp: Build it and run: (снимок сделан с версии для Windows)

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 18 Работа с контурами #include IplImage* image = 0; int thresh = 100; void on_trackbar(int) { IplImage* gray = cvCreateImage( cvGetSize(image), 8, 1 ); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contours = 0; cvCvtColor( image, gray, CV_BGR2GRAY ); cvThreshold( gray, gray, thresh, 255, CV_THRESH_BINARY ); cvFindContours( gray, storage, &contours ); cvZero( gray ); if( contours ) cvDrawContours( gray, contours, cvScalarAll(255), cvScalarAll(255), 100 ); cvShowImage( "Contours", gray ); cvReleaseImage( &gray ); cvReleaseMemStorage( &storage ); } int main( int argc, char** argv ) { IplImage* image; if( argc != 2 || !(image = cvLoadImage(argv[1])) ) return -1; cvNamedWindow( "Contours", 1 ); cvCreateTrackbar( "Threshold", "Contours", &thresh, 255, on_trackbar ); on_trackbar(0); cvWaitKey(); return 0; }

*Другие наименования и товарные знаки являются собственностью своих законных владельцев 19 Обнаружение лиц на видео #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; CvCapture* capture = 0; int optlen = strlen("--cascade="); if( argc != 3 || strncmp( argv[1], "--cascade=", optlen )) return -1; cascade = (CvHaarClassifierCascade*)cvLoad( argv[1] + optlen ); capture = cvCaptureFromAVI( argv[2] ); if( !cascade || !capture ) return -1; storage = cvCreateMemStorage(0); cvNamedWindow( "Video", 1 ); for(;;) { IplImage* frame = cvQueryFrame( capture ), *img; CvSeq* faces; if( !frame ) break; img = cvCloneImage(frame); img->origin = 0; if( frame->origin ) cvFlip(img,img); cvClearMemStorage( &storage ); faces = cvHaarDetectObjects( img, cascade, storage, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(20, 20) ); for( int i = 0; i total : 0); i++ ) { CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); cvRectangle( img, cvPoint(r->x,r->y), cvPoint(r->x+r->width,r->y+r->height), CV_RGB(255,0,0), 3 ); } cvShowImage( "Video", img ); cvReleaseImage( &img ); if( cvWaitKey(10) >= 0 ) break; } cvReleaseCapture( &capture ); return 0; } $./facedetect –-cascade=opencv/data/haarcascades/haarcascade_frontalface_alt2.xml screetcar.avi