Особенности программирования систем распознавания образов реального времени

Системы распознавания образов (СРО) на настоящий момент находят все больше применения в промышленности, торговле, бизнесе и повседневной жизни. Огромное число компаний связывают свою деятельность с разработкой СРО реального времени (РВ) для персональных компьютеров, серверов, мобильных платформ и онлайн-сервисов. Большое количество отечественных и зарубежных ученых разрабатывают новые алгоритмы распознавания РВ, применяя при этом современные языки и среды программирования, зачастую не обращая внимания на тот факт, что система РВ – это прежде всего предсказуемая система. Поэтому в данной работе предлагается подход к программированию СРО РВ на языке C/C++ на платформе Windows XP/7.
В настоящее время при разработке сложных СРО РВ часто используют программную библиотеку OpenCV (opencv.willowgarage.com), которая может функционировать на различных платформах и операционных системах. Множество задач связано с обработкой видеопотоков, например, с web-камеры. В этом случае программный код библиотеки OpenCV выглядит следующим образом:
#include "opencv2/core/core_c.h"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/highgui/highgui_c.h"
int main(int argc, char** argv){
	CvCapture* capture = cvCaptureFromCAM(0);
	cvNamedWindow( "Camera", 1 );
	IplImage* frame=0;
	do{
		frame = cvQueryFrame(capture );
		…<Какая-либо функция распознавания>
		cvShowImage( "Camera", frame);
		if (cvWaitKey( 20 ) == 32 ) break;
	}while ( 1 );
	cvReleaseCapture(&capture);
	return 0;
}

Однако здесь возникают вопросы: Как контролировать время выполнения функции распознавания? Что делать, если модуль распознавания образов ненадежен – а это часто бывает из-за высокой сложности алгоритмов распознавания. В этом случае можно использовать подход к выбору структуры СРО РВ, описанный в работе [Кручинин, А.Ю. Особенности разработки программных систем распознавания образов реального времени / А.Ю. Кручинин // Автоматизация в промышленности. – 2011. — №7. – С. 53-56.].


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

Структура системы распознавания образов реального времени

Выбор структуры обусловлен классом системы распознавания образов (СРО) реального времени (РВ). Если предполагается строить гибкую систему РВ без обратной связи, то достаточно использовать один программный процесс и один поток, в котором в цикле будут формироваться данные (например, с видеокамеры) и передаваться на процедуру распознавания. Однако такой подход не исключает ситуации, когда программа зависнет или аварийно завершится, что неприемлемо в полностью автоматизированных системах.
В работе [1] была предложена структурная схема программной СРО РВ. Система должна состоять из отдельных модулей, каждый из которых может быть оформлен в виде процессов, потоков или библиотечных функций.
Программные системы РВ реализуются на соответствующих операционных системах, например, QNX Neutrino, Windows CE, или на обычных операционных системах (Windows, Linux) с расширениями РВ. Особенностью подобных операционных систем является поддержка вытеснения потоков, что позволяет полностью вытеснять потоки с меньшим приоритетом при поступлении более важных потоков. Наиболее высшим приоритетом должен обладать модуль контроля, поскольку он обладает правом принудительно завершать работу модулей распознавания. В качестве примера построения структуры была разработана программная имитационная модель, работающая на обычной версии Windows XP. Поскольку наиболее подвержены ошибкам и зависаниям модули распознавания, то они реализовывались в виде отдельных процессов, а модули управления, контроля и сбора и обработки данных – в виде отдельных потоков главного процесса модели (для удобства обмена данными внутри одного адресного пространства). Для взаимодействия потоков и процессов использовались мьютексы, являющиеся наиболее простым и эффективным механизмом синхронизации.


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

Модель распознавания образов реального времени

Разработана модель распознавания образов в реальном времени PRS-RT
(скачать PRS-RT_1.00.zip).
В модели учитываются следующие требования:
  • в системе должна быть учтена вероятность ошибочного решения;
  • система должна иметь ограничение по времени на распознавание образа(-ов);
  • система должна поддерживать механизмы обработки ошибок;
  • поведение системы должно быть известным и предсказуемым.


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