Super Resolution OpenCV: проблема усиления разрешения (суперразрешение)

Основные теоретические моменты, на которых базируются реализованные в OpenCV функции, описаны в работах [1,2]. Основная суть проблемы показана в работе [1]. Есть две копии изображения различного качества:



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

Шумоподавление на изображениях в OpenCV

В OpenCV существует несколько функций для шумоподавления на изображениях. Шумоподавление используется во многих алгоритмах и не только для обработки фотографий, но и для предварительной обработки в реальном времени. Хотя реализованные в OpenCV функции несколько тяжеловесны. Для тестов возьмем следующее изображение:



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

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


Вышла первая бета-версия SDK для распознавания автомобильных номеров. При возникновения ошибок, некорректного распознавания и т.п. обращайтесь на support@intbusoft.com, указав настройки алгоритма, которые вы используете и приложив изображение, с которым возникают проблемы.
iANPR SDK – это комплект средств разработки для распознавания автомобильных номеров. Основная цель – обеспечить автоматизированное распознавание автомобильных номеров на основе библиотеки компьютерного зрения OpenCV. Возможности библиотеки включают обработку изображений в формате OpenCV и выдачу результата распознавания: автомобильные номера, попавшие в кадр и их координаты. Количество номеров не ограничено. Интерфейс работы с библиотекой может быть изменен по желанию заказчика. Первая бета-версия библиотеки поддерживает распознавания базовых российских номеров. На странице продукта вы можете скачать демо-версию библиотеки, которая искусственно замедлена и не предназначена для использования в коммерческих целях. Если вам необходима версия для распознавания номеров другого типа – обращайтесь к нам.
http://intbusoft.com/rus/products/iANPR/

LiveCD linux дистрибутив для работы с opencv

За исходный дистрибутив был взят Mint 15 (x86).
Данный способ подойдет многим deb дистрибутивам.


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

EmguCV и OpenCV – Вызов в C# функций Dll C++

Иногда возникает необходимость использовать и EmguCV проект и OpenCV совместно. Например, у вас есть распространяемая библиотека связанная с OpenCV, а разработчик пишет программу на C# с EmguCV.
Пусть у нас есть C++ библиотека (возьмем распознавание DataMatrix капельных кодов) с определенной выходной функцией:
#pragma once

#include "opencv2/core/core_c.h"
#include "opencv2/imgproc/imgproc_c.h"

int 
#ifdef WIN32
__stdcall 
#endif
DataMatrixDripReader( int* Img_, char* out_buf, int size_buf )
{
	IplImage* Img = (IplImage*) Img_;
	…

Рассмотрим процесс подключения данной функции в C# с EmguCV. Для того, чтобы подключить библиотеку нам понадобится использовать:
using System.Runtime.InteropServices;



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

Industrial DataMatrix Reader

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

Распознавание автомобильных номеров (iANPR SDK)

Сейчас, пока идет разработка и тестирование SDK для распознавания автомобильных номеров iANPR, решил поделиться с некоторыми предварительными результатами. Первоначальная версия SDK рассчитана на стандартные российские номера. Библиотека работает на базе OpenCV. Тестируется версия под Windows, но потом возможна поддержка и других операционных систем.



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

Tesseract-Ocr и OpenCV

В предыдущем посте http://recog.ru/blog/tesseract-ocr/191.html приведен базовый пример работы с Tesseract-Ocr. Модифицируем его таким образом, чтобы работать с OpenCV картинками.
#include <baseapi.h>
#include <allheaders.h>
#include "opencv2/core/core_c.h"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/highgui/highgui_c.h"

int main() {

        tesseract::TessBaseAPI *myOCR = 
                new tesseract::TessBaseAPI();

		printf("Tesseract-ocr version: %s\n",
               myOCR->Version());
        printf("Leptonica version: %s\n",
               getLeptonicaVersion());


        if (myOCR->Init(NULL, "rus")) {
          fprintf(stderr, "Could not initialize tesseract.\n");
          exit(1);
        }
        
		IplImage* Image = cvLoadImage( "test.tif" );		
		char outText[10000];
		myOCR->SetImage( (uchar*)Image->imageData, Image->width, Image->height, Image->nChannels, Image->widthStep );
		myOCR->Recognize(0);		        
		
		lstrcpy( outText, myOCR->GetUTF8Text() );		
        printf( "OCR output:\n\n");
        printf(outText);
        
        myOCR->Clear();
        myOCR->End();        

		cvReleaseImage( &Image );
        return 0;
}



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

Tesseract-Ocr в Visual Studio - распознаем страницу текста

tesseract-ocr — свободная библиотека для распознавания текста. Для того, чтобы ее подключить необходимо скачать следующие компоненты:
Leptonica — http://code.google.com/p/leptonica/downloads/detail?name=leptonica-1.68-win32-lib-include-dirs.zip
Последнюю версию tesseract-ocr (на данный момент 3.02 ) — https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.02.02-win32-lib-include-dirs.zip&can=2&q=
Данные обучения русскому языку — https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.rus.tar.gz
Все можно собирать самостоятельно, скачав исходные коды, но мы этим заниматься не будем.

Создав новый проект, подключаем пути до lib и h файлов. И пишем простенький код.


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

AdaBoost в OpenCV

AdaBoost – алгоритм машинного обучения. Алгоритмы типа Boosting предназначены для обучения T «слабых» классификаторов. По отдельности эти классификаторы как правило просты. Каждый классификатор Kt (t = {1, 2, … T}) ассоциирован с весом at, который применяется при объединении результатов со всех классификаторов. Входной вектор признаков
X = (x1, x2, …xi, …, XM)
(где i – номер признака) помечается бинарными метками yi = {-1, +1} (для других Boosting алгоритмов может быть диапазон значений).
Распределение Dt(i), которое должно быть инициализировано заранее, сообщает сколько «стоит» неправильная оценка каждого признака. Ключевой особенностью Boostingа является то, что, когда алгоритм прогрессирует, эта «стоимость» будет развиваться так, что обучение «слабых» классификаторов будет сфокусировано на тех признаках, которые ранее в «слабых» классификаторах давали плохие результаты.
Алгоритм:
1. D1(i) = 1/m, для i = 1,...,m.
2. Для t = 1,...,T:
2.1. Найти классификатор Kt минимизирующий Dt(i) весовую ошибку:

где



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