LINUX.ORG.RU

OpenCV 2.3.0 final is out

 , ,


0

2

Вечером 4 июля 2011 года один из разработчиков, Вадим Писаревский (Vadim Pisarevsky), в списке рассылки opencvlibrary-devel сообщил о завершении работ над версией 2.3.0 библиотеки для анализа и обработки изображений в системах с компьютерным зрением — OpenCV.

Ниже перечислены некоторые изменения по сравнению с версией 2.2.0, вышедшей семью месяцами ранее:

  • OpenCV подключился к Google Test
  • больше не используется библиотека LAPACK, её заменили собственной реализацией алгоритма Jacobi SVD
  • новый шаблон для калибровки «circles grid»
  • бета-версия приложения для создания панорам, полученных из одной и той же точки
  • для использования вычислительных мощностей графического адаптера требуется CUDA 4.0 и выше
  • улучшения в порте на Android
  • приведены примеры использования интерфейсов на Python при помощи модуля cv2
  • значительная переработка и улучшения в документации по C, C++, Python. В версии 2.3.1 ожидается завершение документирования Java-интерфейса
  • улучшена совместимость с VS2005, включая DirectShow

С подробным списком изменений можно ознакомиться в анонсе к выпуску в Wiki проекта и в сообщении в списке рассылки.

Напомним, что разработка OpenCV была начата в далёком 1999 году по инициативе Intel® Research и до выхода первой версии осуществлялась командой разработчиков Intel® в Нижнем Новгороде. В настоящее время разработка поддерживается исследовательской лабораторией Willow Garage, занимающейся проектированием роботов.

OpenCV написан на C/C++, имеет интерфейсы на Python и Java, состоит из следующих основных модулей:

  • core — компактный модуль с базовыми структурами данных
  • imgproc — модуль обработки изображений
  • video — модуль обработки видео
  • calib3d — базовые алгоритмы многопроекционной геометрии (multiple-view geometry), калибрования камер и др.
  • features2d — детекторы неровностей, выступающих частей (salient feature detectors)
  • objdetect — распознавание предварительно заданных объектов
  • highgui — интерфейсы для захвата видео, простейшие элементы пользовательского интерфейса
  • gpu — алгоритмы ускорения работы с использованием вычислительных мощностей графических адаптеров NVIDIA с графическими процессорами на базе архитектуры CUDA

>>> Документация к OpenCV

>>> Русскоязычная Wiki по OpenCV

>>> Страница загрузки на sourceforge.net

>>> Официальный сайт

★★★

Проверено: Aceler ()

Она же жутко тормозная. или уже нет?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Не будь нищебродом, купи восьмиядерный компьютер с 64GB RAM и двумя карточками Quadro FX (с)

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

Да я на таком компьютере самопальным софтом буду видео 300 кадров в секунду в реальном времени обрабатывать =)

Eddy_Em ☆☆☆☆☆ ()

> для использования вычислительных мощностей графического адаптера требуется CUDA 4.0 и выше

CUDA уже поддерживает Radeon???

segfault ★★★★★ ()

> для использования вычислительных мощностей графического адаптера требуется CUDA 4.0 и выше

Оперативненько. CUDA 4.0 только в мае вышла http://developer.nvidia.com/cuda-toolkit-40

Stalin ★★★★★ ()

> для анализа и обработки изображений в системах с компьютерным зрением терминаторах.

ovk48 ★★★ ()

>Приложения должны быть переносимыми, оптимизированными, код которых не обязательно должен быть открытым.

никогда.

AVL2 ★★★★★ ()
Ответ на: комментарий от segfault

segfault> CUDA уже поддерживает Radeon???
Radeon для DX игрушек, не?

adepto ()
Ответ на: комментарий от adriano32

Не будь нищебродом, купи восьмиядерный компьютер с 64GB RAM и двумя карточками Quadro FX (с)

Да-да, и оцени, как работа OpenCV на CPU хреново распараллелена!

Pavval ★★★★★ ()
Ответ на: комментарий от Pavval

А ты купи восьмиядерный компьютер с 64GB RAM и двумя карточками Quadro FX (с) :3

Как только появится возможность, обязательно оценю

adriano32 ★★★ ()
Ответ на: комментарий от CrossFire

>OpenCl же

В новости про него не сказано, зато сказано про CUDA. Radeon'ы пролетают?

X-Pilot ★★★★★ ()

Там все еще

using namespace std;

в хедерах? Все еще дикая смесь C и C++, где совмещены недостатки этих языков? Отсутствие типизации от C и уникальный паттерн «давайте засунем реализацию в хедера» от С++?

Специалисты по обработке изображения блин...

anonymous ()
Ответ на: комментарий от V_P

А как же это:

> А Томми не дожил :(

Dobriy_i_Prostoy (06.07.2011 6:36:49)

anonymous ()
Ответ на: комментарий от V_P

Историю надо знать

Tommy погиб.

На прошедшем в эти выходные DARPA Grand Challenge победила команда Stanford. Только 4 машины из 23 доехали до финиша. Любимец публики LOR, робот Tommy, под управлением ОС Linux и Java въехал на скорости 70 миль в час (более 100 км/ч) в стену.

Анонс соревнований на ЛОРе

adriano32 ★★★ ()
Ответ на: комментарий от V_P

О, кстати, V_P, не хотите прокомментировать выпуск, может поделитесь планами какими-нибудь? :)
Представьте, что ЛОР у вас берёт интервью...

adriano32 ★★★ ()
Ответ на: комментарий от adriano32

Во-первых, спасибо за качественный анонс :) В нем достаточно подробно все описано.

Команда разработчиков очень небольшая, поэтому в каждом релизе мы обычно концентрируемся на нескольких важных вещах и пытаемся их улучшить настолько, чтобы они потом могли подождать, пока снова до них руки дойдут. В этот раз была очередь для документации (http://opencv.itseez.com), улучшения тестов, запуска системы непрерывной интеграции (на базе buildbot) и чистки баг трекера.

Плюс, отдельные команды работали и продолжают работать над оптимизацией под GPU (с использованием CUDA) и полным, качественным портом под Android.

То есть, по большей части это были инфраструктурные улучшения, не имеющие отношения к непосредственно алгоритмам.

В ближайших планах - миграция репозитория на git, достаточно полный Java интерфейс, порт под iOS и пробная оптимизация некоторых алгоритмов под OpenCL.

Более отдаленные планы - перенос из ROS кода для распознавания текстурных объектов, элементов Visual SLAM и 3d реконструкции объектов, обнаружение нетекстурных объектов (что гораздо сложнее), работа со светом и освещением (нахождение бликов, теней, подбор баланса белого), интеграция PCL (point cloud library).

В перспективе - стандартизация OpenCV, вслед за OpenGL и OpenCL.

Ну и в конце захват мира роботами :)

V_P ()
Ответ на: комментарий от V_P

стандартизация OpenCV .. OpenCL

Не дождетесь. Еще не хватало это тормозное гуано стандартизировать. И не надо их в один ряд с openGL ставить.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от V_P

> стандартизация OpenCV

Нет ребята, сначала полный редизайн кода. Много дерьма видел, но такого...

Никак вам не поможет ведроид, iOS — это не замена культуры программирования.

anonymous ()
Ответ на: комментарий от adriano32

А ты купи восьмиядерный компьютер с 64GB RAM и двумя карточками Quadro FX (с) :3

А я тестил на таком компе! Mac Pro он называется (правда оперативы только 6). Так вот, даже #pragma omp parallel for повставлять им влом было. Просто нету распараллеливания и не надо крутой комп, чтобы это видеть.

Pavval ★★★★★ ()
Ответ на: комментарий от anonymous

К счастью, в подобных вопросах мнение специалиста по дерьму с ЛОРа имеет нулевой вес :)

Согласие от Кроноса получено, драфт готовится.

V_P ()
Ответ на: комментарий от Pavval

Вместо OpenMP используется более эффективная, продвинутая и легко портируемая TBB.

V_P ()
Ответ на: комментарий от buddhist

>Вы видите в тексте новости упоминание OpenCL?

Нет, не вижу. Я лишь ответил, что AMD вместо CUDA делают ставку на OpenCl.

CrossFire ★★★★★ ()
Ответ на: комментарий от X-Pilot

>В новости про него не сказано, зато сказано про CUDA. Radeon'ы пролетают?

Так получается.

CrossFire ★★★★★ ()
Ответ на: комментарий от V_P

Вместо OpenMP используется более эффективная, продвинутая и легко портируемая TBB.

Какая разница в том, что за технология НЕ используется в OpenCV? Смотрел исходники сабжа версии 2.2 и тупо не видел какого-либо распараллеливания той же 2д фильтрации изображений. И это при том, что она элементарно распараллеливается.

Pavval ★★★★★ ()
Ответ на: комментарий от Pavval

Это не так, к сожалению. Нужно учесть экстраполяцию пикселей за пределами изображения, учесть, что 2d фильтрация в OpenCV в большинстве случаев делается с помощью поблочного Фурье преобразования и т.д. Это несколько дней работы - распараллелить этот код. При том что распараллеливать фильтрацию отдельно не имеет особого смысла. Алгоритмы компьютерного зрения как правило параллелятся на самом высоком уровне, а всякие фильтрации, детекторы и т.п. - это кирпичики, которые находятся существенно ниже. Если параллелить на нижнем уровне, то это приведет к необоснованным накладным расходам.

V_P ()

больше не используется библиотека LAPACK, её заменили собственной реализацией алгоритма Jacobi SVD


Вместо OpenMP используется более эффективная, продвинутая и легко портируемая TBB.

Intel® TBB

да ещё и платный Intel® IPP
http://locv.ru/wiki/1.5_%D0%A3%D1%81%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D0%B...

как-то это попахивает Фатальным Недостатком
эти TBB и IPP хоть доступны не под X86?

Anonymous ★★★★★ ()
Ответ на: комментарий от V_P

Как-то пришлось распараллелить Кенни. В качестве основы тупо взял OpenCV и навесил OpenMP. Довольно легко все получилось. Принципиальной разницы с изначальным кодом (cvCanny) нет. В фильтрации тоже. Довольно нормально работало и на небольших данных.

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

«Как правило» - это конечно хорошо, но лучше покрыть и другие случаи.

Если параллелить на нижнем уровне, то это приведет к необоснованным накладным расходам.

Или не приведет. Если про OpenMP - ну распараллелено оно внизу - в чем проблема это отключить извне путем вызова omp_set_num_threads(1)? Или же если сверху тоже OpenMP, то внизу вероятнее всего распараллеливания осуществляться не будет.

Pavval ★★★★★ ()
Ответ на: комментарий от V_P

> К счастью, в подобных вопросах мнение специалиста по дерьму с ЛОРа имеет нулевой вес :)

Согласие от Кроноса получено, драфт готовится.

Спорю, вы никогда не работали с OpenCV, просто новостей начитались. Я в отличие от вас реально работал, и могу только сказать еще раз: много дерьма видел, но такого! Как уже сказали: медленно, плохо сделанный код, в проекте нет «царя в голове», часть на Си, часть на С++ (по стилю еще хуже чем на Си), большинство частей написанных ПОСЛЕ intel представляют из себя университетские поделки.

С практической точки зрения что версия 1.0 библиотеки, что 2.x по количеству полезного кода почти не отличается. Стандартизовать можно именно что-то около 1.0. Как можно превратить в стандарт ту свалку, которая там есть сейчас — я не знаю.

Intel-у нужно было делать как Троллям: не давать доступ в репозиторий кому попало.

anonymous ()
Ответ на: комментарий от adepto

> Radeon для DX игрушек, не?

Ты что-то сильно перепутал...

segfault ★★★★★ ()
Ответ на: комментарий от segfault

segfault> Ты что-то сильно перепутал...
Ати ля профессиональной графики, нвидиа для игрушек. Точно!

adepto ()
Ответ на: комментарий от anonymous

Придется согласиться с анонимусом. Работал c 1.0, 2,2 - подтвердю его слова.

malbolge ★★ ()

Open что-то, которое базируется на проприетарных cuda-х и tbb-ях.
Закопать же. Даёшь AMD и OpenCL!

wstorm ★★ ()
Ответ на: комментарий от anonymous

> Спорю, вы никогда не работали с OpenCV, просто новостей начитались.

как тонко блин!

перечислите, если не затруднит, набор велосипедов которыми пользуетесь Вы

psv1967 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.