Фильтр Калмана

Фи́льтр Ка́лмана — эффективный рекурсивный фильтр, оценивающий вектор состояния динамической системы, используя ряд неполных и зашумленных измерений. Назван в честь Рудольфа Калмана.
В процессе анализа и обработке большого количества числовых данных, непременно возникают проблемы связанные с точностью обрабатываемой информации. Это значит, что какие бы это не были данные они имеют ошибки, связанные с погрешностью прибора, с помощью которого получается данная информация, или это кратковременный сбой, который привел к получению неточных данных. Так или иначе с этими неприятностями надо как то бороться. На помощь приходит очень полезный для данной цели алгоритм фильтра, построенный на основании метода Калмана.


( Читать дальше )

Нормальный Байесовский классификатор в OpenCV

Байесовский классификатор является самым простым методом обучения и часто достаточным при правильном использовании – при правильном выборе признаков распознавания. Классическая задача Байесовского классификатора – это определение наиболее вероятного образа из двух возможных.
Возьмем два образа нормального распределения (здесь и далее я не вдаюсь в подробности, предполагая, что читатель знает об одномерном распознавании образов).
Образ1: мат. ожидание = 10, среднее квадратичное отклонение = 1
Образ2: мат. ожидание = 12, среднее квадратичное отклонение = 1
Если построить для них распределения, то они будут выглядеть следующим образом:


( Читать дальше )

Распараллеливание с iANPR SDK и OpenMP

В библиотеке iANPR SDK нет встроенного распараллеливания, т.е. функция распознавания выполняется в одном потоке. Однако, когда производится работа с большими изображениями, например, 1920x1080, время распознавания на обычном ПК может быть недостаточно для работы в реальном времени. Для решения данной проблемы можно разбить изображение на части и анализировать их параллельно. Здесь, однако, следует помнить, что в случае попадания номера на пересечение частей, то он не будет распознан. Поэтому нужно внести некоторую избыточность, используя пересекающиеся части. Причем уровень пересечения определяется максимально возможными размерами объекта распознавания.
Предположим, что объект распознавания в форме круга, и его максимальный диаметр на изображении составляет Dmax. Тогда ширина области пересечения сегментов должна быть больше Dmax. В этом случае площадь несколько раз анализируемой области (в разных сегментах) будет рассчитываться по следующей формуле:
S = L * Dmax,
где L – длина границ между всеми сегментами. Понятно, что в этом случае S будет зависеть не только от количества сегментов, но и от их формы. На рисунках ниже показано два примера расположения сегментов. Один сегмент серого цвета, а другой белого. Область пересечения показана штрихами.


( Читать дальше )

Основы работы с матрицами в OpenCV (C++ интерфейс)

Чтобы разрабатывать собственные алгоритмы компьютерного зрения, необходимо уметь получать доступ к пикселям. Изображение представляет собой двумерную матрицу, которая представлена в виде класса cv::Mat. Каждый элемент матрицы представляет собой один пиксель. Для изображений в градациях серого элемент матрицы представлен 8-битным числом без знака (от 0 до 255). Для цветного изображения в формате RGB таких чисел 3, по одному на каждую компоненту цвета. Формат класса cv::Mat следующий.
class CV_EXPORTS Mat
{
public:
// ... много методов ...
...

/*! включает в себя несколько битовых полей:
- сигнатура
- флаг непрерывности
- глубина
- количество каналов
*/
int flags;
//! размерность массива, >= 2
int dims;
//! количество строк и столбцов или (-1, -1) 
int rows, cols;
//! указатель на данные
uchar* data;

//! указатель на счетчик ссылок; когда массив указан
// на выделенные пользователем данные, то указатель равен NULL
int* refcount;

// другие члены
...
};


( Читать дальше )

iANPR версия для Linux

Вышла версия iANPR для Linux. Ниже приведена процедура инсталляции.

Использованная ОС – Ubuntu 13.10 desktop i386
1. Руководствуясь
http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html
устанавливаем дополнительное программное обеспечение для OpenCV.
2. Скачиваем версию OpenCV 2.4.8 для linux отсюда
http://sourceforge.net/projects/opencvlibrary/
И компилируем ее.
3. Скачиваем и распаковываем iANPR SDK 1.11
http://intbusoft.com/rus/products/iANPR/
4. Необходимо сделать видимой библиотеку для программ. Для этого можно прописать путь до libianpr_86.so или просто скопировать этот файл туда же, где лежат библиотеки OpenCV:
/usr/local/lib/



( Читать дальше )

Детектирование логотипов

Часто в Интернете встречаются задачи распознавания тех или иных логотипов. Какого-то готового решения для всех случаев жизни не существует. А множество разработчиков полагают, что, обучив каскады Хаара с признаками Виолы-Джонса (или чего-то иного), они получат хороший результат. Мало этого — не получив достаточного качества, они тем не менее навязывают данный подход другим разработчикам — вроде как: «Доделайте то, что я начинал делать». Конечно, обучаемые системы распознавания образов — это хорошо и правильно. Однако прежде всего нужно посмотреть, а какие признаки используются для обучения. Возможно по ним никак не распознать логотипы данного типа с высокой достоверностью и скоростью распознавания. Поэтому возникла идея сделать простейшую библиотеку распознавания логотипов.


( Читать дальше )

Морфологический градиент и анализ цветных изображений

Очень часто при анализе изображений необходимо выделить границы объекта. При этом во многих случаях разработчики предпочитают работать с изображениями в градациях серого, поскольку это намного быстрее. Однако не всегда, работая в градациях серого можно выделить искомый объект. Например, есть изображение:



( Читать дальше )

Делаем программу распознавания автомобильных номеров с IP камер на основе iANPR SDK, OpenCV и Windows Forms за 3 часа

Готовые системы распознавания автомобильных номеров могут быть достаточно дорогими, при этом качество распознавания не гарантируется на высоком уровне. Бывают случаи, когда, купив систему распознавания автомобильных номеров, пользователь обнаруживает, что она работает не достаточно достоверно. При использовании iANPR SDK (http://intbusoft.com/rus/products/iANPR/) вы можете сами спроектировать систему распознавания за очень короткое время и убедиться в качественности работы. Кто может использовать iANPR SDK? В принципе любая компания, которой по тем или иным причинам желает использовать распознавание автомобильных номеров. Однако, среди них можно выделить 2 большие группы по целям использования:
1) для автоматизации въезда на территорию компании – нет нужды покупать дорогостоящее программное обеспечение, которое не удовлетворяет всем потребностям, когда можно купить лицензию iANPR RUS PRO LIMITED за 9950 рублей и сделать все, что нужно самостоятельно, если в компании есть программист;
2) для использования в собственной распространяемой системе видеонаблюдения – конечно, при разработке собственного программного продукта приоритетно все модули разрабатывать самому, однако разработка надежной системы распознавания автомобильных номеров не является тривиальной задачей, и на неё требуются не только высококвалифицированные специалисты с высокой заработной платой, но и месяцы разработки-тестирования. В этом случае покупка лицензии iANPR RUS PRO FULL за 50000 рублей на начальном этапе позволит вам сразу же ввести функцию распознавания автомобильных номеров в вашу систему, что является сравнительно небольшими затратами.
В данной статье будет показано как, использую iANPR SDK, IP камеру, OpenCV и Windows Forms за 3 часа сделать простое приложение для распознавания автомобильных номеров. В конце разработки будет получено приложение следующего вида:



( Читать дальше )
  • 0
  • 18 января 2014, 11:36
  • vidikon
  • 2

iANPR SDK 1.1 - распознавание автомобильных номеров

Вышла новая версия SDK для распознавания автомобильных номеров:


Страница SDK:
http://intbusoft.com/rus/products/iANPR/

  • исправлены ошибки;
  • добавлены функции, работающие с CvRect;
  • добавлено распознавание транзитных номеров и номеров прицепов;
  • добавлен вид расширенной лицензии;
  • добавлен новый метод детектирование номера;
  • добавлена встроенная поддержка кодов регионов РФ с тремя цифрами, начинающиеся с 7.

Детектирование объектов с помощью особенностей в OpenCV: FREAK. Детектирование множества объектов.

Детектирование объектов с помощью SURF было ранее описано здесь. В этой статье использован C++ интерфейс, FREAK и детектирование множества объектов. Надежность детектирования объектов с помощью FREAK ниже, чем SURF, однако его работа намного быстрее, что позволяет использовать алгоритм на мобильных и встроенных системах. Пример работы представлен на рисунке:

Рассмотрим исходный код, который позволяет этого достигнуть. Код приведен полностью для желающих быстро вставить его в свой проект.


( Читать дальше )