Задача: сохранить цветное изображение RGB (24 бита на пиксель) + глубинное изображение 16 бит на пиксель. Изображения сохраняются в файл (глубинное изображение - без потерь PNG компрессором), цветное с потерями JPEG компрессором.
Для решения использовались функции из библиотеки OpenCV 2.2.
Полный исходный код проекта доступен по ссылке.
Данный блог - мои замечания касающиеся тем технического зрения. В данном блоге я буду выкладывать свои находки, инструкции и что у меня получилось.
понедельник, 7 февраля 2011 г.
воскресенье, 23 января 2011 г.
Текущие работы
Решил написать о том какие проекты сейчас идут в лаборатории цифровой обработки изображений ИАиЭ СО РАН.
EthoStudio - система для автоматизации этологических экспериментов. Применяется для изучения эффектов различных препаратов на животных. Интерфейс разработан на Qt, содержание использует OpenCVи другие бесплатные открытые библиотеки.
Сайт проекта временно находится в разработке www.ethostudio.com
Применяется в: ИЦиГ СО РАН, ЛИН СО РАН, институте физиологии им. Павлова РАН.
XScan - программное обеспечение для системы для досмотра пассажиров в аэропорта. Позволяет захватывать изображения с аппарата СибСкан (разработанном в ИЯФе), обрабатывать их, представлять оператору и сохранять в БД или жесткий диск.
Применяется в: Толмачева, Домодедово, Ханты-Мансийском аэропорту, саудовской аравии и т.д.
Есть еще несколько проектов в стадии зачатков... Но по всем проектам есть интересная работа.
EthoStudio - система для автоматизации этологических экспериментов. Применяется для изучения эффектов различных препаратов на животных. Интерфейс разработан на Qt, содержание использует OpenCVи другие бесплатные открытые библиотеки.
Сайт проекта временно находится в разработке www.ethostudio.com
Применяется в: ИЦиГ СО РАН, ЛИН СО РАН, институте физиологии им. Павлова РАН.
| Скриншот программы EthoStudio |
XScan - программное обеспечение для системы для досмотра пассажиров в аэропорта. Позволяет захватывать изображения с аппарата СибСкан (разработанном в ИЯФе), обрабатывать их, представлять оператору и сохранять в БД или жесткий диск.
Применяется в: Толмачева, Домодедово, Ханты-Мансийском аэропорту, саудовской аравии и т.д.
| Скриншот программы XScan |
вторник, 11 января 2011 г.
Сборка libfreenect с помощью MinGW под Windows Vista
1. Релиз библиотеки libfreenect с git репозитория
2. Загружаем зависимости
2.1. Библиотеку работы с USB (libusb) [прямая ссыла]
2.2. Библиотеку для работы с потоками (pthreads) [прямая ссыла]
2.3. Библиотеку для отображения 3Д glut32 (расширение OpenGL) [прямая ссылка]
Распаковываем файлы
Glut32 распаковываем и добавляем в MinGW
glut.h в директорию {MinGW}/include/GL
glut32.lib и glut32.dll в директорию {MinGW}/lib
{MinGW} - директория где установлена MinGW (Например C:/MinGW)
Запускаем CMake
Выбираем директорию в которую распаковали libfreenect и директорию куда будем собирать проект.
Нажимаем Configure (вбираем MinGW, компиляторы gcc и g++) - он выдаст много ошибок.
Поставьте галочку Andvanced в верхней части настроек MinGW.
Устанавливаем значение переменных
GLUT_INCLUDE_DIR - {MinGW}/include/GL
GLUT_glut_LIBRARY - {MinGW}/lib/glut32.dll
LIBUSB_1_INCLUDE_DIR - {libusb-win32-bin-1.2.2.0}\include
LIBUSB_1_LIBRARY - {libusb-win32-bin-1.2.2.0}\lib\gcc\libusb.a
THREAD _PTHREAD_INCLUDE_DIR - {PThreads}/Pre-built.2/include
THREAD_PTHREAD_WIN32_LIBRARY - {PThreads}/Pre-built.2/lib/libpthreadGC2.a
отключаем опцию BUILD_FAKENECT (с ней проект почему-то не собирается)
Далее жмем Configure. Если все хорошо жмем Generate.
Перед компиляцией надо устранить одни глюк: в MinGW/include/sys/types.h есть строка
typedef _ssize_t ssize_t; - ее надо закоментить.
Заходим с командной строки в директорию которую выбрали в CMake и запускаем mingw32-make
Ждем...
Ура все получилось.
Чтобы запустить пример из bin необходимо скопировать в эту папку целый букет dll.
glut32.dll
libfreenect.dll
libusb0.dll (примечание исходное название библиотеки libusb0_x86.dll)
pthreadGC2.dll
Наслаждайтесь!
2. Загружаем зависимости
2.1. Библиотеку работы с USB (libusb) [прямая ссыла]
2.2. Библиотеку для работы с потоками (pthreads) [прямая ссыла]
2.3. Библиотеку для отображения 3Д glut32 (расширение OpenGL) [прямая ссылка]
Распаковываем файлы
Glut32 распаковываем и добавляем в MinGW
glut.h в директорию {MinGW}/include/GL
glut32.lib и glut32.dll в директорию {MinGW}/lib
{MinGW} - директория где установлена MinGW (Например C:/MinGW)
Запускаем CMake
Выбираем директорию в которую распаковали libfreenect и директорию куда будем собирать проект.
Нажимаем Configure (вбираем MinGW, компиляторы gcc и g++) - он выдаст много ошибок.
Поставьте галочку Andvanced в верхней части настроек MinGW.
Устанавливаем значение переменных
GLUT_INCLUDE_DIR - {MinGW}/include/GL
GLUT_glut_LIBRARY - {MinGW}/lib/glut32.dll
LIBUSB_1_INCLUDE_DIR - {libusb-win32-bin-1.2.2.0}\include
LIBUSB_1_LIBRARY - {libusb-win32-bin-1.2.2.0}\lib\gcc\libusb.a
THREAD _PTHREAD_INCLUDE_DIR - {PThreads}/Pre-built.2/include
THREAD_PTHREAD_WIN32_LIBRARY - {PThreads}/Pre-built.2/lib/libpthreadGC2.a
отключаем опцию BUILD_FAKENECT (с ней проект почему-то не собирается)
Далее жмем Configure. Если все хорошо жмем Generate.
Перед компиляцией надо устранить одни глюк: в MinGW/include/sys/types.h есть строка
typedef _ssize_t ssize_t; - ее надо закоментить.
Заходим с командной строки в директорию которую выбрали в CMake и запускаем mingw32-make
Ждем...
Ура все получилось.
Чтобы запустить пример из bin необходимо скопировать в эту папку целый букет dll.
glut32.dll
libfreenect.dll
libusb0.dll (примечание исходное название библиотеки libusb0_x86.dll)
pthreadGC2.dll
Наслаждайтесь!
| 3D изображение сцены |
![]() |
| Глубинное изображение и цветное |
воскресенье, 9 января 2011 г.
Джентельменский набор библиотек и технологий
Библиотеки для систем основанных на техническом зрении
OpenCV - библиотека алгоритмов компьютерного зрения
Qt - библиотека пользовательского интерфейса
MRPT - программный набор компонент для робототехники
ROS - надстройка над операционной системой для робототехники
Itk - инструменты для работы с медицинскими изображениями
FreeImage - загрузка и выгрузка изображений
Полезные библиотеки
Boost - Библиотека шаблонов для C++
IrrLicht - библиотека для 3Д рисования
OpenCL - ускорение и распараллеливание вычислений на GPU
OpenCV - библиотека алгоритмов компьютерного зрения
Qt - библиотека пользовательского интерфейса
MRPT - программный набор компонент для робототехники
ROS - надстройка над операционной системой для робототехники
Itk - инструменты для работы с медицинскими изображениями
FreeImage - загрузка и выгрузка изображений
Полезные библиотеки
Boost - Библиотека шаблонов для C++
IrrLicht - библиотека для 3Д рисования
OpenCL - ускорение и распараллеливание вычислений на GPU
понедельник, 27 декабря 2010 г.
Подключение Opencv2.2 в Qt Creator
В файле *.pro вашего проекта добавьте строчки:
OPENCVDIR = C:/Develop/opencv22
exists($$OPENCVDIR) {
DEFINES += USEOPENCV
INCLUDEPATH += $${OPENCVDIR}/include
LIBS += -L$${OPENCVDIR}/lib \
-lopencv_core220.dll \
-lopencv_imgproc220.dll \
-lopencv_highgui220.dll
DEPENDPATH += $${OPENCVDIR}/bin
message("OpenCV libraries found in $${OPENCVDIR}")
}
else:message("OpenCV libraries not found.")
Для подключения других модулей - надо только дописать их названия в LIBS.
Тогда в любом файле просто подключаем требуемые модули:
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
И все работает.
OPENCVDIR = C:/Develop/opencv22
exists($$OPENCVDIR) {
DEFINES += USEOPENCV
INCLUDEPATH += $${OPENCVDIR}/include
LIBS += -L$${OPENCVDIR}/lib \
-lopencv_core220.dll \
-lopencv_imgproc220.dll \
-lopencv_highgui220.dll
DEPENDPATH += $${OPENCVDIR}/bin
message("OpenCV libraries found in $${OPENCVDIR}")
}
else:message("OpenCV libraries not found.")
Для подключения других модулей - надо только дописать их названия в LIBS.
Тогда в любом файле просто подключаем требуемые модули:
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
И все работает.
Сборка OpenCV2.2 MinGW/Windows XP
1. Скачать новую версию MinGW
2. При сборке конфигурационных файлов с помощью утилиты cmake2.8 нужно в момент Configure выбрать пункт Specify Native Compilers указать компиляторы для C - gcc/ для C++ - g++
3. Запускаем в папке куда собрались конфигурационные файлы утилиту mingw32-make (она должна быть в пути) если нет смотрите мое предыдущее сообщение.
4. После того как собрали (примерно час времени) выполните команду mingw32-make install для создания прекомпилированных заголовков (хэдеров).
Все готово можно приступать к работе
2. При сборке конфигурационных файлов с помощью утилиты cmake2.8 нужно в момент Configure выбрать пункт Specify Native Compilers указать компиляторы для C - gcc/ для C++ - g++
3. Запускаем в папке куда собрались конфигурационные файлы утилиту mingw32-make (она должна быть в пути) если нет смотрите мое предыдущее сообщение.
4. После того как собрали (примерно час времени) выполните команду mingw32-make install для создания прекомпилированных заголовков (хэдеров).
Все готово можно приступать к работе
воскресенье, 19 декабря 2010 г.
Новые технологии
Заинтересовался технологиями
http://www.willowgarage.com/pages/software/ros-platform
Операционная система специально для роботов. Чем она отличается от обычных Linux дистрибутивов? Все несколькими вещами: абстрактными интерфейсами устройств, сообщениями между процессами, доступ к низкоуровневым функциям. Интересно что у Androidа есть аналогичные функции и он тоже в исходных кодах. Может ROS более производительна т.к. не требуется рисования красивых картинок? Я думаю разобраться. Этим проектом заведует компания разработчиков, которой я лично фанат т.к. они разработали OpenCV.
Про OpenNI
http://www.openni.org/
Израильская компания PrimeSence разработала игрушку, которая легла в основу Microsoft Kinect.
Этот проект - это открытые коды для драйверов для Kinect. Штука сочетает в себе камеру и измеритель расстояния. Интересно было бы ее вставить например в машину, но проблемы будут при 2х машинах с такими устройствами))).
- ROS - операционная система для роботов.
- OpenNI - библиотека для изучения кинематики людей.
http://www.willowgarage.com/pages/software/ros-platform
Операционная система специально для роботов. Чем она отличается от обычных Linux дистрибутивов? Все несколькими вещами: абстрактными интерфейсами устройств, сообщениями между процессами, доступ к низкоуровневым функциям. Интересно что у Androidа есть аналогичные функции и он тоже в исходных кодах. Может ROS более производительна т.к. не требуется рисования красивых картинок? Я думаю разобраться. Этим проектом заведует компания разработчиков, которой я лично фанат т.к. они разработали OpenCV.
Про OpenNI
http://www.openni.org/
Израильская компания PrimeSence разработала игрушку, которая легла в основу Microsoft Kinect.
Этот проект - это открытые коды для драйверов для Kinect. Штука сочетает в себе камеру и измеритель расстояния. Интересно было бы ее вставить например в машину, но проблемы будут при 2х машинах с такими устройствами))).
Подписаться на:
Сообщения (Atom)

