Исследование систем управления манипулятором MR-999Е
Исследование методов обработки информации в системах технического зрения роботов. Описания искусственных нейронных сетей и их использования при идентификации изображений. Определение порогового уровня изображений, техники обработки визуальной информации.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | магистерская работа |
Язык | русский |
Дата добавления | 08.03.2012 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В лаборатории располагаются 3 рабочих места. Площадь лаборатории - 120 м2, объем - 360 м3. Соответственно, площадь, выделенная на 1 рабочее место составляет не менее 6 м2 и объем составляет не менее 20 м3.
Согласно ГОСТ 12.1.005-88, ДСН 3.3.6-042-99 работа в зале с ПК по категории работ относится к легким (категория Iа - легкие физические работы с энергозатратами до 139 Вт или 120 ккал/ч). Работа производятся сидя, не требует систематического физического напряжения и перемещения тяжестей.
Анализируя выявленные в лаборатории ОВПФ можно сказать, что рабочее место относится к III классу 1 степени вредности. Доминирующим вредным фактором является повышенная температура воздуха рабочей зоны (на 3?С больше, чем норма, установленная ГОСТ 12.1.005-88 «Система стандартов безопасности труда. Общие санитарно-гигиенические требования к воздуху рабочей зоны», равная 22-28?С).
В рабочей зоне помещения согласно ГОСТ 12.1.005-88 могут быть установлены оптимальные (сочетание параметров микроклимата) или допустимые микроклиматические условия.
В санитарных нормах ДСП 173-96 установлены величины параметров микроклимата, создающие комфортные условия (таблица 5.3). Параметры устанавливаются в зависимости от времени года, характера трудового процесса и характера производственного помещения. Нормы подачи свежего воздуха в помещения, где расположены компьютеры, приведены в таблице 5.4.
Таблица 5.3 - Параметры микроклимата для помещений, где установлены компьютеры
Период года |
Параметры микроклимата |
Величина |
|
Теплый |
Температура воздуха в помещенииОтносительная влажностьСкорость движения воздуха |
22-24 ?С40-60 %До 0.1 м\с |
|
Холодный |
Температура воздуха в помещенииОтносительная влажностьСкорость движения воздуха |
23-25 ?С40-60 %0.1-0.2 м\с |
Таблица 5.4 - Нормы подачи свежего воздуха в помещения, где расположены компьютеры
Характеристика помещения |
Объемный расход подаваемого в помещение свежего воздуха м3 на человека в час |
|
Объём до 20 м3 на человека |
Не менее 30 |
|
20-40 м3 на человека |
Не менее 20 |
Таким образом, необходимо разработать систему кондиционирования.
Согласно СНиП 2.0Д.05-91 (таблица Д.4), если объем помещения, приходящийся на одного человека, меньше 20 м3, то количество приточного воздуха, необходимого для проветривания, должно быть не менее G1 = 30 м3/час на каждого работающего; при объеме помещения более 20 м3 на одного работающего количество приточного воздуха для проветривания должно быть не менее G1 = 20 м3/час на каждого работающего. Найдем объем помещения, приходящийся на одного человека:
V=360 м3; n = 3 человек
V=360 ? 3 = 120 м3 (5.1)
Поскольку V1> 20 м3/чел, то тогда норма подачи приточного воздуха на 1 человека G1 = 20 м3/час. Количество приточного воздуха с учетом того, что в помещении работает 3 человека (м3/час) рассчитывается по формуле:
(5.2)
Произведем расчет воздухообмена по избыткам тепла. Для этого определим поступления тепла в помещение по формуле:
(5.3)
где - выделение тепла от оборудования;
- выделение тепла от людей;
- выделение тепла от приборов освещения;
- поступление тепла через наружные ограждения конструкций от солнечной радиации;
Найдем выделение тепла при работе оборудования:
(5.4)
где P = 3 кВт - суммарная мощность оборудования;
к1 = 0.8 - коэффициент использования установленной мощности;
к2 = 1 - коэффициент одновременности работы оборудования.
Найдем выделение тепла от людей по формуле:
,(5.5)
где - количество работающих мужчин в помещении;
- количество тепла, выделяемого одним мужчиной;
- количество работающих женщин в помещении;
- количество тепла, выделяемого одной женщин;
Используя табл. 9 пособия 2.91 к СНиП 2.0Д.05-91 находим количество тепла, выделяемого одним мужчиной при 30?С при выполнении легкой физической работы - qм = 146 Вт. Т.о. получаем:
В помещении имеются 8 осветительных прибора по 100 Вт каждый. Найдем выделение тепла от освещения. Таким образом:
Величина рассчитаем по формуле:
(5.6)
где Всз - коэффициент теплопропускания солнцезащитных устройств;
F1, F2 - площади световых проемов, освещаемых солнцем и находящихся в тени, м2; q1, q2 - количество тепла, поступающего в помещение в июле, через остекление светового проема, Вт/м2, в расчетный час суток для освещенной части и части, находящейся в тени;
Считаем, что световые проемы не затенены, значение F2 принимаем равным нулю.
Значения q1 и q2 (СНиП II-33-75):
(5.7)
(5.8)
k1 - коэффициент, учитывающий затенение остекления и загрязнения атмосферы;
k2 - коэффициент, учитывающий загрязнение стекла;
qп - количество тепла от прямой солнечной радиации;
qр - количество тепла от рассеянной солнечной радиации.
Значения прямой и рассеянной солнечной радиации qвп, qвр из таблицы 5.5.
Таблица 5.5 - Значения прямой и рассеянной солнечной радиации
Географическая широта |
qп |
qр |
|
48 |
427 |
112 |
|
52 |
448 |
114 |
qп = (427+ 448)/2 = 437.5 Вт
qр = (112+ 114)/2 = 113 Вт
Всз = 0.15 для штор из светлой ткани (СНиП II-3-79);
F1 = 12 м2;
k1 = 0.45 для остекления в двойных деревянных переплетах, с учетом загрязнения атмосферы, промышленного района и географической широты (СНиП 2.0Д.05-86);
k2 = 0.95 для незначительного загрязнения вертикального остекления (СНиП 2.0Д.05-86).
Таким образом, рассчитаем количество тепла от солнечной радиации:
Определим поступление тепла в помещение по формуле Д.3:
Произведем расчет воздухообмена по избыткам тепла в лаборатории по формуле:
(5.9)
где 3600 - коэффициент для перевода м3/с в м3/час;
с=1.2 кг/м3 - плотность воздуха;
tуд - температура удаляемого воздуха;
tпр - температура приточного воздуха;
Разница температур приточного и удаляемого воздуха находится в пределах 5-8?С.
Рассчитаем воздухообмен по избыткам тепла в лаборатории:
Таким образом, для поддержания установочных параметров микроклимата лаборатории достаточно подавать 247,055м3/час воздуха.
Раздача обработанного воздуха в помещении осуществляется по воздуховодам через потолочные диффузоры (рисунок Д.3.). Количество воздуха распределяется по помещению, пропорционально выделяемому теплу.
Рабочее место организовано в соответствии с требованиями ГОСТ 12.2.032-78 и ДСанПиН 3.3.2.007-98. Конструкция рабочего места и взаимное расположение всех его элементов соответствуют антропометрическим, физиологическим и психологическим требованиям, а также характеру работы. Учитывая вредность работы и нагрузку, установлен восьми часовой рабочий день. Рабочая неделя состоит из 5 дней.
Рисунок 5.3 - Схема системы кондиционирования
На рисунке 5.4 показано размещение рабочих мест и оборудования в данной лаборатории.
Рисунок 5.4 - Схема размещения рабочих мест и маршрут эвакуации при пожаре
5.4 Пожарная профилактика лаборатории исследовательского бюро
Согласно СНиП 2.09.02-85 помещение лаборатории, в котором расположен персонал, имеет категорию пожарной опасности. Оно, согласно СНиП 2.01.02-85 имеет II степень огнестойкости. По пожароопасности данное помещение классифицируется как помещение класса П-IIа по ПУЭ, так как это помещение в котором имеется мебель из дерева и ДВП. Горючими компонентами в лаборатории являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, изоляция кабелей и др.
В соответствии с ГОСТ 12.1.004-91 пожарная безопасность объекта обеспечивается: система предотвращения пожара, системы противопожарной защиты. Предотвращение пожара обеспечивается: максимально возможным применением негорючих и трудно-горючих веществ в помещении; применением в электрооборудовании быстродействующих средств защитного отключения возможных источников зажигания; устройством молниезащиты здания.
Противопожарная защита обеспечивается: 1) применением средств пожаротушения и соответствующих видов пожарной техники; углекислотные огнетушители ОУ-2-7 шт (из расчета 2 огнетушителя на 20 м2); эти огнетушители предназначены для тушения электроустановок находящегося под напряжением; 2) применение автоматической установки пожарной сигнализации, а именно использование 7-ми автоматических дымовых пожарных извещателя ИП-105.01 (1 извещатель располагается на 20м2). Они располагаются под потолком в помещения и собраны на основе магнитоуправляемого герметизированного контакта (геркона), что позволяет быстро реагировать на появления дыма; 3) телефон установленный в легкодоступном месте; 4)ящик с песком V = 0,15 м3; 5) организации эвакуации людей (эвакуация организовывается согласно СНиП 2.01.02-85); схема эвакуации представлена на рисунке 5.4.
ВЫВОДЫ
В данной магистерской аттестационной работе основное внимание уделено рассмотрению методов распознавания и идентификации объектов в системах технического зрения роботов.
В первой части магистерской аттестационной работы были проанализированы методы обработки информации в системах технического зрения роботов. Процесс идентификации объектов, находящихся в рабочей зоне робота, включает два этапа, такие как выделение характерных признаков объектов и распознавание объектов по найденной совокупности характерных признаков. Основными методами обработки информации являются сегментация (процесс подразделения сцены на составляющие части или объекты), определение порогового уровня, областно-ориентированная сегментация, дескрипторы границ и областей изображений, описание трехмерных сцен и структур, обработка визуальной информации
Во второй части проанализированы методы идентификации объектов в робототехнических системах и построена теоретико-множественная модель распознавания и идентификации.
Основными методами являются:
- метод сравнения с эталоном (установление совпадения двух точечных изображений);
- методы теории графов и распознавание (представление сегментов контура в виде графа и поиске на графе пути наименьшей стоимости, который соответствует значимым контурам);
- корреляционный метод (вычисление взаимокорреляционной функции между эталоном и изображением);
- распознавание через связи шаблонов (согласование компонентов изображения как шаблон и определение, какие объекты присутствуют, изучив предложенные связи между найденными шаблонами);
- искусственные нейронные сети (обучение сети по различным образцам образов с указанием того, к какому классу они относятся).
В третьей части работы была рассмотрена практическая реализация методов обработки информации в робототехнических системах. Существуют два основных подхода к предварительной обработке информации. Первый подход основан на методах пространственной области, а второй -- на методах частотной области с использованием преобразования Фурье. Вместе эти подходы охватывают большинство из существующих алгоритмов предварительной обработки информации, применяемых в системах технического зрения роботов. Основными библиотеками, работающими с методами распознавания и идентификации являются библиотека Integrated Performance Primitives (IPP), библиотека AviCap, библиотека компьютерного зрения с открытым кодом OpenCV. Рассмотрены основные функции и их реализация в библиотеке OpenCV.
В четвертой части исследованы и программно реализованы методы распознавания и идентификации простых объектов. Базовой библиотекой распознавания выбрана библиотека компьютерного зрения OpenCV. Полученные результаты обеспечивают выделение границ и контуров объектов, определение центров масс. Для простых объектов реализованы функции распознавания и идентификации.
К числу перспективных направлений исследований следует отнести дальнейшее развитие методов распознавания и идентификации, их программную реализацию для промышленных операционных систем реального времени. В комбинации с системой принятия решений такие разработки существенно ускорят реализацию систем управления интеллектуальными роботами.
ПЕРЕЧЕНЬ ССЫЛОК
1.Анисимов Б.В. Распознавание и цифровая обработка изображений [Текст] / Б.В. Анисимов, В.Д. Курганов - М.: Мир, 2007. - 295с.
2.Фу К. Робототехника [Текст] / К.Фу, Р.Гонсалес, К. ЛИ, : пер. с англ. - М.: Мир, 2009. - 624 с.
3.Катыс Г.П. Техническое зрение роботов [Текст] / Г.П. Катыс. - 2006. - 176 с.
4.Хорн Б.К.П. Зрение роботов [Текст] / Б.К.П. Хорн. - М: Мир, 2009. - 488 с.
5.Sung K. K. Learning Human Face Detection in Cluttered Scene [Текст] / K. K. Sung, T. Poggio // Lecture Notes in Computer Science - Computer Analysis of Images and Patterns, 2005. P. 432-439.
6.Rosenblum M. Human Emotion Recognition from Motion Using a Radial Basis Function Network Architecture [Текст] M. Rosenblum, Y.Yacoob, L.Davis // IEEE Workshop on Motion of Non-Rigid and Articulated Objects, 2006. - 257 с.
7. Пентланд А.С. Распознавание лиц для интеллектуальных сред [Текст] А.С. Пентланд, Т. Чаудхари // Открытые Системы, №03, 2006.
8. Техническое зрение роботов [Текст] : пер с англ. / под ред. А.Пью - М.: Машиностроение, 2006. - 320 с.
9.Глазунов, А. Компьютерное распознавание человеческих лиц [Текст] А. Глазунов // Открытые Системы, №03, 2007 - 107 с.
10. Абламейко С.В. Обработка изображений: Технология, методы, применение [Текст] / С.В. Абламейко, Д.М. Лагуновский - Мн:, 2009. - 300 с.
11.Соломатин, Н.М. Логические элементы ЭВМ [Текст] : учеб. пособие / Н.М. Соломатин, М. Высш. шк. 2007г. 160 с.: ил.
12.Якушенков Ю.Г. Техническое зрение роботов [Текст] / Ю.Г. Якушенков - М.: Машиностроение, 2007. - 272 с.: ил.
13.Canny J.F. Finding edges and lines in images. [Текст] / J.F. Canny MIT, Cambridge, USA, 2006.
14.Прэтт У. Цифровая обработка изображений [Текст] / У. Прэтт М.: Мир, 2008. - 784 с.
15.Smith S.M. SUSAN - a new approach to Low Level Image Processing [Текст] / S.M. Smith, J.M. Brady // DRA Technical Report TR95SMMS1b. - 2008. -57p.
16.Kaas M. Snakes: Active Contour Models. [Текст] / M. Kaas, A. Witkin, D. Terzopoulos // Int. Journal of Computer Vision. - 2007, N1, -p.312-331.
17. Форсайт Компьютерное зрение. Современный подход [Текст] : пер. с англ. / Форсайт, Понс, Девид, Жан - М.: Издательский дом «Вильямс». 2006. - 928 с.
18. Брагин В.. Системы очувствления и адаптивные промышленные роботы [Текст] / В. Брагин, Ю. Войлов, Ю.Жаботинский : под ред. К.Попова - М.: Машиностроение, 2006. - 256 с.
19. Ямпольский Л.С. Промышленная робототехника [Текст] / Л.С. Ямпольский, Е.Г. Вайсман - К.: Техника, 2006. - 264 с.
20. Техническое зрение роботов [Текст] / В.И. Мошкин, А.А. Петров, В.С. Титов, Ю.Г Якушенков; под общ. ред. Ю.Г. Якушенкова. - М..: Машиностроение, 2008. 272с.; ил.
21. Павлидис Т. Алгоритмы машинной графики и обработки изображений. [Текст] / Т. Павлидис - М.: Радио и связь, 2006. - 399 с.
22. Введение в компьютерное зрение. [Электронный ресурс] . - Режим доступа : www/ URL: http://graphics.cs.msu.ru/ru/library/cv/cv_intro.html. -28.05.2010. . - Загл. с экрана.
23. Компьютерное зрение [Электронный ресурс]. - Режим доступа : www/ URL: http://www.cs.cmu.edu/~cil/vision.html. - 28.05.2010.- Загл. с экрана.
24. Цифровое компьютерное зрение [Электронный ресурс]. - Режим доступа : www/ URL : http://graphics.cs.msu.ru/courses/cg02b/library/ - 28.05.2010.- Загл. с экрана.
25. Open Source Computer Vision Library [Электронный ресурс]. - Режим доступа : www/ URL : http://www.intel.com/technology/computing/
opencv/index.htm - 28.05.2010.- Загл. с экрана.
26. Компьютерное зрение [Электронный ресурс]. - Режим доступа : www/ URL : http://www.roboforum.ru/viewforum.php?f=51&sid=29ea9ba7faf
446dda7cbdbcbd5a45d42 - 29.05.2010.- Загл. с экрана.
27. Open Computer Vision Library [Электронный ресурс]. - Режим доступа : www/ URL : http://sourceforge.net/projects/opencvlibrary/-27.05.2010.- Загл. с экрана.
28. Интерфейсы программного обеспечения [Электронный ресурс]. - Режим доступа : www/ URL : http://yudenisov.narod.ru/EIS/Vol11/a000.htm - 27.04.2008.- Загл. с экрана.
29. Методичні вказівки з дипломного проектування для студентів спеціальності 7.091402 “Гнучкі комп'ютеризовані системи та робототехніка” [Текст] / Упоряд.: В.В. Токарев, О.М. Цимбал - Харків: ХНУРЕ. - 2006. - 48 с.
ПРИЛОЖЕНИЯ
Приложение А Текст программы 1
// Файл 1.cpp
#include <afxwin.h>
#include <cxcore.h>
#include <cv.h>
#include <cvcam.h>
#include <highgui.h>
#include "1.h"
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
void mycallback(IplImage *img);
IplImage *image1,*src2,*dst,*dst2,*dst3,*dst4,*gray,*dst5,*dst6,*dst7,*dst8;
int contNum=0;
int harrist=0;
int cannyt=0;
int thresh=0;
int thresh2=0;
CvRect camSpace;
CvMoments moments;
CvPoint centre_of_mass;
CvSeq *contour;
CvMemStorage *storage,*storage2;
bool bCreate=true;
double m=2;
CvPoint2D32f center;
static CvHaarClassifierCascade* cascade = 0;
const char* cascade_name = "haarcascade_frontalface_alt2.xml";
int Haart= 0;
BOOL CApp::InitInstance()
{
m_pMainWnd=new CMainWin;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CMainWin,CFrameWnd)
ON_WM_CLOSE()
END_MESSAGE_MAP()
CApp App;
CMainWin::CMainWin()
{ Create (NULL, "OpenCV");
HWND w= this->GetSafeHwnd();
int ncams=cvcamGetCamerasCount();
if (ncams)
{bCreate=true;
VidFormat vidFmt={800,600,20.0};
cvcamSetProperty(0,CVCAM_PROP_ENABLE,CVCAMTRUE);
cvcamSetProperty(0,CVCAM_PROP_CALLBACK,mycallback);
cvcamSetProperty(0,CVCAM_PROP_WINDOW,&w);
cvcamSetProperty(0,CVCAM_PROP_SETFORMAT,&vidFmt);
cvNamedWindow(cvGetWindowName(w),CV_WINDOW_AUTOSIZE);
cvNamedWindow( "Canny", 1 );
cvCreateTrackbar("CannyTrack","Canny",&cannyt,200,NULL);
cvResizeWindow("Canny",320,200);
cvNamedWindow( "Contour", 3 );
cvNamedWindow("Sobel",2);
cvResizeWindow("Sobel",320,200);
cvNamedWindow("CornerDetect",9);
cvNamedWindow("Harris",5);
cvResizeWindow("Harris",320,200);
cvCreateTrackbar("HarrisTrack","Harris",&harrist,200,NULL);
cvNamedWindow( "threshold", 7 );
cvCreateTrackbar("threshold","threshold",&thresh,200,NULL);
cvNamedWindow( "Adaptive", 8 );
cvCreateTrackbar("Adaptive","Adaptive",&thresh2,200,NULL);
cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
if(!cvcamInit()) MessageBox("Error");
elsecvcamStart();
}
else MessageBox ("Camera not found");
}
void mycallback(IplImage *src)
{image1 = src;
if (bCreate)
{storage=cvCreateMemStorage();
src2=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,3);
dst=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,3);
dst2=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,3);
dst3=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
dst4=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
dst5=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
dst6=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
dst7=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
dst8=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
gray=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
bCreate=false;
}
for (int k=0;k<image1->height;k+=600)
for(int j=(image1->widthStep)*k;j<(image1->widthStep)*(k+1);j+=image1->nChannels)
{image1->imageData[j]=(char) 255;
image1->imageData[j+1]=0;
image1->imageData[j+2]=0;
}
cvFlip(src,src2);
cvSobel(src2,dst,1,3,7);
cvShowImage("Sobel",dst);
cvCvtColor(src2,gray,CV_RGB2GRAY);
cvCanny(gray,dst3,25,100+cannyt,3);
cvShowImage("Canny",dst3);
CvScalar color=CV_RGB(rand()&255,rand()&255,rand()&255);contNum=cvFindContours( dst3,storage,&contour,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);
for(;contour!=0;contour=contour->h_next)
{ cvDrawContours(dst7,contour,color,color,-1,1,8);
cvMoments(contour,&moments,0); centre_of_mass.x=moments.m10/moments.m00; centre_of_mass.y=moments.m01/moments.m00;
cvCircle(dst7,centre_of_mass,5,CV_RGB(255,255,255),1,8,0);}
cvShowImage("Contour",dst7);
cvCornerHarris(gray,dst8,3,7,harrist/1000.0);
cvShowImage("Harris",dst8);
static CvScalar colors[] =
{ {{0,0,255}},
{{0,128,255}},
{{0,255,255}},
{{0,255,0}},
{{255,128,0}},
{{255,255,0}},
{{255,0,0}},
{{255,0,255}}
};
double scale = 1.3;
IplImage* gray2 = cvCreateImage( cvSize(src->width,src->height), 8, 1 );
IplImage* small_img = cvCreateImage( cvSize( cvRound (src->width/scale),
cvRound (src->height/scale)),8, 1 ); int i;
cvCvtColor( src, gray2, CV_BGR2GRAY );
cvResize( gray2, small_img, CV_INTER_LINEAR );
cvEqualizeHist( small_img, small_img );
cvClearMemStorage( storage );
if( cascade )
{ double t = (double)cvGetTickCount();
CvSeq* face = cvHaarDetectObjects( small_img, cascade, storage,1.1,1,0,cvSize(30,30));
t = (double)cvGetTickCount() - t;
printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*1000.) );
for( i = 0; i < (face ? face->total : 0); i++ )
{ CvRect* r = (CvRect*)cvGetSeqElem( face, i );
CvPoint center;
int radius;
center.x = cvRound((r->x + r->width*0.5)*scale);
center.y = cvRound((r->y + r->height*0.5)*scale);
radius = cvRound((r->width + r->height)*0.5*scale);
cvCircle( src, center, radius, colors[i%8], 3, 8, 0 );
}
} cvPreCornerDetect(dst3,dst5,5);
cvShowImage( "CornerDetect", dst5 );
cvLogPolar( dst, src2, cvPoint2D32f(src->width/2,src->height/2), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS+CV_WARP_INVERSE_MAP );
cvShowImage( "log-polar", dst );
cvShowImage( "inverse log-polar", src2 );
cvWaitKey();
cvThreshold(src2,dst,2,10+thresh,CV_THRESH_BINARY_INV);
cvShowImage( "threshold", dst );
cvAdaptiveThreshold(dst3,dst4,5+thresh2,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,3,5);
cvShowImage( "Adaptive", dst4 );
cvShowImage( "result", src );
cvReleaseImage( &gray2 );
cvReleaseImage( &small_img );
cvZero(dst);
cvZero(gray);;
cvZero(dst2);
cvZero(dst3);
cvZero(dst6);
cvZero(dst7);
cvZero(dst8);
cvZero(dst5);
}
void CMainWin::OnClose()
{ cvcamStop();
cvDestroyAllWindows();
cvcamExit();
if(!bCreate)cvReleaseImage(&dst);
DestroyWindow();
}
// Файл 1.h
#if _MSC_VER > 1000
#pragma once
class CMainWin : public CFrameWnd
{
public:
CMainWin();
void OnClose();
DECLARE_MESSAGE_MAP();
};
class CApp : public CWinApp
{
public:
BOOL InitInstance();
};
Интерфейс главного окна программы:
Рисунок 1.А - Интерфейс окна программы
Приложение Б Тест программы 2
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include "math.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <sstream>
using namespace std;
double angle( CvPoint* pt1, CvPoint* pt2, CvPoint* pt0 )
{
double dx1 = pt1->x - pt0->x;
double dy1 = pt1->y - pt0->y;
double dx2 = pt2->x - pt0->x;
double dy2 = pt2->y - pt0->y;
return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10);}
CvSeq* findSquares4( IplImage* img, CvMemStorage* storage )
{ double s = 0, t = 0;
CvSeq* contours = NULL;
CvSeq* result = NULL;
CvSeq* squares = cvCreateSeq( 0, sizeof( CvSeq), sizeof( CvPoint), storage );
cvFindContours( img, storage, &contours, sizeof( CvContour), СV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint( 0, 0) );
while( contours )
{ result = cvApproxPoly( contours, sizeof( CvContour), storage, CV_POLY_APPROX_DP, cvContourPerimeter( contours)*0.02, 0 );
if( result->total == 4 && fabs( cvContourArea( result, СV_WHOLE_SEQ)) > 1000 && fabs( cvContourArea( result, CV_WHOLE_SEQ)) <( img->height * img->width/2 ) && cvCheckContourConvexity( result) )
{ s = 0;
for( int i = 0; i < 5; i++ )
{ if( i >= 2 ) { t = fabs( angle( ( CvPoint*)cvGetSeqElem( result, i ), ( CvPoint*)cvGetSeqElem( result, i-2 ), ( CvPoint*)cvGetSeqElem( result, i-1 )));
s = s > t ? s : t; } }
if( s < 0.5 )for( int i = 0; i < 4; i++ )cvSeqPush( squares, (CvPoint*)cvGetSeqElem( result, i )); }
contours = contours->h_next; }
cout<<">>> rectangles: "<< squares->total/4 <<endl;
return squares;}
void drawSquares(IplImage *img, CvSeq* squares )
{ CvFont font;
cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX, 0.4f, 0.4f, 0,1, 8 );
int i,j = 0;
CvSeqReader reader;
cvStartReadSeq( squares, &reader, 0 );
for( i = 0; i < squares->total; i += 4 )
{ j++;
CvPoint pt[4], *rect = pt;
int count = 4;
// read 4 vertices
CV_READ_SEQ_ELEM( pt[0], reader );
CV_READ_SEQ_ELEM( pt[1], reader );
CV_READ_SEQ_ELEM( pt[2], reader );
CV_READ_SEQ_ELEM( pt[3], reader );
cvCircle( img, pt[1], 2, CV_RGB(200,0,0),1, 8, 0 );
cvCircle( img, pt[2], 4, CV_RGB(200,0,0),1, 8, 0 );
cvLine( img, pt[1], pt[2], CV_RGB(255,255,255),1, 8, 0 )
double angle = abs(pt[1].y-pt[2].y)/sqrt((pt[1].x-pt[2].x)*(pt[1].x-pt[2].x)+(pt[1].y-pt[2].y)*(pt[1].y-pt[2].y)+0.00001);char st[255]; sprintf(st, "%2f", angle);
cvLine( img, cvPoint(0,img->height/2), cvPoint(img->width,img->height/2), CV_RGB(200,200,200),1, 8, 0 );
cvLine( img, cvPoint(img->width/3,0), cvPoint(img->width/3,img->height), CV_RGB(200,200,200),1, 8, 0 );
cvLine( img, cvPoint(img->width/3*2,0), cvPoint(img->width/3*2,img->height), CV_RGB(200,200,200),1, 8, 0 );
cvPutText( img, st, pt[1], &font, CV_RGB(200,0,0));
cvPolyLine( img, &rect, &count, 1, 1, CV_RGB(255,255,255), 1, CV_AA, 0 );}}
int main() { int c = 0;
CvCapture* capture = cvCaptureFromCAM(0);
f(!cvQueryFrame(capture)){cout<<"Video capture failed, please check the camera."<<endl;}else{cout<<"Video camera capture status: OK"<<endl;};
CvSize sz = cvGetSize(cvQueryFrame(capture));
cvNamedWindow( "out", 0);
cvNamedWindow( "src", 1);
IplImage* src = cvCreateImage( sz, 8, 3 );
IplImage* gray = cvCreateImage( sz, 8, 1 );
IplImage* pyr = cvCreateImage( cvSize(sz.width/2, sz.height/2), 8, 3 );
IplImage* tgray = cvCreateImage( sz, 8, 1 );
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* contours = NULL;
CvMemStorage* mainStorage = cvCreateMemStorage(0);
CvMemStorage* cstorage = cvCreateMemStorage( 0);
CvSeq* circles = NULL;
while(c != 27) {IplImage* img = NULL;
IplImage* out = NULL;
src = cvQueryFrame( capture);
img = cvCloneImage( src); out = cvCloneImage( src);
cvPyrDown( img, pyr, 7 ); cvPyrUp( pyr, img, 7 );
cvSetImageCOI( img, 2 );
cvCopy( img, tgray, 0 );
cvThreshold( tgray, gray, 100, 255, CV_THRESH_BINARY );
cvShowImage( "src", gray);
cvFindContours( gray, storage, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );
circles = cvHoughCircles( gray, cstorage, CV_HOUGH_GRADIENT, 1, gray->height/16, 8, 10, 4, 50 );
cout <<"Total circles: "<< circles->total <<endl;
for( int i = 0; i < circles-> total; i++ )
{float* p = ( float*)cvGetSeqElem( circles, i );
cvCircle( out, cvPoint( cvRound( p[0]), cvRound( p[1])), 2, CV_RGB( 200, 0, 0), -1, 8, 0 );
cvCircle( out, cvPoint( cvRound( p[0]), cvRound( p[1])), cvRound( p[2]), CV_RGB( 200, 0, 0), 1, 8, 0 );}
drawSquares(out,findSquares4(gray,mainStorage));
cvReleaseImage( &img);
cvShowImage( "out", out);
cvReleaseImage( &out);
c = cvWaitKey(10); }
cvReleaseCapture( &capture );
cvDestroyAllWindows();}
Интерфейс окна программы:
Рисунок 1.Б - Интерфейс окна программы 2
Приложение В Демонстрационный графический материал
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на Allbest.ru
Подобные документы
Выбор методов проектирования устройства обработки и передачи информации. Разработка алгоритма операций для обработки информации, структурной схемы устройства. Временная диаграмма управляющих сигналов. Элементная база для разработки принципиальной схемы.
курсовая работа [1,8 M], добавлен 16.08.2012Модель обработки радиоголографических изображений. Изображение объекта, находящегося за препятствием. Фильтр для практической реализации метода. Исследование эффективности метода пространственной фильтрации при малом поглощении и преломлении в стене.
дипломная работа [4,1 M], добавлен 19.06.2013Недостатки цифровых систем: сложность, ограниченное быстродействие. Этапы цифровой обработки радиолокационных изображений: первичная и вторичная, объединение информации. Особенности процесса двоичного квантования. Анализ схем логических обнаружителей.
дипломная работа [3,5 M], добавлен 09.04.2012Математическая основа построения систем защиты информации в телекоммуникационных системах. Особенности методов криптографии. Принципы, методы и средства реализации защиты данных. Основы ассиметричного и симметричного шифрования-дешифрования информации.
курсовая работа [46,9 K], добавлен 13.12.2013Разработка и проектный расчет структурной схемы системы сбора аналоговой информации для дальнейшей обработки в системах боле высокого уровня. Определение технических требований к функциональным блокам системы. Выбор и расчет принципиальных схем блоков.
курсовая работа [987,2 K], добавлен 29.04.2011Понятие и применение нейронных сетей, особенности классификации искусственных нейронных сетей по Терехову. Решение задачи классификации римских цифр на основе нейронной сети. Составление блок-схемы алгоритма обучения нейронной сети и анализ ее качества.
дипломная работа [603,9 K], добавлен 14.10.2010Определение и виды искусственных нейронных сетей. Функция активации. Биологический нейрон. Персептрон как инструмент для классификации образов. Классификация объектов с помощью нейронной сети. Нормализация входных сигналов. Алгоритм работы в MatlabR2009b.
курсовая работа [349,7 K], добавлен 17.03.2016Интроскопия - внутривидение, визуальное наблюдение объектов, явлений и процессов в оптически непрозрачных телах и средах, в условиях плохой видимости. Классификация методов диагностики. Общность методов и средств обработки иитроскопических изображений.
реферат [265,7 K], добавлен 01.02.2009Достоверность передаваемой информации в системах связи; разработка функциональной и принципиальной электрических схем самоортогональных сверточных кодов; способы задания и алгоритм порогового декодирования. Выбор микропроцессорной базы для блоков кодека.
курсовая работа [1,5 M], добавлен 07.10.2012Использование аппаратных и программных средств в устройствах обработки информации. Организация взаимодействия устройств, входящих в систему, при помощи микропроцессора. Описание микроконтроллера, процессорного блока, адаптера параллельного интерфейса.
курсовая работа [515,2 K], добавлен 18.09.2010