Диссертация
DESCRIPTION
Навигация мобильного объекта посредством видеонаблюденияTRANSCRIPT
1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ
ФЕДЕРАЦИИ
Казанский национальный исследовательский технический
университет им. А. Н. Туполева – КАИ
Кафедра автоматизированных систем обработки информации и управления
На правах рукописи
Чумарин Руслан Ленарович
НАВИГАЦИЯ МОБИЛЬНОГО ОБЪЕКТА НА ОСНОВЕ ДАННЫХ
ВИДЕОНАБЛЮДЕНИЯ
Направление 230100.68 «Информатика и вычислительная техника»
Диссертация на соискание степени (квалификации)
магистра техники и технологии
Научный руководитель:
доцент Суздальцев В.А.
Зав. Кафедрой АСОИУ
д.т.н., профессор Шарнин Л.М.
Казань – 2015
2
Ministry of Education and Science of Russian Federation
Federal State Educational Institution of Higher Professional Education
Kazan National Research Technical University
named after A.N. Tupolev (KNRTU)
-----------------------------------------------------------------------------------------
AIPSC department
In the manuscript
Chumarin R.L.
NAVIGATION OF MOBILE OBJECT ON THE BASIS OF DATA OF VIDEO
SURVEILLANCE
Direction 230100.68 "Computer Science and Engineering"
The thesis for the degree (qualification)
Master of Engineering and Technology
Supervisor:
docent Suzdaltsev V.A.
Head. AIPSC department
Professor Sharnin L.M.
Kazan - 2015
6
АННОТАЦИЯ
В данной работе представлена исследовательская и экспериментальная
часть изучения проблемы навигации мобильного объекта.
В первой главе рассматриваются базовые понятия навигации
мобильного объекта. Приводится классификация и основные характеристики
навигационных систем. Производится анализ существующих методов
навигации мобильного объекта. На основании анализа сформулированы
выводы, включающие поставленную цель и основные задачи исследования.
Вторая глава посвящена разработке методов определения параметров
камеры наблюдения, определения положения камеры наблюдения в
пространстве, поиска мобильного объекта на изображении, определения
координат и направления мобильного объекта.
В третьей главе описано, концептуально-логическое проектирование
базы данных, технология определения положения и направления мобильного
объекта, алгоритмы решения прикладных программ.
В четвертой главе описаны результаты экспериментов проделанных
при помощи разработанных программных средств.
Объем работы 229 страниц, 47 рисунков, 62 таблицы, 2 приложения,
45 использованных источников.
Перечень ключевых слов: камера, изображение, угол, навигация,
координата, мобильный объект.
7
ABSTRACT
This paper presents the research and experimental study of the problem of
mobile object navigation.
The first chapter covers the basic concepts of object navigation mobile.
The classification and main characteristics of navigation systems. The analysis of
existing methods of navigation of mobile object. Based on the analysis of the
findings by incorporating the goal and the main objectives of the study.
The second chapter is devoted to the development of methods for
determining the parameters of surveillance cameras, surveillance cameras
determine the position in space, search the mobile object in the image, determining
the origin and direction of the mobile object.
The third chapter describes the conceptual and logical database design,
technology determine the position and direction of the mobile object, algorithms
for solving applications.
The fourth chapter describes the results of experiments done when using
the developed software.
Scope of work 229 page, 47 figures, 62 tables, 2 appendices, 45 sources
used.
List of key words: the camera, the picture angle, navigation, coordinate, a
mobile object.
8
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ……………………………………………………………………… 10
1. ГЛАВА 1. СУЩЕСТВУЮЩИЕ МЕТОДЫ И СРЕДСТВА
НАВИГАЦИИ МОБИЛЬНЫХ ОБЪЕКТОВ………………………..……
12
1.1. Навигационные системы………………………………………………… 12
1.1.1. Классификация, характеристики и состав навигационных систем.
Задачи, решаемые навигационными системами………………………
12
1.2. Навигационные системы на основе данных видеонаблюдения………. 18
1.2.1. Определение инвариантных параметров камеры видеонаблюдения..... 19
1.2.2. Оценка пространственных параметров камеры видеонаблюдения...… 21
1.2.3. Обнаружение объектов на изображении с камеры видеонаблюдения.. 26
1.2.4. Сопоставление изображений с нескольких камер видеонаблюдения... 28
1.2.5. Определение координат мобильного объекта на основе данных
видеонаблюдения………….…………………………………………...…
31
1.3. Выводы по главе………………………………….………………………. 33
2. ГЛАВА 2. МЕТОДЫ НАВИГАЦИИ МОБИЛЬНЫХ ОБЪЕКТОВ НА
ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ……………….................
35
2.1. Определение параметров камеры видеонаблюдения………………… 35
2.1.1. Определение углов обзора камеры видеонаблюдения………………… 35
2.2. Определение положения камеры видеонаблюдения в пространстве… 55
2.2.1. Определение расстояний от камеры до опорных точек……………….. 55
2.2.2. Определение положения камеры видеонаблюдения в пространстве… 61
2.3. Поиск мобильного объекта на изображении……………………….… 71
2.3.1. Определение среднего значения яркости сегментов изображения…… 71
2.3.2. Кластеризация сегментов по среднему значению яркости……………. 72
2.3.3. Поиск граничной области объекта……………………………………… 73
2.3.4. Поиск границы объекта………………………………………………….. 75
2.3.5. Обход границы объекта…………………………………………..……… 76
2.3.6. Поиск особых точек объекта…………………………………………….. 78
2.4. Определение координат проекции произвольно заданной точки на
предметную плоскость……………………………………………………
80
9
2.4.1. Аналитический метод определения координат проекции произвольно
заданной точки на предметную плоскость….…………………………
80
2.4.2. Метод обучения нейронной сети для определения координат
проекции произвольно заданной точки на предметную плоскость…...
84
2.5. Определение координат и направления мобильного объекта на
основе данных с множества камер наблюдения……………..…………
87
2.5.1. Поиск соответствия особых точек изображений с разных камер
видеонаблюдения…………………………………………………………
87
2.5.2. Определение координат особых точек в пространстве………………... 91
2.5.3. Сопоставление особых точек объекта и эталона………………………. 95
2.6. Определение координат и направления мобильного объекта на
основе данных с одной камеры наблюдения……..…………..…………
97
2.7. Выводы по главе………………………………………………………….. 101
3. ГЛАВА 3. СРЕДСТВА НАВИГАЦИИ МОБИЛЬНЫХ ОБЪЕКТОВ НА
ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ……………………………
102
3.1. Концептуальное проектирование базы данных …………….…..….…. 102
3.2. Логическое проектирование базы данных …………………….….......... 108
3.3. Технология определения координат и направления мобильного
объекта на основе данных видеонаблюдения…………………………..
115
3.4. Описание алгоритмов решения прикладных задач……………….……. 120
3.5. Выводы по главе………………………………………………………….. 128
4. ГЛАВА 4. ИСПОЛЬЗОВАНИЕ СРЕДСТВ НАВИГАЦИИ
МОБИЛЬНЫХ ОБЪЕКТОВ НА ОСНОВЕ ДАННЫХ
ВИДЕОНАБЛЮДЕНИЯ ……………………………………………………
129
4.1. Определение углов обзора камеры наблюдения……….……………… 129
4.2. Определение координат точечного объекта…………………………... 134
4.3. Выводы по главе……………………………………………….…………. 148
ЗАКЛЮЧЕНИЕ…………………………………………………………………. 149
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ…………………………… 151
ПРИЛОЖЕНИЯ…………………………………………………………………. 155
Приложение 1. Формирование обучающей и контролирующей выборки….. 155
Приложение 2. Листинг программ..................…………………………………. 191
10
ВВЕДЕНИЕ
В последнее время наблюдается бурное развитие робототехники в
мире. Все чаще появляются работы по созданию промышленных роботов и
специальных мобильных робототехнических систем. Для решения
большинства видов задач с использованием мобильных роботов требуются
системы навигации.
Под навигацией мобильного объекта (робота) в данном случае
понимается определение положения объекта в пространстве при помощи
нескольких камер видеонаблюдения.
Изучением вопроса определения местоположения наблюдаемого
мобильного объекта на основе данных видеонаблюдения стали заниматься
сравнительно недавно, что связано с ростом качества и удешевлением
оптико-электронных устройств, а так же с увеличением возможной скорости
автоматического анализа изображений.
К сожалению, системы навигации мобильных объектов в большинстве
своём остаются на низком уровне автоматизации. Такая ситуация связана с
отсутствием средств, которые могли бы существенно облегчить работу
оператору, а в некоторых случаях и совсем заменить его, что обуславливает
актуальность исследования в данной области.
Объектом исследования в данной диссертационной работе является
навигация мобильного объекта.
Предметом исследования является навигация мобильного объекта на
основе данных видеонаблюдения.
Целью исследования является снижение стоимости и повышение
качества и безопасности работ, производимых мобильными объектами
(роботами) в реальных условиях, при использовании разработанной
технологии навигации мобильного объекта на основе данных
видеонаблюдения.
11
Для достижения поставленной цели требовалось решение следующих
основных научных и практических задач:
1. Проанализировать существующие методы и средства навигации
мобильного объекта.
2. Разработать метод решения задачи навигации на основе данных
видеонаблюдения.
3. На основе разработанных методов разработать комплекс программных
средств, позволяющий осуществлять навигацию мобильного объекта на
основе данных видеонаблюдения.
4. Произвести серию экспериментов, доказывающих работоспособность и
эффективность разработанных методов и комплекса программных средств на
кафедре АСОИУ КНИТУ-КАИ.
Основной составляющей научной новизны диссертационной работы
является гибридный метод навигации мобильного объекта, отличительной
особенностью которого является использование нейронной сети для
компенсации ошибки аналитического подхода при определении координат
мобильного объекта.
Достоверность результатов работы была подтверждена в ходе
проведения серии экспериментов на кафедре АСОИУ КНИТУ-КАИ.
Результаты экспериментов дали количественную оценку их эффективности и
работоспособности.
Практической полезностью данной работы является разработанный
комплекс программных средств позволяющий осуществлять навигацию
мобильного объекта в режиме реального времени.
Предложены алгоритмы позволяющие:
- осуществлять поиск объектов на изображении;
- определять положения камер видеонаблюдения в пространстве;
- определять внутренние характеристики камер видеонаблюдения;
- определять координаты мобильного объекта и вектора его движения.
12
ГЛАВА 1. СУЩЕСТВУЮЩИЕ МЕТОДЫ И СРЕДСТВА НАВИГАЦИИ
МОБИЛЬНЫХ ОБЪЕКТОВ
1.1. Навигационные системы
Обычно под термином навигационная система принято понимать
совокупность приборов, алгоритмов и программного обеспечения,
позволяющих произвести ориентирование объекта в пространстве.
Навигационные системы можно разделить на множество категорий
в зависимости от назначения, объема получаемой навигационной
информации и используемых методов навигации. В зависимости от области
применения навигационные системы разделяют на системы морской,
наземной и воздушной навигации. Рассмотрим более конкретно системы
наземной навигации, так как данная разновидность систем наиболее близка к
изучаемой нами проблеме.
1.1.1. Классификация, характеристики и состав навигационных
систем. Задачи, решаемые навигационными системами
Система навигации подвижного наземного объекта (ПНО) в общем
случае решает задачи определения координат местоположения, параметров
движения и углов ориентации подвижного объекта и выдачу необходимой
информации. В [1, 2] описываются схемы комплексирования и возможность
их применения для определения местоположения подвижных объектов. В
[2]- [4] исследуется поведение систем навигации для ПНО в условиях города.
В этих статьях так же описывается и состав навигационных систем. Однако,
анализ состава навигационных систем для ПНО, как военного, так
и гражданского применения и предложения по выбору перспективного
состава в литературе не встречается.
Система навигации ПНО решает задачи определения координат
местоположения, параметров движения и углов ориентации подвижного
объекта и обеспечивает выдачу следующих данных: горизонтальные
13
координаты, высота, путевая скорость, углы ориентации (крен, курс, тангаж),
угловая скорость, ускорение. Обобщенную структурную схему
навигационной системы ПНО представим на рисунке 1.1.
Рисунок 1.1. Обобщенная блок – схема систем навигации для ПНО
Измерители автономной системы — измерители системы, работающей
без сигналов от внешних источников. Основное их назначение —
определение координат, параметров движения и пространственного
положения продольных осей ПНО.
В качестве радиотехнических систем коррекции могут быть
использованы: системы сотовой связи, спутниковые системы
(ГЛОНАСС/GPS), наземные радиотехнические системы дальней навигации.
Основное назначение данных систем — коррекция данных полученных от
измерителей автономной системы для повышения точности показаний
навигационной систем.
Навигационные системы могут работать в следующих режимах:
- Автономный режим;
- Автономный режим с коррекцией от СРНС (спутниковая
радионавигационная система).
Приведенная на рисунке 1.1 блок — схема и её состав может
варьироваться в зависимости от предъявляемых требований к конкретной
системе. Обзор существующих навигационных систем для ПНО и их
точностных характеристик в [5, 106] показывает, что в зависимости от
14
состава навигационной системы и режима её работы изменяются
и точностные характеристики. Поэтому появляется необходимость
определить оптимальный состав навигационной системы при использовании,
которого точностные характеристики были наилучшими при данном уровне
развития науки и техники.
Навигационные системы являются в настоящее время развивающейся
областью науки и техники. Производством навигационных систем
занимаются как отечественные, так и зарубежные производители
навигационной аппаратуры. Для анализа используем системы следующих
фирм производителей: ООО «ТеКнол», НПО ПРОГРЕСС, ФГУП НКТБ
«ФЕРРИТ», Концерн «Созвездие», ОАО НВП «ПРОТЕК». В таблице 1.1
приведен состав навигационных систем для ПНО, которые представлены на
рынке в настоящее время.
Таблица 1.1. Различные навигационные системы для ПНО
Система Состав
«Азимут»
Курсовая система магнитного типа (акселерометр,
феррозонд), путевая система одометрического типа,
СРНС
КомпаНав-2Т
Блок чувствительных элементов и цифровой обработки
сигналов (БЧЭ) (микроэлектромеханический
акселерометр, микроэлектромеханический датчик
угловой скорости, 3-осный магнитометр,
барометрический высотомер), СРНС
КомпаНав-3
ИНС (микроэлектромеханический акселерометр,
микроэлектромеханический гироскоп, барометрический
высотомер), СРНС
КомпаНав-2М БЧЭ (акселерометр, датчик угловой скорости), СРНС
БИНС-Тек
БИНС (кварцевый акселерометр, волоконно-оптический
гироскоп), одометр, СРНС
Ориентир
Датчики угловой ориентации (геомагнитный
и гироскопический); датчик скорости; система дальней
навигации («Чайка» и «LORAN-C»), СРНС
КС-100М
Геомагнитный датчик курса, электромеханический
одометр, система дальней навигации («Чайка» и
«LORAN-C»), СРНС
15
Таблица 1.1. Продолжение
Малогабаритная
навигационная аппаратура
ФГУП НКТБ «ФЕРРИТ»
Курсовая система магнитного типа (акселерометр,
феррозонд), путевая система одометрического типа,
СРНС
«Трона-1».
Гирокурсоуказатель (датчик угловой ориентации
и датчик скорости); СРНС
ТНА-4
Курсовая система «Маяк-2» (динамически
настраиваемый гироскоп; датчик скорости)
«Гамма»
ССГККУ (динамически настраиваемый гироскоп),
датчик скорости, СРНС
ГАЛС-Д2М
БИНС-4 (волоконно-оптический гироскоп,
акселерометр), доплеровский датчик скорости, СРНС
Анализ состава показывает, что в качестве одного или нескольких
измерителей автономной системы возможно использование:
- инерциальной навигационной системы (ИНС) как платформенной, так
и бесплатформенной (БИНС-Тек, КомпаНав-3);
- курсовой системы магнитного гироскопического типа («Азимут»,
ТНА-4);
- Блок чувствительных элементов и цифровой обработки сигналов,
входящий в состав таких навигационных систем как КомпаНав-2М
и КомпаНав-2Т, является по своей сути аналогом БИНС (бесплатформенная
инерционная система) и широко используется в представленных
навигационных системах.
Основной радиотехнической системой коррекции для большинства
рассмотренных систем навигации являются системы спутниковой навигации
(ГЛОНАСС/GPS). Однако в дополнении к СРНС в некоторых системах
используются наземные радиотехнические системы дальней навигации
«Чайка» и «LORAN-C»(Ориентир, КС-100М).
Применение курсовой системы магнитного или гироскопического типа
совместно с датчиком скорости позволяет получить минимально
необходимый объем навигационных данных для ориентации на местности.
16
Эта комбинация широко применялась на начальных этапах построения
навигационных систем.
На сегодняшний день широкое применение в навигационных системах
нашли ИНС, которые имеют важные преимущества: универсальность
применения, возможность определения основных параметров движения,
автономность действия, высокая помехозащищенность, высокая точность
при ограничении времени действия.
Однако ИНС присущи определенные недостатки, главными из которых
являются: возрастание погрешностей с течением времени, что ограничивает
возможность использования во времени без применения корректирующих
средств; сложность устройства и необходимость применения
высокопрецизионных базовых измерительных элементов и вычислительных
устройств, высокая стоимость в эксплуатации. Наиболее перспективными
в данный момент является БИНС вследствие небольших габаритов и не
высокой стоимости.
Существуют множество способов повышения точности БИНС,
например, за счёт повышения чувствительности датчиков угловой скорости
путем уменьшения диапазона измеряемых угловых скоростей и обеспечения
работы чувствительных элементов БИНС в менее жёстких условиях. Это
направлено на создание гибридной ИНС (ГИНС) [15, 47].
Повышение точности БИНС может быть также достигнуто за счет
коррекции от внешних источников информации — СРНС, систем сотовой
связи, наземной РСДН (радиотехническая система дальней навигации).
Дополнительно в навигационных системах используют различные
датчики, например барометрический высотомер, который позволяет
обеспечить целостность информации СРНС [9, 17]. Применение
дополнительных датчиков приводит к:
1) необходимости установки дополнительных устройств на сам объект;
2) сложности монтажа оборудования и его ремонта;
17
3) необходимости усложнения алгоритма обработки информации
и разработки дополнительных алгоритмов проверки и калибровки;
4) увеличению общей стоимости проекта.
Использование дополнительных датчиков возможно, если стоимость
всех дополнительных работ не превышает допустимых пределов или уже
включена в издержки производства и обоснована соответствующими
требованиями и расчетами.
Среди недостатков СРНС можно выделить:
- низкую помехоустойчивость сигналов СРНС;
- наличие зон, где прием спутникового сигнала невозможен;
- невозможность приема спутникового сигнала в течение 24 часов.
Так же применение СРНС затруднено в густо застроенных городских
кварталах, из- за многолучевого распространения сигналов СРНС, вследствие
отражений от зданий и сооружений. В настоящее время также ведутся
работы направленные на доступность сигналов СРНС в любом месте земного
шара и в любое время суток, например с помощью совместного
использования сигналов, от СРНС, GPS и Galileo, а также применения схем
обнаружения и устранения навигационных ошибок [10–13]. Все это
направлено на повышения качества обслуживания и надежности приема
сигналов СРНС потребителями. Однако точность приема сигналов зависит не
только от надежности приемной аппаратуры потребителей, но и от
космического сегмента, т. е. от условий его работы на околоземной орбите.
Поэтому необходимость обеспечения работоспособности СРНС стала
отправной точкой для начала наблюдений за явлениями, происходящими
в ионосфере и изучения их влияния на СРНС. Это приводится в статьях [6],
[7] и [13].
В условиях города альтернативу СРНС могут составить системы
сотовой связи вследствие их широкого распространения в большинстве
городов. При их использовании в зависимости от применяемой технологии
определения местоположения, возможно, получить точность до 50 м. [8, 39].
18
Однако они так же не лишены недостатков, главный из которых в том, что
указанные технологии не функционируют в местах вне покрытия сотовых
сетей. Влияние так же может оказать рельеф местности, количество базовых
станций и высота вышек сотовой связи. Для устранения возможных
недостатков ведутся исследования направленные на усовершенствование
старых и создание новых технологий определения местоположения в сетях
сотовой связи («метод близости», технология на основе анализа
«радиоотпечатков») [14, 121].
Возможно, так же применение наземных радиосистем дальней
навигации для получения координат местоположения в зонах, где вследствие
совокупности факторов невозможна корректная работа систем сотовой связи
и СРНС. Однако их использование сопряжено с недостатками, среди которых
низкая точность определения дальности. Точность позиционирования
зависит от: влияния пространственного сигнала, скорости распространения
поверхностной волны и геометрического фактора. Поэтому погрешность
определения местоположения, например для системы «ЛОРАН-С»
составляет — 0,46 км. Применение РСДН не приводит к существенному
повышению точности, а лишь усложняет систему, повышает её стоимость,
и приведет к усложнению алгоритмов обработки информации.
1.2. Навигационные системы на основе данных видеонаблюдения
В настоящее время все чаще необходимо знать расположение того или
иного объекта в замкнутом пространстве для решения разного рода
практических задач в различных областях жизни человека. Для выявления
необходимого объекта и определения его положения в пространстве, а
иногда и слежения за ним чаще всего используются камеры
видеонаблюдения. Здесь применяется либо единственная видеокамера со
сложной (и, соответственно, ресурсоёмкой) обработкой изображения, либо
применяются две (иногда и три) видеокамеры для создания так называемого
19
стереозрения. Выбор видеокамеры как средства определения координат
объекта обуславливается невысокой ценой и широким спектром
возможностей при обработке видеоизображения.
1.2.1. Определение инвариантных параметров камер видеонаблюдения
Видеокамера обладает множеством параметров, ниже опишем
некоторые из них:
Разрешение - количество точек, из которых состоит изображение по
горизонтали и по вертикали. Чем выше разрешение, тем изображение более
точное и детальное.
Увеличение (Zoom):
Оптический zoom – величина, показывающая во сколько раз объектив
может изменять масштаб съемки (у некоторых камер используется объектив
с переменным фокусным расстоянием, изменение величины фокусного
расстояния приводит к визуальному "приближению" или "удалению" объекта
съемки).
Цифровой zoom – величина, показывающая, во сколько раз камера
может изменять масштаб съемки (у некоторых камер имеется функция,
позволяющая увеличивать изображение, что эквивалентно приближению к
объекту съемки, цифровое увеличение изображения производится
программно с помощью увеличения размера пикселя изображения).
Угол обзора объектива – угол, определяющий, какая часть
пространства попадет в кадр. Угол обзора зависит от размера ПЗС - матрицы
и фокусного расстояния, определяемого объективом видеокамеры,
например широкоугольный объектив (с углом обзора 70-90 градусов)
позволяет захватить больше наблюдаемых объектов, чем стандартный
объектив (с углом обзора 40-50 градусов). Угол обзора по горизонтали
зависит от размера ПЗС – матрицы по горизонтальной оси и фокусного
20
расстояния, а угол обзора по вертикали так же зависит от размера ПЗС –
матрицы по вертикальной оси и фокусного расстояния.[16, 52]
Угол обзора очень часто применяется для решения различного рода
задач в системах компьютерного зрения, однако изготовители камер
видеонаблюдения не всегда указывают точное значение данного параметра.
Рассмотрим метод определения угла обзора (рис. 1.2), показанный в лекциях
по компьютерному зрению лаборатории компьютерного зрения при ВМК
МГУ[17].
Угол обзора α видеокамеры можно рассчитать, зная размер
светочувствительного элемента (матрицы) d (по горизонтальной или
вертикальной оси в зависимости от определяемого угла) и эффективное
фокусное расстояние объектива f по формуле: α = 2arctg(
).
Рисунок 1.2. Модель проекции видеокамеры
Основными недостатками данного метода является то, что для точного
определения угла обзора камеры видеонаблюдения необходимо знать размер
светочувствительного элемента матрицы и эффективное фокусное
расстояние, что зачастую неизвестно.
21
1.2.2. Оценка пространственных параметров камер видеонаблюдения
Одной из центральных задач в области машинного зрения (Computer
Vision) является задача определения ориентации и расположения камеры в
пространстве по изображению, полученному с ее помощью. Эту задачу также
называют задачей внешней калибровки камеры или определения ее внешних
параметров. Решение данной задачи требуется в различных областях:
картографии, системах распознавания объектов, в расширенной реальности,
системах управления компьютером посредством определения положения рук
или направления взгляда, системах управления роботами, системах
навигации и т.д.
Рассмотрим существующие методы определения камеры в
пространстве:
А. Кравцов и В. Вежневец в своей статье [18], описывают метод, когда геометрия некоторых объектов наблюдаемой камерой сцены известна
заранее. На основании этого рассматривается модель, представляющая собой
набор черт и их взаимное расположение. Модель налагает ограничения и
сужает область решений задачи. В качестве черт используются определенные
точки (вершины), отрезки (грани) и углы объекта. В зависимости от
используемых черт выделяются следующие постановки задачи внешней
калибровки: PnP проблема (Perspective n Points problem), PnL проблема
(Perspective n Lines problem) и PnA проблема (Perspective n Angles problem).
PnP проблема:
Впервые в современной литературе решение проблемы внешней
калибровки камеры c моделью полной перспективы было рассмотрено в 1981
году Фишером и Болсом [19]. Термин "PnP проблема" был введен авторами
для задачи определения положения объекта относительно камеры. Условием
для решения задачи являются n соответствий между точками изображения и
точками модели объекта, а также известное взаимное расположение точек
модели объекта.
22
P1P и P2P проблемы имеют бесчисленное множество решений и
поэтому в литературе не рассматриваются.
Наибольший интерес представляет P3P проблема, так как для решения
этой задачи достаточно лишь трех соответствий между точками изображения
и модели. Интерес к данной задаче связан с ее минимальными требованиями
к числу найденных соответствий. Дело в том, что выделение черт на
изображении и установление соответствия между ними и их проекциями
отнимает значительное процессорное время. Следовательно, для
приложений, ориентированных на работу в режиме реального времени,
требуется использовать минимальное число черт. К сожалению, при точном
решении P3P проблемы необходимо решать уравнение четвертой степени.
Также возможны такие конфигурации точек, что задача дает 4 различных
решения, а выбор единственно верного решения является сложной задачей,
требующей большого объема вычислений.
В связи с этим иногда рассматриваются варианты задачи для четырех,
пяти и шести точек. Шести точек достаточно для задания системы линейных
уравнений, имеющей единственное решение, поэтому PnP проблемы для n
больше шести не рассматриваются.
PnL проблема:
PnL проблема представляет собой задачу внешней калибровки камеры
с условием заданных n соответствий между линиями изображения и линиями
(гранями) модели объекта. Ограничения, задаваемые соответствием линий,
слабее, чем аналогичные ограничения для точек, так как из первого легко
получить второе, выбирая точки парами. К тому же, из произвольного
соответствия линий не всегда удается получить соответствие точек, так как
линии в пространстве не обязательно пересекаются.
С другой стороны, в общем случае линии легче выделить на изображении,
нежели характерные точки. Это связано с тем, что для выделения
характерных точек требуется поиск черт, коррелирующих с предварительно
23
заданными шаблонами, а для выделения линий достаточно найти лишь
градиент интенсивности пикселов изображения.
PnA проблема:
PnA проблема – это задача внешней калибровки камеры с условием
заданных n соответствий углов между гранями модели объекта и их
проекциями на картинную плоскость. В настоящее время имеются решения
для двух упрощенных вариантов P3A проблемы. Для первого варианта
необходимо, чтобы как минимум два из трех углов модели были острыми.
Второй вариант требует, чтобы три угла модели образовывали трехгранный
угол.
Способы выбора решения:
В связи с тем, что многие методы для задачи внешней калибровки дают
множественные решения, возникает проблема выбора из них единственно
верного. Существует несколько способов решения данной проблемы:
1. Для каждого решения из полученного множества строится
искусственное изображение посредством проектирования на картинную
плоскость черт модели объекта. После этого проводится анализ
расположения проекций черт на искусственном и реальном изображениях и
делается вывод об истинности решения.
2. Для каждого решения выполняется проверка ограничений на
видимость использованных в методе черт. Если какие-то из этих черт не
должны быть видны на изображении при найденном взаимном расположении
камеры и объекта, то решение признается недействительным.
3. В некоторых приложениях задача внешней калибровки решается
много раз, например, при переходе от одного кадра к другому. В этом случае,
взаимное расположение камеры и объекта не должно изменяться
скачкообразно.
Основным недостатком данных решений является то, что для
качественной калибровки камеры необходимо точно знать геометрию
24
наблюдаемой камерой сцены, что не всегда возможно в реальных
условиях.
Афиногенов Е.И. в своей статье [20, 2] описывает метод отслеживание
положения камеры системы компьютерного зрения в трёхмерном
пространстве в режиме реального времени.
В общем случае алгоритм данного метода осуществляется в
следующем порядке:
Изображение с камеры видеонаблюдения поступает в систему.
Осуществляется предобработка входного изображения.
Происходит поиск особых точек на изображении, расчет
дескрипторов.
Осуществляется поиск соответствий среди точечных дескрипторов.
Происходит восстановление 3-х мерного положения камеры.
На рисунке 1.3 представлен обобщенный алгоритм данного метода:
Рисунок 1.3. Обобщенный алгоритм отслеживания положения камеры
Таким образом, данный метод позволяет определить все 6
составляющих определяющих камеру видеонаблюдения в пространстве.
25
Основной недостаток данного метода заключается в невозможности его
применения с динамически изменяющейся сценой наблюдения, что
существенно сужает возможную область его применения.
В статье А.В. Козырева [21, 122] описаны алгоритмы, необходимые для
решения задачи позиционирования мобильного устройства в пространстве
относительно окружающих объектов. Под мобильными устройствами в
данной статье понимаются смартфоны (мобильные телефоны, обладающие
операционной системой) и КПК (карманные компьютеры), обладающие
«зрением», т.е. видеокамерой. Во всех алгоритмах данной статьи, на основе
поступающих с камеры снимков проходит анализ изменения положения
камеры в пространстве.
Таким образом, в данной статье, задача определения изменения
положения в пространстве мобильного устройства, обладающего камерой
видеонаблюдения, разбивается на три части, при этом внутренние параметры
камеры ищутся лишь один раз:
• Поиск внутренних параметров камеры;
• Найти соответствующие «особые» точки на изображениях;
• Посчитать матрицу поворотов и вектор сдвига.
Недостатком метода является тот факт, что особенности обычно
выделяются в первом кадре последовательности и отслеживаются на
протяжении всех остальных, но при движении камеры или сцены часть
особенностей может время от времени пропадать из вида, или изображения
их окрестностей будут искажаться настолько, что перестанут быть
особенностями. В этом случае слежение за такими точками становится
невозможным.
В работе А. К. Платонова [25, 9] описывается методы определения и
использования значений параметров отображения двумерной плоскости в
себя в задаче построения модели зрительной системы робота. Методы,
базирующиеся на представлении Ли непрерывной группы проективных
преобразований, позволяют получать параметры прямого и обратного
26
отображений “сцена - кадр” (или "сцена – сцена" - в процессе движения) без
знания характеристик видеодатчика и места его установки на роботе. На
примере алгоритмов системы зрения робота “Трикол” описывается метод
привязки координат сцены к параметрам телевизионных кадров и приводится
оценка его погрешностей.
Для корректной работы методов описанных в работе А. К. Платонова
[25] необходимо создание искусственных условий в наблюдаемой камерой
сцене, что сказывается на невозможности применения этих методов в
реальных условиях, однако стоит отметить, что преимуществом методов
является необязательное знание внутренних параметров камеры
видеонаблюдения.
1.2.3. Обнаружение объектов на изображении с камеры
видеонаблюдения
Рассмотрим существующие методы и подходы обнаружения объектов
на изображении с камеры видеонаблюдения.
Методы обнаружения объекта на цифровом изображении, по способу
отнесения участка изображения к области интересов, можно разделить на две
большие группы [26, 13]: обобщающие и различающие.
Обобщающие методы составляют абстрактное, идеализированное
представление о структуре объекта на основе позитивных обучающих
изображений. Это представление называют моделью, понимая под этим
понятием: схему, математическую формулу, набор данных и алгоритмов,
воспроизводящих в специально оговоренном виде строение или свойства
объекта. При анализе нового изображения обобщающие методы оценивают,
насколько точно это изображение соответствует построенной модели. Кроме
анализа имеющихся изображений обобщающие методы могут использовать
полученную модель для построения новых изображений объекта. При
27
обучении обобщающих методов негативные обучающие изображения не
требуются.
Наиболее популярными моделями обобщающих методов являются [27,
3]: модель случайного поля, модель неявной формы, модель констелляции. В
модели случайного поля изображение разбивают на небольшие участки.
Каждому участку приписывается метка, которая представляет его смысловое
значение, например: «вода», «небо», «земля», «объект». Кроме того,
оцениваются вероятности смежного размещения двух разных меток.
Совокупность назначенных меток и их вероятностей составляет случайное
поле. При этом метки подбираются таким образом, чтобы получилось
наиболее правдоподобное случайное поле. Модель неявной формы
использует преобразование Хафа [28, 523]. В процессе обучения на
изображении объекта выделяют характерные точки. Для каждой точки
определяют радиус-вектор, который соединяет ее с геометрическим центром
объекта. При обнаружении характерной точки на исследуемом изображении
соответствующий радиус-вектор указывает ожидаемую позицию центра
объекта. Пикселю, расположенному в этой позиции, добавляют один голос.
Пиксель, набравший наибольшее количество голосов после сканирования
всего изображения, будет соответствовать наиболее вероятному положению
центра объекта. Модель констелляции рассматривает объект в виде
совокупности элементов. На исследуемом изображении выделяют
характерные участки и ставят их в соответствие элементам объекта или фона.
Затем с помощью перебора отыскивают наиболее правдоподобное
соответствие. Характеристики методов Капура–Винна [29], Феррари [30] и
Фергюса-Пероны [31], базирующихся соответственно на моделях случайного
поля, неявной формы и констелляции.
Различающие методы используют специальную функцию-
классификатор для обнаружения объекта на цифровом изображении. В
процессе обучения они выделяют различия между позитивными и
негативными обучающими изображениями. На основе этих различий они
28
подбирают параметры функции-классификатора. Полученная функция
применяется для разделения новых входных изображений на изображения,
содержащие и не содержащие область интересов. Характеристики наиболее
популярных различающих методов Виолы–Джонса [32], Лекуна [33] и
Папагеоргиу [34] представлены в таблице 1.2.
Таблица 1.2. Характеристики различающих методов
Методы Объем
обучающей
выборки, шт.
Время
обработки
одного
изображения,
мс
Верхняя оценка
вычислительной
сложности
Обобщающие Капура-Винна 35 3000 Квадратичная
Феррари 48 1000
Линейная Фергюса-Пероны 400 2500
Различающие Виолы-Джонса 14416 67
Лекуна 24300 100 Квадратичная
Папагеоргиу 27159 100 Линейная
Таким образом, различающие методы сосредоточены на различиях
между позитивными и негативными изображениями конкретной обучающей
выборки, в то время как обобщающие методы пытаются воссоздать
структуру самого объекта по его изображениям. Поэтому при обучении
обобщающих методов негативные изображения не требуются, а необходимое
количество позитивных изображений существенно меньше, чем при
обучении различающих методов. Вследствие чего для упрощенного обучения
следует использовать подход обобщающих методов.
1.2.4. Сопоставление изображений с нескольких камер
видеонаблюдения
Стереозрение в робототехнике и компьютерных системах – это одно из
направлений компьютерного зрения, которое используется при составлении
трехмерной модели окружающего мира, позволяет получить представление о
глубине изображения, формах, размерах и расстояниях до объектов на нем, с
использованием изображений с нескольких камер (зачастую двух).
29
В классических книгах по компьютерному зрению Д. Форсайт и Ж.
Понс [36], а также Л. Шапиро и Дж. Стокман [35] рассматривают актуальные
на настоящий момент модели камер. Каждый из подходов учитывает только
часть существующих в реальности искажений, которым подвержено
изображение в оптической системе цифровой камеры. Искажения
характерны для любой оптической системы, например, к ним относятся
дисторсии и иные геометрические искажения, неоднородная светового
потока и хроматическая дисторсия. Кроме того, поскольку проекционной
поверхностью для снимаемой сцены является ПЗС-матрицы (прибор с
зарядовой связью), то особенности её устройства привносят дополнительные
искажения, к которым можно отнести неоднородность матрицы, блюминг
(«стекание» яркости в соседние пиксели), отсечение яркости, эффект
дискретизации. Как правило, при моделировании камер ограничиваются
моделями оптической системы. Наиболее простой моделью камеры является
модель камеры обскуры [36, 40]. В её основе лежит предположение, что
линза обладает нулевой толщиной и кривизной, а значит, для нахождения
проекции точки на плоскость изображения можно воспользоваться
уравнением перспективной проекции. Для большинства практических задач
данная модель является достаточной. Неприменимой она будет лишь для
случаев существенных геометрических искажений, вносимых
непосредственно оптической системой. Так, подобные искажения возникают
при использовании специализированных камер (fish eye) или при съёмке
близко расположенных объектов. В таких случаях применяется проективная
модель камер, использующая математический аппарат, основанный на
аффинном и проективном преобразованиях. Следует отметить, что несмотря
на различные уравнения, лежащие в основе моделей, обе модели могут быть
представлены одной системой уравнений, а модель камеры-обскуры может
быть сведена к частному случаю проективной модели. Попытка
формализовать понятие цифрового изображения сделана также в книге Л.
Шапиро и Дж. Стокмана [35, 37]. Так, в книге в противоположность
30
аналоговому изображению, цифровое изображение представлено в виде
дискретной функции, определённой на прямоугольной матрице [35, 50]. В
работе В. Крашенинникова [37, 6] цифровые изображения рассматриваются
как случайные поля, а изменение изображения во времени – как случайные
процессы. Простейшая модель случайного поля как дискретной функции на
прямоугольной сетке с единичным шагом, практически, полностью
аналогична модели Л. Шапиро и Дж. Стокмана [35, 51]. Также в работе [35]
приводятся модели изображений с марковскими свойствами, в основе
которых также лежит дискретная прямоугольная область определения поля.
В. Крашенинников также рассматривает [37, 8] волновые модели
изображений. Наиболее интересными представляются предложенные в
работе модели, описывающие изображения как векторные случайные поля.
Данные модели наиболее точно могут представлять цветные изображения,
получаемые с цифровых камер. Разработка модели последовательности
изображений, получаемых с камеры, является важной задачей при создании
систем компьютерного зрения реального времени. В упоминавшийся выше
работе В. Крашенинникова [37, 9] последовательность изображений
трактуется как дискретная размерность случайного поля: два измерения
совпадают с измерениями изображения, а третье измерение соответствует
номерам изображений в последовательности. Слабостью данного
представления является отсутствие возможности получить значение
временного интервала между последовательными кадрами, а также
синхронизировать последовательности изображений. Кроме того,
практические исследования, представленные в данной работе, показали, что
получение изображений с USB-камер не является периодическим процессом,
поэтому существующие модели синхронизации периодических и
квазипериодических колебаний для данного процесса не могут быть
применены. В качестве модели последовательности изображений, решающей
обозначенные проблемы, можно рассматривать поток событий. Поток
событий описывает вероятностные характеристики наступления очередного
31
события, при этом каждому событию ставится в соответствие момент его
наступления. Важной особенностью модели потоков событий является
знание об уже наступивших событиях: значения уже прошедших интервалов
можно учитывать при расчёте и корректировке статистических
характеристик камеры. При этом следует учитывать свойство
стационарности потока событий, исключающее возможность описать поток
событий как марковский процесс. Отсутствие корреляций между
последовательными межкадровыми интервалами позволяет непосредственно
использовать их величину как фазовое пространство динамической системы
камеры. Несмотря на то, что практическому решению задач в области
стереозрения уделяется существенное внимание, до сих пор математический
аппарат был разработан только для этапов калибровки камер и задач
стереосопоставления. На настоящий момент существуют лишь попытки
включить систему машинного стереозрения в математическую модель
решения той или иной прикладной задачи в качестве модуля. В известных
моделях получение стереопар и стереосопоставление рассматриваются как
«чёрные ящики». Так, А.Ю. Кручинин рассматривает подсистему
стереозрения как часть модели адаптивной системы стереозрения для
подвижного робота [38, 2]; внутренними параметрами системы он полагает
алгоритмы стереосопоставления и их характеристики, входными – поток
снимков, выходными – трёхмерные модели пространства в совокупности с
достоверностью и сложностью их формирования. Формирование потока
снимков в предлагаемой модели осуществляет уже отдельная подсистема
взаимодействия с объектом.
1.2.5. Определение координат мобильного объекта на основе данных
видеонаблюдения
Рассмотрим существующие методы определения координат объекта в
пространстве на основе данных видеонаблюдения:
32
В статье Мартыновой Л.А., Корякина А.В., Ланцова К.В., Ланцова
В.В. [22, 267] предлагается метод определения координат и параметров
движения объекта: курса и скорости.
Метод основан на определении относительного размера изображения
объекта на экране телевизионной камеры по размеру изображения объекта на
экране и по боковому смещению изображения относительно центральной оси
экрана. Приведён алгоритм расчёта координат, курса и скорости объекта при
использовании неподвижной или поворотной телевизионных камер.
Приведены результаты экспериментальных исследований проверки ра-
ботоспособности предложенного метода.
Основными недостатками данного метода является невозможность
перемещения и вращения камеры видеонаблюдения после калибровки,
высокая степень погрешности при определении курса и скорости движения
мобильного объекта, что существенно ограничивает возможность
применения данного метода.
В статье А.В. Лопота, С.А. Половко, Д.Н. Степанова, А.А. Торубарова
[23, 252] для определения координат объекта по данным получаемым с
камеры видеонаблюдения приводится метод «Встречных измерений».
Описанный метод предоставляет возможность многократного уве-
личения точности измерения координат объектов, а именно углов тангажа и
рыскания, измерение которых по телевизионным изображениям представляет
большую проблему. Несмотря на то, что в общем случае метод является
приближенным, так как при вычислениях неизбежно возникают
неопределенные величины, для которых могут использоваться только
приближенные значения, погрешность может быть существенно уменьшена
при условии, что расстояние до пассивного объекта многократно превышает
базу ТВ-камера - маркер, то есть как раз в том случае, когда стандартный
метод масштабов обеспечивает большую погрешность измерений. Это
позволяет, в частности, с высокой точностью решить задачу определения
взаимного положения космических аппаратов. Также метод может
33
использоваться в математически строгой формулировке, например, для
определения координат мобильных роботов и надводных аппаратов (судов),
движение которых может рассматриваться как плоское (при движении по
плоскости или при использовании гиростабилизированных платформ для
компенсации крена).
В трудах научно-технической конференции-семинара «Техническое
зрение в системах управления мобильными объектами» [24, 198]
описывается система технического зрения, в которой определение координат
мобильного робота в рабочем пространстве осуществляется относительно
нескольких реперных точек, координаты которых известны или могут быть
измерены до начала движения робота. Минимально необходимое количество
реперов — три. Зная координаты реперов и значение углов α и β (угол между
направлениями на реперы), можно рассчитать положение самого объекта.
Это осуществляется путём решения типичной геодезической задачи —
задачи трёх линейных засечек.
Для поиска реперных точек на изображении рабочей сцены
используется математический аппарат автокорреляционных функций, что
позволяет существенно увеличить скорость работы системы за счёт
исключения этапов описания и распознавания реперов.
Главным недостатком данного метода является то, что область
движения мобильного объекта ограничена лишь участком, где установлены
заранее известные реперные точки. Данный недостаток сильно сужает
возможную область применения метода описанного в [24, 198].
1.3. Выводы по главе
По результатам обзора существующих методов и средств навигации
мобильного объекта на основе данных видеонаблюдения можно сделать
вывод о том, что на сегодняшний день не существует полноценно
разработанного комплекса методов и средств, способных качественно и
34
быстро решать задачу навигации мобильного объекта основываясь
исключительно на данные получаемые с камер видеонаблюдения. Однако
стоит отметить, что область компьютерного зрения в последние годы
развивается все стремительнее, что связано в первую очередь со снижением
цен на камеры видеонаблюдения и увеличением спектра возможностей при
обработке видеоизображения.
Таким образом, в процессе написания диссертационной работы будет
необходимо создать математическую модель для системы навигации
мобильного объекта, которая будет включать в себя доработанные
существующие методы, а так же разработанные эвристические алгоритмы
решения узконаправленных задач компьютерного зрения.
35
ГЛАВА 2. МЕТОДЫ НАВИГАЦИИ МОБИЛЬНЫХ ОБЪЕКТОВ НА
ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ
2.1. Определение параметров камеры видеонаблюдения
2.1.1. Определение углов обзора камеры видеонаблюдения
Метод определения угла обзора камеры №1
Постановка задачи
Входными данными данной задачи будут являться: угол обзора (в
градусах) камеры видеонаблюдения по диагонали γ, ширина и высота
изображения с камеры видеонаблюдения (в пикселях) W и H соответственно.
Необходимо определить углы обзора камеры видеонаблюдения по
горизонтали и вертикали.
Произведем дальнейшее решение, опираясь на рисунок 2.1:
На рисунке 2.1 показана плоскость ПЗС-матрицы. Точка F является
точкой фокуса камеры видеонаблюдения. Точка С центр ПЗС-матрицы. h –
высота треугольника AFB и треугольника OFD.
Рисунок 2.1. Плоскость ПЗС – матрицы
36
Список обозначений приведем в таблице 2.1:
Таблица 2.1. Список обозначений
Обозначение Название Диапазон значений Единица измерения
α Угол обзора по горизонтали 0 до 180 градус
β
Угол обзора по вертикали 0 до 180 градус
γ Угол обзора по диагонали 0 до 180 градус
W Ширина изображения 0 до 4000 пиксель
H
Высота изображения 0 до 4000 пиксель
Шаг 1. Рассмотрим треугольник OFD, в данном треугольнике OD
является диагональю изображения. Зная H и W определим диагональ OD:
√
Шаг 2. В треугольнике OFD, OC=OD, так как С центр ПЗС-матрицы,
зная OD, угол γ определим h:
Шаг 3. Рассмотрим треугольник AFB, зная, что AB = W, высоту h и то,
что точка С делит отрезок AB на две равные части, определим угол α:
.
Таким образом, мы нашли максимальный угол обзора камеры
видеонаблюдения по горизонтали, угол обзора по вертикали определяется
аналогично.
Основным и главным недостатком данного метода является то, что в
большинстве случаев производитель камер наблюдения не указывает угол
обзора по диагонали в технической документации, что делает невозможным
применения данного метода для подсчета углов обзора камеры по
горизонтальной и вертикальной осям.
37
Метод определения угла обзора камеры №2
Угол обзора α видеокамеры можно рассчитать, зная размер
светочувствительного элемента (матрицы) d (по горизонтальной или
вертикальной оси в зависимости от определяемого угла) и эффективное
фокусное расстояние объектива F по формуле:
α = 2arctg(
).
или экспериментальным путем зная расстояние от фокуса до наблюдаемого
объекта L и высоту (длину) данного объекта V по формуле (рис. 2.2):
α = 2arctg(
).
Рисунок 2.2. Модель видеокамеры
Список обозначений представлен в таблице 2.2.
Таблица 2.2. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
Угол обзора 0 до 180 Градус
F Фокусное расстояние 0 до 0.01 Метр
d Размер светочувствительной матрицы по одной из
осей (горизонтальной, вертикальной)
0 до 0.01 Метр
V Размер наблюдаемого объекта (длина, ширина) 0 до 100 Метр
L Расстояние от фокуса до наблюдаемого объекта 0 до 100 Метр
38
Стоит отметить, что информационное поле представляет собой
конечное изображение, состоящее из пикселей, каждый из которых имеет
свое значение яркости по трем цветовым составляющим. Информационное
поле характеризуется разрешением, то есть количеством пикселей в одной
строке и одном столбце изображения.
Аналитическая и графическая оценка функции угла обзора
Как видно из графика (рис. 2.3) значение функции (угла α), при
увеличении расстояния до объекта L (от 0 до 100 м), при постоянном
значении V (равном 10 м), уменьшается.
Рисунок 2.3. График функции при изменяющемся L (от 0 до 100 м) и
постоянном V (равном 10 м)
Рисунок 2.4. График функции при изменяющемся V (от 0 до 500 м) и
постоянном L (равном 50 м)
39
Как видно из графика, показанного на рисунке 2.4, значение функции
(угла α), при увеличении размера объекта V (от 0 до 100 м), при постоянном
значении L (равном 10 м), увеличивается.
Формальная модель оценки ошибок характеристик видеокамеры
При отсутствии заводских данных о фокусном расстоянии F и размере
светочувствительной матрицы d камеры видеонаблюдения, угол ее обзора
можно оценить экспериментальным путем, используя формулу (рис. 2.5):
α* = 2arctg(
).
Где:
V - размер наблюдаемого объекта (длина, ширина);
L - расстояние от фокуса до наблюдаемого объекта;
k - расстояние от фокуса до края линзы объектива.
Однако при измерении расстояния L возникает проблема, связанная с
невозможностью измерения расстояния от объекта до фокуса, поэтому будем
измерять расстояние до края объектива видеокамеры L – k. Заменим данную
разницу величиной L*:
α* = 2arctg(
).
Рисунок 2.5. Модель видеокамеры
40
Таким образом, при определении угла α возникает погрешность ,
которую необходимо оценить.
α = 2arctg(
); α
* = 2arctg(
).
Оценка погрешности метода определения угла обзора камеры
видеонаблюдения
При измерении размера объекта V необходимо учитывать искажение
передачи реального изображения на информационное поле, что сказывается
на точности конечного результата расчетов (угла α). Обозначим данное
искажение - m. Список обозначений приведен в таблице 2.3.
Таблица 2.3. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
Истинный угол обзора 0 до 180 Градус * Угол обзора, измеренный с погрешностью 0 до 180 Градус
V Размер наблюдаемой плоскости (объекта) 0 до 100 Метр
L Расстояние от фокуса до наблюдаемой плоскости
(объекта)
0 до 100 Метр
L*
Расстояние от края линзы объектива до наблюдаемой
плоскости (объекта)
0 до 100 Метр
k Расстояние от фокуса до края линзы объектива 0 до 0.05 Метр
m Искажение при передаче реального изображения на
информационное поле
0 до 0.05 Метр
Абсолютная погрешность -5 до 5 Градус
Экспериментально угол обзора определяется по следующей формуле:
α* = 2arctg(
).
Таким образом, погрешность метода при вычислении угла обзора α
равна:
| | | (
) (
) |
Из данного выражения оценим:
так как m>0, k>0 и L=L* + k, то:
;
41
,
откуда следует, что:
(
) (
)
и в виду того, что арктангенс возрастает на всей области, следует, что:
(
) (
)
а это значит, что .
Таким образом, с учетом оценки и замены L=L*
+ k:
(
) (
)
Возьмем тангенс от левой и правой части выражения в соответствии с
формулой:
(
)
Преобразуем и получим:
(
)
Таким образом:
42
Оценка искажения передачи реального изображения на информационное
поле (m)
При использовании данных о размерах объекта V необходимо
учитывать искажение передачи реального изображения на информационное
поле, что сказывается на точности конечного результата расчетов (угла α).
Обозначим данное искажение - m (рис 2.6).
Рисунок 2.6. Искажение передачи реального изображения на
информационное поле
Список обозначений приведен в таблице 2.4.
Таблица 2.4. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
d Размер светочувствительной матрицы по одной из
осей (горизонтальной, вертикальной)
0 до 0.01 Метр
N Количество светочувствительных элементов на ПЗС -
матрице
0 до 1280
h Часть размера наблюдаемой плоскости (объекта) 0 до 1 Метр
V Размер наблюдаемой плоскости (объекта) 0 до 100 Метр
m Искажение при передаче реального изображения на
информационное поле
0 до 0.05 Метр
Абсолютная погрешность -5 до 5 Градус
43
Изначально зная, что размер светочувствительных ячеек в ПЗС –
матрице одинаков, докажем, что области наблюдаемой плоскости (объекта)
передаваемые каждой светочувствительной ячейке равны (рис. 2.7).
Решим задачу:
Дано: BC = CD.
Доказать: B’C’ = C’D’.
Рисунок 2.7. Модель передачи наблюдаемого объекта на ПЗС-матрицу
Рассмотрим треугольники ACB и A’C’B’:
Рассмотрим треугольники ACB и A’C’B’, так как все три угла
треугольника ACB равны соответствующим углам треугольника A’C’B’, то
данные треугольники подобны:
Из подобия треугольников ACB и A’C’B’ следует:
Так как по данным задачи BC = CD то из равенства
следует,
что:
Что и требовалось доказать.
Исходя из данного доказательства, положим m = h, тогда:
44
Таким образом, искажение передачи реального изображения на
информационное поле будет определяться следующим выражением:
С учетом оценки m погрешность угла обзора будет определяться по
формуле:
Оценка расстояния от ПЗС – матрицы до края линзы в Web камере (к)
Произведем оценку расстояния от ПЗС – матрицы до края линзы в Web
камере обозначив ее за k (рис. 2.8).
Рисунок 2.8. Модель Web камеры
Список обозначений приведен в таблице 2.5.
45
Таблица 2.5. Список обозначений
Обозначение Название Диапазон
значений
Единица
измерения
α Угол обзора 0 до 180 Градус *K Расстояние от основания камеры до края
корпуса объектива
0 до 0.15 Метр
F Фокусное расстояние 0 до 0.01 Метр
d Размер светочувствительной матрицы по одной
из осей (горизонтальной, вертикальной)
0 до 0.01 Метр
а Расстояние внешнего края линзы до края
корпуса
0 до 0.01 Метр
k Расстояние от фокуса до внешнего края линзы 0 до 0.05 Метр
Введем условие:
k<Kmax,
где Kmax будет являться оценкой k.
Очевидно что:
Kmax=K*- (а + F).
В данном выражении невозможно измерить фокусное расстояние F.
Однако, определив экспериментальным путем угол обзора α, можно сделать
вывод о том, каким фокусным расстоянием обладает изучаемая нами web
камера, исходя из таблицы 2.6, где представлены ориентировочные углы
обзора (в градусах) камер видеонаблюдения в зависимости от формата ПЗС-
матрицы (ПЗС - прибор с зарядовой связью) видеокамеры и фокусного
расстояния объектива.
Таблица 2.6. Зависимость углов обзора о размера ПЗС - матрицы
Фокусное Размер
расстояние матрицы 2/3" 1/2" 1/3" 1/4"
2,0 мм - - - 82
2,8 мм - - 86 57
4,0 мм - 77 67 47
4,8 мм 83 67 57 40
6,0 мм 70 56 48 32
8,0 мм 56 44 36 25
12,0 мм 39 30 25 17
16,0 мм 30 23 17 13
25,0 мм 18 15 12 8
50,0 мм 10 7 6 4
46
С учетом оценки k и m погрешность угла обзора будет определяться по
формуле:
Оценка погрешности метода и измерений при определении угла
обзора камеры видеонаблюдения
При измерении расстояния L* и размера объекта V необходимо
учитывать погрешность измерительного прибора p, что сказывается на
точности конечного результата расчетов (угла α). Список обозначений
приведен в таблице 2.7.
Таблица 2.7. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
Истинный угол обзора 0 до 180 Градус * Угол обзора, измеренный с погрешностью 0 до 180 Градус
V Размер наблюдаемой плоскости (объекта) 0 до 100 Метр
L Расстояние от фокуса до наблюдаемой плоскости
(объекта)
0 до 100 Метр
L*
Расстояние от края линзы объектива до наблюдаемой
плоскости (объекта)
0 до 100 Метр
k Расстояние от фокуса до края линзы объектива 0 до 0.05 Метр
m Искажение при передаче реального изображения на
информационное поле
0 до 0.05 Метр
p Погрешность измерительного прибора 0 до 0.01 Метр
Абсолютная погрешность -5 до 5 Градус
Погрешность метода при вычислении угла обзора α равна:
Погрешность при измерении размера наблюдаемого объекта (V) равна (p).
Погрешность при измерении расстояния от края линзы объектива до
наблюдаемого объекта равна (p).
Таким образом, погрешность метода и измерений при вычислении угла
обзора α равна:
47
Метод определения угла обзора камеры №3
Постановка задачи
Входными данными данной задачи будут являться: Длина
наблюдаемой области на первом этапе V, длина наблюдаемой области на
втором этапе W, высота камеры на первом этапе L, высота камеры на втором
этапе M. Необходимо определить угол обзора камеры видеонаблюдения α.
Список обозначений приведем в таблице 2.8:
Таблица 2.8. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
α Угол обзора 0 до 180 Градус
Разница высоты камеры на первом и втором этапах 0 до 10 Метр
V
Длина наблюдаемой области на первом этапе 0 до 10 Метр
W Длина наблюдаемой области на втором этапе 0 до 10 Метр
L Высота камеры на первом этапе 0 до 10 Метр
M
Высота камеры на втором этапе 0 до 10 Метр
Произведем дальнейшее решение, опираясь на рисунок 2.9:
Рисунок 2.9. Модель видеокамеры
48
Шаг 1. Выразим V:
Шаг 2. Выразим W:
Шаг 3. Выразим M:
Шаг 4. Подставим М в выражение, полученное на шаге 1:
(
)
Шаг 5. Выразим из выражения, полученного на шаге 4 угол α:
(
) (
)
Оценка погрешности метода при определении угла обзора камеры
видеонаблюдения
Угол обзора камеры видеонаблюдения можно оценить
экспериментальным путем, используя формулу:
(
)
где:
V - размер наблюдаемого объекта (длина, ширина) на первом шаге;
W - размер наблюдаемого объекта (длина, ширина) на втором шаге;
L - расстояние от фокуса до наблюдаемого объекта на первом шаге;
M - расстояние от фокуса до наблюдаемого объекта на втором шаге;
k - расстояние от фокуса до края линзы объектива.
При измерении расстояния L и M возникает проблема, связанная с
невозможностью измерения расстояния от объекта до фокуса (рис. 2.10),
49
поэтому будем измерять расстояние до края объектива видеокамеры L – k и
M – k соответственно. Однако при раскрытии скобок получаем сокращение k,
а это значит, что угол в данном методе не зависит от расстояния от фокуса
до края линзы объектива k:
(
) (
)
Рисунок 2.10. Модель видеокамеры
При измерении размера объекта V и объекта W необходимо учитывать
искажение передачи реального изображения на информационное поле, что
сказывается на точности конечного результата расчетов (угла α). Обозначим
данное искажение – m1 и m2 соответственно (рис 2.11). Список обозначений
приведен в таблице 2.9.
50
Рисунок 2.11. Искажение передачи реального изображения на
информационное поле
Таблица 2.9. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
Истинный угол обзора 0 до 180 Градус * Угол обзора, измеренный с погрешностью 0 до 180 Градус
V Размер наблюдаемой плоскости (объекта) на первом
шаге
0 до 100 Метр
W Размер наблюдаемой плоскости (объекта) на втором
шаге
0 до 100 Метр
L Расстояние от фокуса до наблюдаемой плоскости
(объекта) на первом шаге
0 до 100 Метр
M
Расстояние от края линзы объектива до наблюдаемой
плоскости (объекта) на втором шаге
0 до 100 Метр
m1 Искажение при передаче реального изображения на
информационное поле на первом шаге
0 до 0.05 Метр
m2 Искажение при передаче реального изображения на
информационное поле на втором шаге
0 до 0.05 Метр
Абсолютная погрешность -5 до 5 Градус
Таким образом, при определении угла α возникает погрешность ,
которую необходимо оценить.
Погрешность метода при вычислении угла обзора α равна:
51
| | | (
) (
) |
Возьмем тангенс от левой и правой части выражения в соответствии с
формулой:
(
)
(
) (
)
(
) (
)
Преобразуем и получим:
(
)
Таким образом:
Оценка искажения передачи реального изображения на информационное
поле (m1, m2)
Список обозначений приведен в таблице 2.10.
Таблица 2.10. Список обозначений
Обозна
чение
Название Диапазон
значений
Единица
измерения
d Размер светочувствительной матрицы по одной из
осей (горизонтальной, вертикальной)
0 до 0.01 Метр
N Количество светочувствительных элементов на ПЗС -
матрице
0 до 1280
h Часть размера наблюдаемой плоскости (объекта) 0 до 1 Метр
V Размер наблюдаемой плоскости (объекта) на первом
шаге
0 до 100 Метр
m1 Искажение при передаче реального изображения на
информационное поле на первом шаге
0 до 0.05 Метр
Абсолютная погрешность -5 до 5 Градус
52
Изначально зная, что размер светочувствительных ячеек в ПЗС –
матрице одинаков, докажем, что области наблюдаемой плоскости (объекта)
передаваемые каждой светочувствительной ячейке равны (рис. 2.12).
Решим задачу:
Дано: BC = CD;
Доказать: B’C’ = C’D’;
Рисунок 2.12. Модель передачи наблюдаемого объекта на ПЗС – матрицу
Рассмотрим треугольники ACB и A’C’B’:
Рассмотрим треугольники ACB и A’C’B’, так как все три угла
треугольника ACB равны соответствующим углам треугольника A’C’B’, то
данные треугольники подобны:
Из подобия треугольников ACB и A’C’B’ следует:
Так как по данным задачи BC = CD то из равенства
следует,
что:
Что и требовалось доказать.
Исходя из данного доказательства, положим m1 = h, тогда:
53
Таким образом, искажение передачи реального изображения на
информационное поле на первом шаге будет определяться следующим
выражением:
Аналогично определим искажение передачи реального изображения на
информационное поле на втором шаге:
С учетом оценки m погрешность угла обзора будет определяться по
формуле:
( (
)
(
))
(
)
(
)
Оценка погрешности метода и измерений при определении угла
обзора камеры видеонаблюдения
При измерении расстояний L, M и размера объектов V, W необходимо
учитывать погрешность измерительного прибора p, что сказывается на
точности конечного результата расчетов (угла α). Список обозначений
приведен в таблице 2.11.
Таблица 2.11. Список обозначений
Обозна-
чение
Название Диапазон
значений
Единица
измерения
Истинный угол обзора 0 до 180 Градус * Угол обзора, измеренный с погрешностью 0 до 180 Градус
54
Таблица 2.11. Продолжение
V Размер наблюдаемой плоскости (объекта) на первом
шаге
0 до 100 Метр
W Размер наблюдаемой плоскости (объекта) на втором
шаге
0 до 100 Метр
L Расстояние от фокуса до наблюдаемой плоскости
(объекта) на первом шаге
0 до 100 Метр
M
Расстояние от края линзы объектива до
наблюдаемой плоскости (объекта) на втором шаге
0 до 100 Метр
m1 Искажение при передаче реального изображения на
информационное поле на первом шаге
0 до 0.05 Метр
m2 Искажение при передаче реального изображения на
информационное поле на втором шаге
0 до 0.05 Метр
p Погрешность измерительного прибора 0 до 0.01 Метр
Абсолютная погрешность -5 до 5 Градус
Погрешность метода при вычислении угла обзора α равна:
(
)
(
)
Погрешность при измерении размера наблюдаемого объекта V и W
равна (p).
Погрешность при измерении расстояния от края линзы объектива до
наблюдаемого объекта равна (p).
Таким образом, погрешность метода и измерений при вычислении угла
обзора α равна:
(
)
(
)
55
2.2. Определение положения камеры видеонаблюдения в пространстве
2.2.1. Определение расстояний от камеры до заданных точек
Постановка задачи
Входными данными данной задачи будут являться: углы обзора камеры
по горизонтали и вертикали θ, φ соответственно, координаты опорных точек
А, B, С, D, E в системе координат наблюдения: Xa, Ya, Xb, Yb, Xc, Yc, Xd, Yd,
Xe, Ye – соответственно (координату Z данных точек будем считать равной
0), пиксели опорных точек на изображении A – (Ia, Ja), B – (Ib, Jb), D – (Id, Jd),
C – (Ic, Jc), E – (Ie, Je). Точка С является точкой пересечения центральных
осей изображения. Точки А, B и С лежат на одной прямой. Точки D, E и С
лежат на одной прямой.
Необходимо найти расстояния от камеры до опорных точек AK, BK,
DK, СK, EK (рис. 2.13).
Список обозначений приведен в таблице 2.12.
Таблица 2.12. Список обозначений
Обозна-
чение
Название Диапазон
значений
Единица
измерения
N Количество пикселей в одной строке 0 до 1000
M Количество пикселей в одном столбце 0 до 1000
θ Угол обзора камеры по горизонтали 0 до 180 Градус Угол обзора камеры по вертикали 0 до 180 Градус
X а
Координата X точки А 0 до 10 Метр
Y а
Координата Y точки А 0 до 10 Метр
X b
Координата X точки B 0 до 10 Метр
Y b
Координата Y точки B 0 до 10 Метр
X c
Координата X точки C 0 до 10 Метр
Y c
Координата Y точки C 0 до 10 Метр
X d
Координата X точки D 0 до 10 Метр
Y d
Координата Y точки D 0 до 10 Метр
X e
Координата X точки E 0 до 10 Метр
Y e
Координата Y точки E 0 до 10 Метр
Ia, Ja Номер строки и столбца (пикселя) точки A Ni ,1 Mj ,1
Ib, Jb Номер строки и столбца (пикселя) точки B Ni ,1 Mj ,1
Ic, Jc Номер строки и столбца (пикселя) точки C Ni ,1 Mj ,1
Id, Jd Номер строки и столбца (пикселя) точки D Ni ,1 Mj ,1
Ie, Je Номер строки и столбца (пикселя) точки E Ni ,1 Mj ,1
56
Рисунок 2.13. Модель проекции изображения
Метод решения
Для отображения хода решения воспользуемся рисунком 2.14.
Шаг 1. По теореме Пифагора найдем расстояния от точек А, B, D до
точки С:
√
√
√
К
X
Z
O
Y
C A
B
D
E
57
Рисунок 2.14. Модель проекции изображения на плоскость
Для дальнейшего решения воспользуемся рисунком 2.15, где:
К - точка расположения камеры;
С - точка пересечения центральных осей изображения;
KQ - перпендикуляр к прямой АВ;
А - вспомогательная точка;
B - вспомогательная точка.
Рисунок 2.15. Модель проекции изображения на плоскость
D
А
B
С
0 X
Y
E
С Q B
А
К
α1
α2
α3
𝜇
58
Шаг 2. Углы α1 α3 определяются исходя из углов обзора и положения точек
на изображении. Для определения углов α1 α3 воспользуемся рисунком 2.16.
Рисунок 2.16. Модель проекции изображения на плоскость
Перейдем в проекционную плоскость камеры (рис. 2.17):
Рисунок 2.17. Проекционная плоскость камеры
59
Шаг 2.1. По теореме Пифагора найдем в пикселях:
√ ; √
Шаг 2.2. Найдем расстояние от фокуса до проекционной плоскости:
Шаг 2.3. Найдем углы под которыми наблюдаются точки А и B α1 и α3
соответственно:
√
√
Шаг 3. Найдем расстояния от камеры до точек А и B (рис. 2.15):
Рассмотрим треугольник АКС и по теореме синусов запишем:
⇒
⇒
Обозначим:
;
Из второго (2) уравнения:
( )
Приравняем к первому (1) уравнению:
Поделим все на => α2
:
60
Обозначим:
;
.
Подставим обозначения в третье (3) уравнение:
Определим угол
(
) (
)
По теореме синусов найдем АК:
По теореме синусов найдем BК:
По теореме синусов найдем КC:
Шаг 4. Расстояния DC и EC находятся аналогичным образом.
61
2.2.2. Определение положения камеры
Постановка задачи
Входными данными данной задачи будут являться: углы обзора камеры
по горизонтали и вертикали θ, φ соответственно, координаты опорных точек
А, B, С, D в системе координат наблюдения: Xa, Ya, Xb, Yb, Xc, Yc, Xd, Yd –
соответственно (координату Z данных точек будем считать равной 0),
пиксели опорных точек на изображении A – (Ia, Ja), B – (Ib, Jb), D – (Id, Jd), C –
(Ic, Jc), E – (Ie, Je). Расстояния от камеры до опорных точек AK, BK, DK, СK.
Точка С является точкой пересечения центральных осей изображения. Точки
А, B и С лежат на одной прямой. (рис. 2.18).
Необходимо определить положение камеры в пространстве Xk, Yk, Zk,
θ, ψ, φ.
Рисунок 2.18. Модель проекции изображения
К(Xk, Yk, Zk)
X
Z
O
Y
C A
B
D
62
Список обозначений приведен в таблице 2.13.
Таблица 2.13. Список обозначений
Обозна-
чение
Название Диапазон значений Единица
измерения
N Количество пикселей в одной строке 0 до 1000
M Количество пикселей в одном столбце 0 до 1000
α Угол обзора камеры по горизонтали 0 до 180 Градус
β Угол обзора камеры по вертикали 0 до 180 Градус
X а
Координата X точки А в системе координат
наблюдения
0 до 10 Метр
Y а
Координата Y точки А в системе координат
наблюдения
0 до 10 Метр
X b
Координата X точки B в системе координат
наблюдения
0 до 10 Метр
Y b
Координата Y точки B в системе координат
наблюдения
0 до 10 Метр
X d
Координата X точки D в системе координат
наблюдения
0 до 10 Метр
Y d
Координата Y точки D в системе координат
наблюдения
0 до 10 Метр
'X а
Координата X точки А в системе координат
камеры
0 до 10 Метр
'Y а
Координата Y точки А в системе координат
камеры
0 до 10 Метр
'Z а
Координата Z точки А в системе координат
камеры
0 до 10 Метр
'X b
Координата X точки B в системе координат
камеры
0 до 10 Метр
'Y b
Координата Y точки B в системе координат
камеры
0 до 10 Метр
'Z b
Координата Z точки B в системе координат
камеры
0 до 10 Метр
'X d
Координата X точки D в системе координат
камеры
0 до 10 Метр
'Y d
Координата Y точки D в системе координат
камеры
0 до 10 Метр
'Z d
Координата Z точки D в системе координат
камеры
0 до 10 Метр
Ia, Ja Номер строки и столбца (пикселя) точки A NIa ,1 MJa ,1
Ib, Jb Номер строки и столбца (пикселя) точки A NIb ,1 MJb ,1
Ic, Jc Номер строки и столбца (пикселя) точки A NIc ,1 MJc ,1
Id, Jd Номер строки и столбца (пикселя) точки A NId ,1 MJd ,1
X k
Координата камеры X в системе координат
наблюдения
0 до 10 Метр
Y k
Координата камеры Y в системе координат
наблюдения
0 до 10 Метр
Z k Координата камеры Z в системе координат
наблюдения
0 до 10 Метр
63
Таблица 2.13. Продолжение
θ Угол нутации 0 до 360 градус
Φ Угол собственного вращения 0 до 360 градус
ψ Угол прецессии 0 до 360 градус
anm Коэффициент, определяющий поворот
системы координат камеры относительно
общей системы координат
3,1n 3,1m
Рассмотрим рисунок 2.19 и докажем, что ab⊥ x'Oz', ad⊥ y'Oz'
Рисунок 2.19. Заданная точка в системе координат камеры
(Заданной точкой на рисунке 1 будем считать точку A)
Докажем, что ab⊥ x'Oz', ad⊥ y'Oz':
a (io,jo) d
b c
F (фокус)
A
B
C
D
X’
Z’
Y’
Z’
(X’a,Y’a, Z’a)
K
Проекционная плоскость
Предметная плоскость
α/2
β/2
x’0z’
y’0z’
P1
P2
64
Дано: AD⊥DK, AB⊥KB, AD⊥DC, AB⊥BC, BC⊥DC, KC⊥BC, KC⊥DC,
P1||P2.
Доказать: ab⊥ xOz; ad⊥ yOz.
Доказательство:
Если в четырехугольнике три угла прямые, то это прямоугольник.
Так как AD⊥DC&AB⊥BC&BC⊥DC->ABCD прямоугольник.
В прямоугольнике стороны попарно параллельны и равны.
Так как ABCD прямоугольник -> AB||DC&AD||BC.
Если две параллельные плоскости пересечены третьей, то линии их
пересечения параллельны.
Так как P1||P2 и пересечены плоскостью KDA то -> ad||AD;
Так как P1||P2 и пересечены плоскостью KCB то -> cb||CB;
Так как P1||P2 и пересечены плоскостью KDC то -> dc||DC;
Так как P1||P2 и пересечены плоскостью KAB то -> ab||AB.
Две прямые, параллельные третьей, параллельны.
Так как ad||AD& AD||BC& cb||CB-> ad|| cb;
Так как ab||AB& AB||DC& dc||DC-> ab|| dc.
Если одна из двух параллельных прямых перпендикулярна к третьей,
то и другая прямая перпендикулярна к этой прямой.
Так как KC⊥DC& dc||DC->dc⊥ KC;
Так как KC⊥BC& bc||BC->bc⊥ KC.
Если прямая, проведенная на плоскости через основание наклонной,
перпендикулярна её проекции, то она перпендикулярна и самой наклонной.
Так как dc⊥ KC& bc⊥ KC-> dc⊥ bc.
Если прямая, пересекающая плоскость, перпендикулярна двум прямым
в этой плоскости, проходящим через точку пересечения данной прямой и
плоскости, то она перпендикулярна плоскости.
dc⊥oc, bc⊥dc => dc ⊥ xOz;
bc⊥oc, bc⊥dc => bc ⊥ yOz.
65
Если плоскость перпендикулярна одной из двух параллельных прямых,
то она перпендикулярна и другой.
Так как dc ⊥ xOz& ab|| dc-> ab⊥ xOz;
Так как bc ⊥ yOz& ad|| cb-> ad⊥ yOz.
Что и требовалось доказать.
Метод решения
Шаг 1. Определим координаты точки A
в системе координат
камеры:
Опираясь на доказательство, приведенное выше, допустим, что ab⊥
x'Oz', ad⊥ y'Oz', тогда углы DKC и BKC определяется исходя из
положения заданной точки на изображении (Ia, Ja), угла обзора камеры по
вертикали и горизонтали (β, α) и количества пикселей в одной строке и в
одном столбце изображения (N, M):
Таким образом, координаты
будут определяться следующими
выражениями:
Шаг 2. Опираясь на рисунок 2.19 определим координату точки A :
В треугольнике KAB:
AB=Y';
√ .
66
В треугольнике KCB:
KC= ;
√ .
Подставляем KB и получаем:
√
.
В треугольнике KCD:
KC= ;
Подставляем и
:
√
.
Выражаем :
√
Шаг 3. Координата Z опорных точек равна 0, следовательно, опорные
точки лежат в одной плоскости. Составим уравнение плоскости для точек A,
B, D:
Коэффициенты уравнения вида будут
определяться исходя и матрицы:
|
|
Таким образом:
67
Шаг 4. Найдем координату исходя из уравнения плоскости
найденного на шаге 3 и координат камеры в системе координат камеры
√
√
Шаг 5. Найдем координаты камеры (рис. 2.20):
Рисунок 2.20. Модель проекции изображения
Зная координаты камеры Zk=KK' и расстояния от камеры до опорных
точек AK, BK, DK по теореме Пифагора определим расстояния от опорных
точек до точки K' (проекция точки K на предметную плоскость XoY):
√
√
√
Составим уравнения окружностей с центрами в точках А, B и
радиусами AK, AB соответственно:
К(Xk, Yk, Zk)
X
Z
O
Y
C
A B
D К'(X'
k, Y'
k)
68
Сместим координаты точек A и B на и по осям X и Y
соответственно:
Заменим:
Раскроем скобки и вычтем из второго первое:
Заменим:
Выразим X:
Подставим в уравнение (1):
(
)
Заменим:
Решаем квадратное уравнение и прибавим к корням значения и :
69
√
Далее аналогичным образом находим координаты точек пересечения
окружностей с центрами в точках B и D и радиусами BK' и DK'. Пересечение
трех окружностей дает одну общую точку, которой и будет являться точка K'
с координатами и .
Шаг 6. Запишем системы уравнений преобразования координат точек
A, B, D из системы координат камеры в общую систему координат [39, с. 88]:
Для координат X:
{
Для координат Y:
{
Для координат Z:
{
Решим систему (1) линейных уравнений методом Крамера [40, 241]:
где:
|
|
|
| |
| |
|
70
Решая все три системы линейных уравнений методом Крамера
определим значения всех коэффициентов a11, a12, a13, a21, a22, a23, a31, a32, a33.
Распишем коэффициенты a11, a12, a13, a21, a22, a23, a31, a32, a33:
{
Исходя из того, что:
Выражаем θ:
Исходя из того, что:
Выражаем φ:
Исходя из того, что:
Выражаем ψ:
71
2.3. Поиск мобильного объекта на изображении
2.3.1. Определение среднего значения яркости сегментов изображения
Постановка задачи
Входными данными данной задачи будут являться: изображение с
камеры наблюдения, количество сегментов изображения по горизонтали и
вертикали (выбирается экспериментально), количество пикселей в одной
строке сегмента, количество пикселей в одном столбце сегмента, яркость
каждого пикселя изображения. Необходимо определить среднее значение
яркости каждого сегмента изображения.
Список обозначений приведен в таблице 2.14.
Таблица 2.14. Список обозначений
Обозначение Название Диапазон
значений
Единица
измерения
N Количество пикселей в одной строке сегмента 0 до 1000
M Количество пикселей в одном столбце
сегмента
0 до 1000
W Количество сегментов по горизонтали 0 до 100
H Количество сегментов по вертикали 0 до 100
i Номер строки пикселя сегмента Ni ,0
j Номер столбца пикселя сегмента Mj ,0
w Номер сегмента изображения по горизонтали Ww ,0
h Номер сегмента изображения по вертикали Hh ,0
Li,j Яркость пикселя с номером i,j 0 до 255 Единиц
Mw,h Среднее значение яркости сегмента с номером
w,h.
0 до 255 Единиц
Окончательная формулировка задачи
Необходимо определить среднее значение яркости каждого сегмента
изображения , зная количество сегментов изображения по горизонтали и
вертикали W и H соответственно, количество пикселей в одной строке и в
одном столбце сегмента N и M соответственно, яркость каждого пикселя
изображения .
72
Метод решения
Для подсчета среднего значения яркости каждого сегмента входного
изображения воспользуемся следующим выражением:
∑ ∑
2.3.2. Кластеризация сегментов по среднему значению яркости
Постановка задачи
Входными данными данной задачи будут являться: количество
сегментов изображения по горизонтали и вертикали, среднее значение
яркости каждого сегмента изображения, экспериментальные значения
яркости фона и объекта.
Необходимо определить принадлежность каждого сегмента
изображения искомому объекту.
Список обозначений приведен в таблице 2.15.
Таблица 2.15. Список обозначений
Обозначение Название Диапазон
значений
Единица
измерения
W Количество сегментов по горизонтали 0 до 100
H Количество сегментов по вертикали 0 до 100
w Номер сегмента изображения по
горизонтали Ww ,0
h Номер сегмента изображения по
вертикали Hh ,0
Pw,h Принимает значение 1 если сегмент с
номером w,h искомому объекту
0 в противоположном случае
0 или 1
Mw,h Среднее значение яркости сегмента с
номером w,h.
0 до 255 Единиц
Lo Экспериментальное значение яркости
объекта
0 до 255 Единиц
Lf Экспериментальное значение яркости
фона
0 до 255 Единиц
73
Окончательная формулировка задачи
Необходимо определить принадлежность каждого сегмента
изображения искомому объекту зная количество сегментов
изображения по горизонтали и вертикали W и H соответственно, среднее
значение яркости каждого сегмента изображения и экспериментальные
значения яркости фона и объекта Lo и Lf.
Метод решения
Обладая знанием экспериментальных значений яркости фона и
объекта, произведем разбиение сегментов на два кластера. Стоит отметить,
что кластеризацию нужно производить по методу ближайшего соседа, когда
при каждой следующей итерации в кластер добавляются сегменты
являющиеся соседними сегментам уже вошедшим в кластер на предыдущих
итерациях:
Pw,h=1 если:
| | | | ;
∑ ∑
Pw,h=0 если:
| | | | ;
∑ ∑
2.3.3. Поиск граничной области объекта
Неформальная постановка задачи
Входными данными данной задачи будут являться: количество
сегментов изображения по горизонтали и вертикали, принадлежность
каждого сегмента искомому объекту.
74
Необходимо определить принадлежность каждого сегмента искомого
объекта граничной области.
Список обозначений приведен в таблице 2.16.
Таблица 2.16. Список обозначений
Обозначение Название Диапазон
значений
W Количество сегментов по горизонтали 0 до 100
H Количество сегментов по вертикали 0 до 100
w Номер сегмента изображения по горизонтали Ww ,1
h Номер сегмента изображения по вертикали Hh ,1
x Номер сегмента изображения по горизонтали Wx ,0
y Номер сегмента изображения по вертикали Hy ,0
Pw,h Принимает значение 1 если сегмент с номером
w,h искомому объекту
0 в противоположном случае
0 или 1
Gw,h Принимает значение 1 если сегмент с номером
w,h граничной области
0 в противоположном случае
0 или 1
Окончательная формулировка задачи
Необходимо определить принадлежность каждого сегмента искомого
объекта граничной области , зная принадлежность каждого сегмента
изображения искомому объекту количество сегментов изображения по
горизонтали и вертикали W и H соответственно.
Метод решения
Для поиска граничных сегментов объекта воспользуемся следующим
методом:
Для каждого сегмента входящего в кластер, определяющий искомый
объект, проверим “соседей”, если окажется что у сегмента хотя бы один
соседний сегмент не входит в данный кластер то сегмент является граничным
(рис 2.21).
∑ ∑
75
∑ ∑
Рисунок 2.21. Сегмент и его “соседи”
2.3.4. Поиск границы объекта
Постановка задачи
Входными данными данной задачи будут являться: количество
сегментов изображения по горизонтали и вертикали, количество пикселей
одной строки и одного столбца входного изображения, принадлежность
каждого сегмента искомому объекту, принадлежность каждого сегмента
границе искомого объекта.
Необходимо определить координаты (в пикселях) каждой граничной
точки.
Список обозначений приведен в таблице 2.17.
Таблица 2.17. Список обозначений
Обозначение Название Диапазон
значений
W Количество сегментов по горизонтали 0 до 100
H Количество сегментов по вертикали 0 до 100
N Количество пикселей в одной строке сегменте 0 до 1000
M Количество пикселей в одном столбце сегмента 0 до 1000
K Количество граничных точек 0 до 10000
w Номер сегмента изображения по горизонтали Ww ,1
h Номер сегмента изображения по вертикали Hh ,1
n Номер граничной точки Kn ,1 In Номер столбца изображения точки с номером n SIn ,1 Jn Номер строки изображения точки с номером n VJn ,1
Gw,h Принимает значение 1 если сегмент с номером w,h
принадлежит граничной области, 0 в обратном случае
0 или 1
Окончательная формулировка задачи
76
Необходимо определить координаты (в пикселях) каждой граничной
точки , зная принадлежность каждого сегмента искомого объекта
граничной области , количество сегментов изображения по горизонтали
и вертикали W и H соответственно, количество пикселей в одной строке и в
одном столбце сегмента N и M соответственно.
Метод решения
Точкой границы объекта будем считать крайние точки граничного
сегмента со стороны, где отсутствует сегмент “сосед” по кластеру (пример
показан на рисунке 2.22.
Рисунок 2.22. Выбор точки границы объекта
2.3.5. Обход границы объекта
Постановка задачи
Входными данными данной задачи будут являться: количество
пикселей одной строки и одного столбца входного изображения, количество
граничных точек, координаты граничных точек в пикселях.
Необходимо совершить обход границы по граничным точкам.
Список обозначений приведен в таблице 2.18.
77
Таблица 2.18. Список обозначений
Обозначение Название Диапазон
значений
S Количество пикселей в одном столбце изображения 0 до 10000
V Количество пикселей в одной строке изображения 0 до 10000
K Количество граничных точек 0 до 10000
n Номер граничной точки Kn ,1 m Номер перехода от одной граничной точки к другой m=n-1
In Номер столбца изображения точки с номером n SIn ,1 Jn Номер строки изображения точки с номером n VJn ,1 Dm Направление перехода с номером m 0 до 7
Окончательная формулировка задачи
Необходимо определить направление обхода границы по граничным
точкам , зная координаты (в пикселях) каждой граничной точки ,
количество граничных точек K, количество пикселей одной строки и одного
столбца входного изображения S и V соответственно.
Метод решения
Обход граничных точек закодируем цепным кодом. Цепным кодом
(кодом Фримэна) называют последовательность целых чисел от 0 до 7,
задающих одно из семи дискретных направлений при переходе от одной
граничной точки к следующей при выбранном направлении обхода.
Фактически цепной код определяет угол как функцию длины дуги с учетом
того, что диагональные отрезки в n раз длиннее, чем вертикальные или
горизонтальные. В этом смысле цепной код для замкнутых кривых (цепочек)
представляет собой периодическую функцию. В зависимости от выбора
начальной точки отсчета одна и та же кривая кодируется, вообще говоря,
разными цепными кодами. Вот почему часто рассматривают
нормализованный код, однозначно описывающий ту или иную дискретную
цепочку. Нормализованный цепной код является таким, который
минимизирует целое восьмеричное число, представляемое
78
последовательностью цифр от 0 до 7. Пример цепного кода показан на
рисунке 2.23.
Рисунок 2.23. Пример цепного кода
Для решения поставленной задачи обход по граничным точкам ,
будет определяться:
Если и , То = 0;
Если и , То = 1;
Если и , То = 2;
Если и , То = 3;
Если и , То = 4;
Если и , То = 5;
Если и , То = 6;
Если и , То = 7.
2.3.6. Поиск особых точек объекта
Постановка задачи
Входными данными данной задачи будут являться: цепной код
переходов, описывающий границу объекта, количество граничных точек.
Необходимо выделить из всех граничных точек особые.
Список обозначений приведен в таблице 2.19.
79
Таблица 2.19. Список обозначений
Обозначение Название Диапазон
значений
K Количество граничных точек 0 до 10000
n Номер граничной точки Kn ,1 m Номер перехода от одной граничной точки к другой m=n-1
Dm Направление перехода с номером m 0 до 7 Vm Значение выпуклости или вогнутости перехода с
номером m
-1 до 1
On 1 если точка с номером n является особой
0 в обратном случае
0 или 1
Окончательная формулировка задачи
Необходимо выделить из всех граничных точек особые On, зная цепной
код переходов, описывающих границу объекта Dm и количество граничных
точек K.
Метод решения
Особой точкой в данной задаче будем считать точку наибольшего
искривления границы объекта в некой окрестности.
По цепному коду определим выпуклость окрестностей каждой точки.
Выпуклость обозначим Vm=1.
Если абсолютное значение выпуклости окрестности точки будет
больше 2 то есть осуществляет поворот на 1800, то будем считать точку n
особой:
, если:
∑ | |
80
2.4. Определение координат проекции произвольно заданной точки на
предметную плоскость
Для определения координат проекции произвольно заданной точки на
предметную плоскость разработан аналитический метод. Однако данный
метод не позволяет с необходимой точность получать координаты точки на
предметной плоскости. Для компенсации ошибки аналитического метода
применяем нейронную сеть с методом обучения обратного распространения
ошибки.
2.4.1. Аналитический метод определения координат проекции
произвольно заданной точки на предметную плоскость
Постановка задачи
Входными данными данной задачи будут являться: координаты камеры
Xk, Yk, Zk (точка фокуса камеры), углы, определяющие направление камеры
φ, θ, ψ, углы обзора камеры по горизонтали и вертикали α, β соответственно,
положение точки на проекционной точки А - Io, Jo и размер изображения в
пикселях NxM. Необходимо найти координаты точки А - Xo, Yo, (Zо будем
считать равной 0) (рис. 2.24).
Список обозначений приведен в таблице 2.20.
Таблица 2.20. Список обозначений
Обозначе-
ние
Название Диапазон
значений
Единица
измерения
N Количество пикселей в одной строке
изображения
0 до 10000
M Количество пикселей в одном столбце
изображения
0 до 10000
X k
Координата камеры по оси X 0 до 10 Метр
Y k
Координата камеры по оси Y 0 до 10 Метр
Z k Координата камеры по оси Z 0 до 10 Метр
X o
Координата заданной точки по оси X в системе
координат наблюдения
0 до 10 Метр
Y o
Координата заданной точки по оси Y в системе
координат наблюдения
0 до 10 Метр
Z o Координата заданной точки по оси Z в системе
координат наблюдения
0 до 10 Метр
81
Таблица 2.20. Продолжение
Координаты заданной точки в системе координат
камеры по оси X’
0 до 10 Метр
Координаты заданной точки в системе координат
камеры по оси Y’
0 до 10 Метр
Координаты объекта в системе координат камеры
по оси Z’
0 до 10 Метр
θ Угол нутации 0 до 360 Градус
φ Угол собственного вращения 0 до 360 Градус
ψ Угол прецессии 0 до 360 Градус
β Угол обзора по вертикали 0 до 90 Градус
α Угол обзора по горизонтали 0 до 90 Градус
Io
Номер столбца изображения, определяющий
особую точку Ni ,1
Jo Номер строки изображения, определяющий
особую точку Mj ,1
Окончательная формулировка задачи
Опираясь на входные данные, необходимо найти координаты заданной
точки Xо, Yо, (Zо будем считать равной 0).
Метод решения
Дальнейшее решение приведем, опираясь на рисунки 2.24 и 2.25:
Шаг 1. Определим координаты точки A
в системе координат
камеры:
Углы DKC и BKC определяется исходя из положения заданной
точки на изображении (Io, Jo), угла обзора камеры по вертикали и
горизонтали (β, α) и количества пикселей в одной строке и в одном столбце
изображения (N, M):
82
Рисунок 2.24. Заданная точка в системе координат камеры
(Заданной точкой на рисунке 2.24 будем считать точку A)
Таким образом, координаты
будут определяться следующими
выражениями:
Шаг 2. Определим координаты заданной точки Xo, Yo:
Зная координаты заданной точки в системе координат камеры
можно найти координаты заданной точки в общей системе координат Xo, Yo,
a (Io,Jo) d
b c
F (фокус)
A
B C
D
X’
Z’
Y’
Z’
(X’o,Y’o, Z’o)
K
Проекционная плоскость
Предметная плоскость
α/2
β/2
x’0z’
y’0z’
P1
P2
83
Zo путем переноса одной системы координат относительно другой на Xk, Yk,
Zk и поворота на углы ψ, φ, θ (рисунок 2.25) [ 39, с. 88]:
{
Распишем коэффициенты a11, a12, a13, a21, a22, a23, a31, a32, a33:
{
Рисунок 2.25. Заданная точка в системе координат наблюдения
(Заданной точкой на рисунке 2.25 будем считать точку A)
X’
A
Y
𝑁
Y’
X
O
Z’
C
К
Z
φ
ψ
θ
D
84
Подставим в третье уравнение системы уравнений (1) координаты и
, полученные на шаге 1:
Подставим значения углов DOC и BOC полученные на шаге 1 и
выразим :
Зная , найдем
и подставив
в уравнения (1) и (2), далее
подставив все известные величины в систему уравнений (3) найдем
координаты Xо и Yо.
2.4.2. Метод обучения нейронной сети для определения координат
проекции произвольно заданной точки на предметную плоскость
Постановка задачи
Для обучения нейронной сети была подготовлена обучающая и
контролирующая выборки (приложение 1). Входными данными для обучения
нейронной сети будут являться положение заданной точки на изображении
Io, Jo, координаты проекции особой точки на предметную плоскость,
полученные аналитическим методом Xo, Yo и истинные координаты X*
o, Y*o.
Необходимо получить значения всех весов синапсов . Список
обозначений представлен в таблице 2.21. Модель нейронной сети
представлена на рисунке 2.26.
85
Рисунок 2.26. Модель нейронной сети
Таблица 2.21. Список обозначений
Обозначение Название Диапазон
значений
Единица
измерения
W Количество пикселей в одной строке 0 до 10000
H Количество пикселей в одном столбце 0 до 10000
T Количество итераци обучения 0 до 100000
t Номер итерации обучения Tt ,1
X k
Координата камеры X 0 до 10 Метр
Y k
Координата камеры Y 0 до 10 Метр
Z k Координата камеры Z 0 до 10 Метр
X*o
Координата особой точки X (истинная) 0 до 10 Метр
Y*
o
Координата особой точки Y (истинная) 0 до 10 Метр
X o
Координата особой точки X (аналитический
метод)
0 до 10 Метр
Y o
Координата особой точки Y (аналитический
метод)
0 до 10 Метр
Io
Номер столбца изображения, определяющий
особую точку NIo ,1
Jo Номер строки изображения, определяющий
особую точку MJo ,1
N Количество слоев сети
n Номер слоя сети 3 до N
np Количество нейронов n-ого слоя сети 0 до 10
nj
Номер нейрона n-ого слоя сети 1 до
np
nji Номер входа j-ого нейрона n-ого слоя сети 1,1 nj pin
n
jy Значение выхода j-ого нейрона n-ого слоя сети
86
Таблица 2.21. Продолжение
η Параметр, определяющий скорость обучения 0 до 1
n
jd Целевое значение j-ого нейрона n-ого слоя сети
n
jS Взвешенная сумма входных сигналов j-ого
нейрона n-ого слоя сети
n
j Ошибка выхода j-ого нейрона n-ого слоя сети
n
ijw Вес связи j – ого нейрона слоя n входа i
n
ijw Изменение веса связи j – ого нейрона слоя n
входа i
)(wE Целевая функция ошибки нейронной сети
Окончательная формулировка задачи
Задача обучения нейронной сети сводится к минимизации
целевой функции ошибки нейронной сети, которая находится по методу
наименьших квадратов:
min;)(2
1)(
1
2
Np
j
N
j
N
j dywE
где:
Метод решения
Шаг 1. Подать на входы сети один из возможных образов и в режиме
обычного функционирования нейронной сети, когда сигналы
распространяются от входов к выходам, рассчитать значения последних по
формуле:
;0
)()1()(
M
i
n
ij
n
i
n
j wys
где:
Шаг 2. Рассчитать (N)
и w(N)
для выходного слоя по формулам:
;)( )()(
j
j
j
N
j
N
jds
dydy
.)1()()( N
i
N
j
N
ij yw
87
Шаг 3. Рассчитать (n)
и w(n)
для всех остальных слоев (n = N – 1, ..., 1)
по формулам:
.)1()1()(
j
j
k
n
jk
n
k
n
jds
dyw
.)1()()( n
i
n
j
n
ij yw
Шаг 4. Скорректировать все веса в нейронной сети по формуле:
).()1()( )()()( twtwtw n
ij
n
ij
n
ij
Шаг 5. Если ошибка сети существенна, перейти на шаг 1. В противном
случае – конец.
Нейронной сети на шаге 1 попеременно в случайном порядке
предъявляются все тренировочные образы, чтобы сеть не забывала одни по
мере запоминания других.
2.5. Определение координат и направления мобильного объекта на
основе данных с множества камер наблюдения
2.5.1. Поиск соответствия особых точек изображений с разных камер
видеонаблюдения
Постановка задачи
Входными данными данной задачи будут являться: количество камер
видеонаблюдения, координаты камер видеонаблюдения, количество особых
точек изображений с каждой камеры видеонаблюдения, координаты
проекции особых точек всех изображений на предметную плоскость.
Необходимо определить соответсвие особых точек изображений с
разных камер видеонаблюдения.
Список обозначений приведен в таблице 2.22.
88
Таблица 2.22. Список обозначений
Обозначе
ние
Название Диапазон
значений
Единица
измерения
N Количество камер видеонаблюдения 0 до 10
n Номер камеры видеонаблюдения Nn ,1
m Номер камеры видеонаблюдения Nm ,1 nm
Kn Количество особых точек изображения c камеры n 0 до 10
in Номер особой точки изображения c камеры n n
n Ki ,1
Xn
Координата камеры с номером n по X 0 до 10 Метр
Yn
Координата камеры с номером n по Y 0 до 10 Метр
Zn Координата камеры с номером n по Z 0 до 10 Метр
Координата X проекции i-ой особой точки на
предметную плоскость изображения с камеры n
0 до 10 Метр
Координата Y проекции i-ой особой точки на
предметную плоскость изображения с камеры n
0 до 10 Метр
Расстояние между всеми наборами прямых от
камер видеонаблюдения до проекций особых точек
предметную плоскость
0 до 0.03 Метр
Равно 1 если i-ая особая точка изображения c
камеры n соответствует i-ой особой точке
изображения c камеры m
Равно 0 в противоположном случае
0 или 1
Окончательная формулировка задачи
Необходимо определить соответствие особых точек изображений с
разных камер видеонаблюдения , зная количество камер
видеонаблюдения N, координаты камер видеонаблюдения Xn, Yn, Zn,
количество особых точек изображений с каждой камеры видеонаблюдения
Kn, координаты проекции особых точек всех изображений на предметную
плоскость
.
Метод решения
Составим уравнения прямых:
Далее опишем процесс определения расстояний между двумя
прямыми:
89
Пусть у нас даны две непараллельные прямые AB и SC, определим
наименьшее расстояние между ними NM (рис. 2.27):
Рисунок 2.27. Расстояние между прямыми в пространстве
Очевидно, что расстояние MN находится по формуле:
√
Где координаты точек M и N определяются:
Точки M по X:
|
| | |
|| |
| | |
Точки M по Y:
|
| | |
|| |
| | |
90
Точки M по Z:
|
| | |
|| |
| | |
Точки N по X:
|| |
|
|| |
| | |
Точки N по Y:
|| |
|
|| |
| | |
Точки N по Z:
|| |
|
|| |
| | |
где:
| |
| |
91
Таким образом, после решения задачи по описанному выше алгоритму
получаем набор расстояний между всеми наборами прямых .
После определения минимальных расстояний между всеми наборами
прямых, найдем наиболее близкие прямые между всеми наборами
изображений:
если
{ }
Таким образом каждая i-ая точка изображения изображения с камеры n
будет соответствовать лишь одной i-ой точке изображения с камеры m.
2.5.2. Определение координат особых точек в пространстве
Постановка задачи
Входными данными данной задачи будут являться: координаты камер
видеонаблюдения, координаты проекции особых точек всех изображений на
предметную плоскость, соответствие особых точек между всеми
изображениями.
Необходимо определить пространственные координаты особых точек.
Список обозначений приведен в таблице 2.23.
Таблица 2.23. Список обозначений
Обозначение Название Диапазон
значений
Единица
измерения
N Количество камер видеонаблюдения 0 до 10
n Номер камеры видеонаблюдения Nn ,1
m Номер камеры видеонаблюдения Nm ,1 nm
Kn Количество особых точек изображения c камеры n 0 до 10
in Номер особой точки изображения c камеры n n
n Ki ,1
92
Таблица 2.23. Продолжение
Xn
Координата камеры с номером n по X 0 до 10 Метр
Yn
Координата камеры с номером n по Y 0 до 10 Метр
Zn Координата камеры с номером n по Z 0 до 10 Метр
Координата X проекции i-ой особой точки на
предметную плоскость изображения с камеры n
0 до 10 Метр
Координата Y проекции i-ой особой точки на
предметную плоскость изображения с камеры n
0 до 10 Метр
Координата X i-ой особой точки изображения с
камеры n и i-ой особой точки изображения с
камеры m
0 до 10 Метр
Координата Y i-ой особой точки изображения с
камеры n и i-ой особой точки изображения с
камеры m
0 до 10 Метр
Координата Z i-ой особой точки изображения с
камеры n и i-ой особой точки изображения с
камеры m
0 до 10 Метр
Равно 1 если i-ая особая точка изображения c
камеры n соответствует i-ой особой точке
изображения c камеры m
Равно 0 в противоположном случае
0 до 1
N Количество камер видеонаблюдения 0 до 10
n Номер камеры видеонаблюдения Nn ,1
m Номер камеры видеонаблюдения Nm ,1 nm
Kn Количество особых точек изображения c камеры n 0 до 10
in Номер особой точки изображения c камеры n n
n Ki ,1
Окончательная формулировка задачи
Необходимо определить координаты особых точек изображений с
разных камер видеонаблюдения , ,
, зная количество камер
видеонаблюдения N, координаты камер видеонаблюдения Xn, Yn, Zn,
количество особых точек изображений с каждой камеры видеонаблюдения
Kn, координаты проекции особых точек всех изображений на предметную
плоскость
и соответствие особых точек изображений с разных камер
видеонаблюдения .
Метод решения
Составим уравнения прямых:
93
Пусть у нас даны две непараллельные прямые AB и SC, определим
координаты точек N и M (рис. 2.28):
Рисунок 2.28. Расстояние между прямыми в пространстве
Исходя из рисунка 2.28, координаты точек N и M определяются
следующими выражениями:
Точки M по X:
|
| | |
|| |
| | |
Точки M по Y:
94
|
| | |
|| |
| | |
Точки M по Z:
|
| | |
|| |
| | |
Точки N по X:
|| |
|
|| |
| | |
Точки N по Y:
|| |
|
|| |
| | |
Точки N по Z:
| | |
|
|| |
| | |
где:
| |
| |
95
Особую точку будем считать серединой прямой MN и определять ее
координату по формуле:
2.5.3. Сопоставление особых точек объекта и эталона
Постановка задачи
Входными данными данной задачи будут являться: количество особых
точек, пространственные координаты особых точек, количество эталонов
фигур, координаты особых точек эталонов фигур, пороговое значение.
Необходимо сопоставить найденные особые точки с особыми точками
эталонов фигур.
Список обозначений приведен в таблице 2.24.
Таблица 2.24. Список обозначений
Обозначе
ние
Название Диапазон
значений
Единица
измерения
N Количество найденных особых точек 1 до 10
i Номер найденной особой точки Ni ,1
K Количество эталонов фигур 1 до 10
96
Таблица 2.24. Продолжение
k Номер эталона фигуры Kk ,1
Mk Количество особых точек k-ого эталона фигуры 1 до 10
jk Номер особой точки k-ого эталона фигуры kk Mj ,1
Xi
Координата i-ой найденной особой точки X 0 до 10 Метр
Yi
Координата i-ой найденной особой точки Y 0 до 10 Метр
Zi Координата i-ой найденной особой точки Z 0 до 10 Метр
kjX
Координата j-ой особой точки k-ого эталона
фигуры X
0 до 10 Метр
kjY
Координата j-ой особой точки k-ого эталона
фигуры Y
0 до 10 Метр
kjZ
Координата j-ой особой точки k-ого эталона
фигуры Z
0 до 1 Метр
E Пороговое значение 0 до 5
ikS Равно 1 если i-ая найденная особая точка
соответствует k-ому эталону фигуры, 0 в
противоположном случае
0 до 1
Окончательная формулировка задачи
Необходимо сопоставить найденные особые точки с особыми точками
эталонов фигур , зная количество особых точек N, пространственные
координаты особых точек Xi, Yi, Zi, количество эталонов фигур K, координаты
особых точек эталонов фигур пороговое значение E.
Метод решения
Основным критерием сопоставления найденных особых точек с
эталономи фигур будет являться разница расстояний между соседними
найденными особыми точками и особыми точками каждого эталона фигуры:
,1ikS ,,1 Ni ;,1 Kk
если:
√( ) (
) (
)
√
97
2.6. Определение координат и направления мобильного объекта на
основе данных с одной камеры наблюдения
Постановка задачи
Входными данными задачи будут являться количество точек эталона K,
количество особых точек объекта M, бинарное изображение объекта ,
разрешение изображения WxH, координаты особых точек объекта в системе
координат наблюдения
, координаты точек эталона в системе координат
наблюдения , координаты камеры в системе координат наблюдения
коэффициент проекции w, расстояние от камеры до проекционной
плоскости d, координаты дальней и ближней проекционной плоскости по оси
Z, углы обзора камеры наблюдения по горизонтали и вертикали α, β
соответственно.
Необходимо определить координаты объекта в системе координат
наблюдения
и вектор его направления .
Список обозначений приведен в таблице 2.25.
Таблица 2.25. Список обозначений
Обозначе-
ние
Название Диапазон
значений
Единица
измерения
K Количество точек эталона 0 до 100
M Количество особых точек объекта 0 до 100
W Количество пикселей в одной строке изображения 0 до 10000
H Количество пикселей в одном столбце изображения 0 до 10000
G Количество преобразований 0 до 1000
i Номер точки эталона
j Номер особой точки объекта
x Номер строки пикселя изображения Wx ,0
y Номер столбца пикселя изображения Hy ,0
a Номер наиболее близкой к камере особой точки
объекта
g Номер преобразования
t Номер вида преобразования 6,1t
b Номер наилучшего вида преобразования 6,1b
1 если пиксель с номером x y принадлежит
наблюдаемому объекту
0 в обратном случае
0 или 1
98
Таблица 2.25. Продолжение
1 если пиксель с номером x y принадлежит
созданному эталону после g-го преобразования
t-го вида
0 в обратном случае
0 или 1
Rt
Разница изображений объекта и эталона после
преобразования t-го вида
0 до 10000 Единиц
R*
Начальная разница изображений объекта и эталона 0 до 10000 Единиц
Координата X i – ой точки эталона в системе
координат наблюдения
0 до 10 Метр
Координата Y i – ой точки эталона в системе
координат наблюдения
0 до 10 Метр
Координата Z i – ой точки эталона в системе
координат наблюдения
0 до 10 Метр
Координата X i – ой точки эталона проекционной
плоскости
0 до 10 Метр
Координата Y i – ой точки эталона проекционной
плоскости
0 до 10 Метр
Координата Z i – ой точки эталона проекционной
плоскости
0 до 10 Метр
Координата X j – ой особой точки объекта в
системе координат наблюдения
0 до 10 Метр
Координата Y j – ой особой точки объекта в
системе координат наблюдения
0 до 10 Метр
Координата X i – ой точки объекта в системе
координат наблюдения
0 до 10 Метр
Координата Y i – ой точки объекта в системе
координат наблюдения
0 до 10 Метр
Координата Z i – ой точки объекта в системе
координат наблюдения
0 до 10 Метр
Координата камеры X в системе координат
наблюдения
0 до 10 Метр
Координата камеры Y в системе координат
наблюдения
0 до 10 Метр
Координата камеры Z в системе координат
наблюдения
0 до 10 Метр
Координата объекта X в системе координат
наблюдения
0 до 10 Метр
Координата объекта Y в системе координат
наблюдения
0 до 10 Метр
Координата объекта Z в системе координат
наблюдения
0 до 10 Метр
Вектор направления мобильного объекта
w Коэффициент проекции 1
d Расстояние от камеры наблюдения до
проекционной плоскости
0 до 10 Метр
ZF Координата Z дальней проекционной плоскости 0 до 10 Метр
ZN Координата Z ближней проекционной плоскости 0 до 10 Метр
α Угол обзора по горизонтали 0 до 90 Градус
β Угол обзора по вертикали 0 до 90 Градус
99
Окончательная формулировка задачи
Необходимо определить координаты объекта в системе координат
наблюдения
. То есть необходимо подобрать такое изображение
эталона
, которое наиболее полно совпадет с изображением
наблюдаемого объекта , таким образом, координаты эталона после g-го
преобразования t-го вида будут являться координатами объекта в системе
координат наблюдения
:
∑ ∑|
|
Метод решения
Шаг 1. Определим номер a особой точки объекта ближайшей к камере
видеонаблюдения:
√
.
Шаг 2. Произведем перспективное преобразование и определим
координаты точек эталона на проекционной плоскости:
|
|
|
|
|
|
|
|
|
|
Таким образом, координаты
определяются:
100
Шаг 3. Создадим бинарное изображение эталона:
Зная координаты каждой точки эталона, методом Грехэма [45, 1175]
построим выпуклый многоугольник, чтобы для любой точки эталона было
верно одно из трех утверждений:
а) точка является вершиной построенного многоугольника;
б) точка принадлежит одной из сторон многоугольника;
в) точка лежит внутри многоугольника.
Таким образом:
{
где – начальное изображение эталона.
Шаг 4. Определим начальную разницу изображений:
∑ ∑|
|
Шаг 5. Произведем расчет разницы изображений для всех возможных
видов преобразования и определим номер наилучшего из них на данном
шаге:
Обозначим виды преобразований t:
увеличение значений координат эталона по оси X;
уменьшение значений координат эталона по оси X;
увеличение значений координат эталона по оси Y;
уменьшение значений координат эталона по оси Y;
поворот координат эталона на угол по часовой стрелке;
поворот координат эталона на угол против часовой стрелки.
∑ ∑|
|
Шаг 6. Определение размерности изменения вида с номером b:
Увеличиваем размерность изменения с номером b, пока значение
разности изображений не начнет увеличиваться:
101
∑ ∑|
| ∑ ∑|
|
Далее повторяем шаги 5 и 6 до тех пор, пока ни один из видов
преобразования не будет уменьшать размерность разности изображений
эталона и объекта.
Таким образом, после конечного преобразования мы будем иметь
измененные координаты эталона в системе наблюдения, найденные
координаты и будут являться координатами точек объекта наблюдения.
Далее зная координаты всех точек объекта, пересчитаем координаты
самого объекта и вектор его направления соответственно.
2.7. Выводы по главе
Во второй главе была разработана математическая модель для системы
навигации мобильного объекта включающая в себя методы определения
углов обзора камеры видеонаблюдения, определения пространственного
положения камеры видеонаблюдения, поиска мобильного объекта на
изображении, определения пространственных координат мобильного объекта
и вектора его направления.
102
ГЛАВА 3. СРЕДСТВА НАВИГАЦИИ МОБИЛЬНЫХ ОБЪЕКТОВ НА
ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ
3.1. Концептуальное проектирование базы данных
Выполним поэтапно построение концептуальной модели:
Установим сущности (хранилища соответствуют сущностям БД).
Результат представлен в таблице 3.1.
Таблица 3.1. Сущности БД
Обозначение сущности
(связи)
Наименование сущности (связи) Количество экземпляров
S1 Мобильный объект 1
S2 Особые точки эталона 10
S3 Связь нейронов детекторов 20
S4 Связь нейронов 20
S5 Нейронная сеть 2
S6 Нейроны внутреннего слоя 20
S7 Выборка 200
S8 Обучающая выборка 100
S9 Тестирующая выборка 100
S10 Камеры видеонаблюдения 20
S11 Положение камеры 20
S12 Вид камеры 2
S13 Особые точки изображения 100
Сущность «Мобильный объект» содержит информацию о мобильном
объекте системы. Сущность «Камеры видеонаблюдения» содержит
информацию о камерах видеонаблюдения. Сущность «Особые точки
эталона» содержит всю информацию об особых точках эталонов
геометрических фигур. Сущность «Особые точки изображения» содержит
всю необходимую информация об особых точках изображений с камер
видеонаблюдения. Сущность «Нейронная сеть» содержит всю необходимую
информация о применяемых для решения задач нейронных сетях. Сущность
«Нейроны внутреннего слоя» содержит всю необходимую информация о
нейронах внутреннего слоя нейронной сети. Сущность «Связь нейронов»
содержит всю информацию о связи нейронов внутреннего слоя с входными
нейронами нейронной сети. Сущность «Связь нейронов детекторов»
103
содержит информацию о связи нейронов детекторов с параметрами
элементов выборки. Сущность «Положение камеры» содержит всю
информацию о положении всех используемых камер видеонаблюдения в
пространстве. Сущность «Вид камеры» содержит всю информацию о
разновидности и характеристиках всех используемых камер
видеонаблюдения. Сущность «Выборка» содержит экспериментально
полученные данные необходимые для обучения нейронной сети. Сущность
«Обучающая выборка» содержит список элементов обучающей выборки.
Сущность «Тестирующая выборка» содержит список элементов
тестирующей выборки.
Для каждого атрибута устанавливается наименование, приводится
описание, определяется домен. Результат оформлен в таблице 3.2.
Таблица 3.2. Атрибуты сущности и их домены
Наименование
сущности
(количество
экземпляров)
Наименование атрибута Наименование домена
Мобильный
объект
(1)
*Идентификационный номер МО Номер
Текущая координата нахождения (Х) Координата
Текущая координата нахождения (У) Координата
Текущая координата нахождения (Z) Координата
Составляющая вектора направления I Составляющая вектора
Составляющая вектора направления J Составляющая вектора
Составляющая вектора направления K Составляющая вектора
Камеры
видеонаблюдения
(20)
*Идентификационный номер камеры Номер
*Номер разновидности камеры Номер
Номер положения камеры Номер
Особые точки
эталона
(10)
* Идентификационный номер МО Номер
* Идентификационный номер фигуры Номер
*Номер особой точки Номер
Координата точки Х Координата
Координата точки Y Координата
Координата точки Z Координата
Особые точки
изображения
(100)
*Идентификационный номер камеры Номер
*Номер особой точки Номер
Координата точки Х Координата
Координата точки Y Координата
Координата точки Z Координата
Координата точки на изображении I Координата
Координата точки на изображении J Координата
104
Таблица 3.2. Продолжение
Нейронная сеть
(2)
*Идентификационный номер нейронной
сети
Номер
Коэффициент наклона Коэффициент
Скорость обучения Скорость
Нейроны
внутреннего слоя
(20)
*Идентификационный номер нейронной
сети
Номер
*Номер нейрона Номер
Пороговое значение нейрона Пороговое значение
Вес связи нейрона Вес связи
Связь нейронов
(20)
*Идентификационный номер нейронной
сети
Номер
*Номер нейрона Номер
*Номер нейрона детектора Номер
Связь нейронов
детекторов
(20)
*Номер нейрона детектора Номер
Наименование параметра элемента
выборки
Параметр выборки
Положение
камеры
(20)
*Номер положения камеры Номер
Координата нахождения (X) Координата
Координата нахождения (Y) Координата
Координата нахождения (Z) Координата
Угол нутации α Угол
Угол прецессии β Угол
Угол собственного вращения γ Угол
Вид камеры
(2)
*Номер разновидности камеры Номер
Угол обзора по горизонтали θ Угол
Угол обзора по вертикали φ Угол
Разрешение (ширина) Разрешение
Разрешение (высота) Разрешение
Выборка
(200)
*Идентификационный номер элемента
выборки
Номер
Идентификационный номер камеры Номер
Координата точки Х (измеренная) Координата
Координата точки Y (измеренная) Координата
Координата точки Х (истинная) Координата
Координата точки Y (истинная) Координата
Обучающая
выборка
(100)
*Идентификационный номер элемента
выборки
Номер
Тестирующая
выборка
(100)
*Идентификационный номер элемента
выборки
Номер
Все атрибуты простые, параметрические, первичные. Все атрибуты
статические, кроме атрибутов: «Текущая координата нахождения (Х)»,
«Текущая координата нахождения (У)», «Текущая координата нахождения
105
(Z)», «Составляющая вектора направления I», «Составляющая вектора
направления J», «Составляющая вектора направления K».
Определим типы значений для доменов. Результат представлен в
таблице 3.3.
Таблица 3.3. Типы значений доменов
Наименование
домена
Название и описание типа данных
(максимальное количество знаков)
Примеры
значений
Номер Номер, цифровой код (2)* 10
Координата Координата, числовой (метр) (3) 76
Составляющая
вектора
Составляющая вектора, числовой (3) 312
Угол Угол, числовой (градусы) (3) 150
Разрешение Разрешение, числовой (4) 1280
Номер особой точки Номер особой точки, цифровой код (2)* 10
Номер нейрона Номер нейрона, цифровой код (2)* 31
Пороговое значение Пороговое значение, числовой (4) 21.25
Вес связи Вес связи, числовой (3) 0.12
Скорость Скорость, числовой (3) 12.5
Параметр выборки Параметр выборки, текстовый (15) Координата X
Осуществим построение графовой концептуальной модели. Графовая
концептуальная модель представлена на рисунках 3.1 и 3.2.
106
Рисунок 3.1. Графовая концептуальная модель (часть 1)
10(1) 200
Выборка
*Идентификационный номер элемента выборки
Идентификационный номер камеры
Координата точки Х (измеренная)
Координата точки Y (измеренная)
Координата точки Х (истинная)
Координата точки Y (истинная)
Связь 1
*Идентификационный номер
камеры
1(1)
100
Обучающая выборка
* Идентификационный номер элемента выборки
100
Особые точки изображения
*Идентификационный номер камеры
*Номер особой точки *Номер изображения
Координата точки Х
Координата точки Y
Координата точки Z
Координата точки на изображении I
Координата точки на изображении J
2
Вид камеры
*Номер разновидности камеры
Угол обзора по горизонтали θ
Угол обзора по вертикали φ
Разрешение (ширина)
Разрешение (высота)
20
Положение камеры
*Номер положения камеры
Координата нахождения (X)
Координата нахождения (Y)
Координата нахождения (Z)
Угол нутации α
Угол прецессии β
Угол собственного вращения γ
20
Камеры видеонаблюдения
*Идентификационный номер камеры
*Номер разновидности камеры
Номер положения камеры
Связь 2
*Номер положения камеры
Связь 3
*Номер разновидности камеры
Связь 4
*Идентификационный номер
камеры
1(1)
5(1)
10(1)
1(1)
1(1)
1(1)
Связь 5
*Идентификационный номер
элемента выборки
Связь 6
*Идентификационный номер
элемента выборки
Тестирующая выборка
* Идентификационный номер элемента выборки
100
1(1) 1(1)
1(1) 1(1)
107
Рисунок 3.2. Графовая концептуальная модель (часть 2)
10(1)
1(1)
Связь 8 *Идентификационный
номер
нейронной сети
Связь 7 *Идентификационный номер
нейронной сети
*Номер нейрона
2
Нейронная сеть
*Идентификационный
номер нейронной сети
Коэффициент наклона
Скорость обучения
20
Нейроны внутреннего слоя
*Идентификационный номер нейронной сети
*Номер нейрона
Пороговое значение нейрона
Вес связи нейрона
20
Связь нейронов
*Идентификационный номер нейронной сети
*Номер нейрона
*Номер нейрона детектора
1(1)
1(1)
Мобильный объект
*Идентификационный номер МО
Текущая координата нахождения (Х) Текущая координата нахождения (У)
Текущая координата нахождения (Z)
Составляющая вектора направления I
Составляющая вектора направления J
Составляющая вектора направления K
Особые точки эталона
*Идентификационный номер МО
*Идентификационный номер фигуры
*Номер особой точки
Координата точки Х
Координата точки У
Координата точки Z
Связь 10
*Идентификационный номер МО
10 1
1(1) 10(1)
20
Связь нейронов детекторов
*Номер нейрона детектора
Наименование параметра элемента выборки
Связь 9 *Номер нейрона детектора
1(1)
1(1)
108
3.2. Логическое проектирование базы данных
Полученная начальная логическая модель представлена в таблице 3.4.
Таблица 3.4. Начальная логическая модель
Наименование
отношения
Наименование атрибута Наименование домена
Мобильный
объект
*Идентификационный номер МО Номер
Текущая координата нахождения (Х) Координата
Текущая координата нахождения (У) Координата
Текущая координата нахождения (Z) Координата
Составляющая вектора направления I Составляющая вектора
Составляющая вектора направления J Составляющая вектора
Составляющая вектора направления K Составляющая вектора
Камеры
видеонаблюдения
*Идентификационный номер камеры Номер
*Номер разновидности камеры Номер
Номер положения камеры Номер
Особые точки
эталона
* Идентификационный номер МО Номер
* Идентификационный номер фигуры Номер
*Номер особой точки Номер
Координата точки Х Координата
Координата точки Y Координата
Координата точки Z Координата
Особые точки
изображения
*Идентификационный номер камеры Номер
*Номер особой точки Номер
Координата точки Х Координата
Координата точки Y Координата
Координата точки Z Координата
Координата точки на изображении I Координата
Координата точки на изображении J Координата
Нейронная сеть
*Идентификационный номер нейронной
сети
Номер
Коэффициент наклона Коэффициент
Скорость обучения Скорость
Нейроны
внутреннего слоя
*Идентификационный номер нейронной
сети
Номер
*Номер нейрона Номер
Пороговое значение нейрона Пороговое значение
Вес связи нейрона Вес связи
Связь нейронов
*Идентификационный номер нейронной
сети
Номер
*Номер нейрона Номер
*Номер нейрона детектора Номер
Связь нейронов
детекторов
*Номер нейрона детектора Номер
Наименование параметра элемента
выборки
Параметр
109
Таблица 3.4. Продолжение
Положение
камеры
*Номер положения камеры Номер
Координата нахождения (X) Координата
Координата нахождения (Y) Координата
Координата нахождения (Z) Координата
Угол нутации α Угол
Угол прецессии β Угол
Угол собственного вращения γ Угол
Вид камеры
*Номер разновидности камеры Номер
Угол обзора по горизонтали θ Угол
Угол обзора по вертикали φ Угол
Разрешение (ширина) Разрешение
Разрешение (высота) Разрешение
Выборка
*Идентификационный номер выборки Номер
Идентификационный номер камеры Номер
Координата точки Х (измеренная) Координата
Координата точки Y (измеренная) Координата
Координата точки Х (истинная) Координата
Координата точки Y (истинная) Координата
Обучающая
выборка
*Идентификационный номер элемента
выборки
Номер
Тестирующая
выборка
*Идентификационный номер элемента
выборки
Номер
Связь 1 *Идентификационный номер камеры Номер
Связь 2 *Номер положения камеры Номер
Связь 3 *Номер разновидности камеры Номер
Связь 4 *Идентификационный номер камеры Номер
Связь 5 *Идентификационный номер элемента
выборки
Номер
Связь 6 *Идентификационный номер элемента
выборки
Номер
Связь 7 *Идентификационный номер нейронной
сети
Номер
*Номер нейрона Номер
Связь 8 *Идентификационный номер нейронной
сети
Номер
Связь 9 *Номер нейрона детектора Номер
Связь 10 *Идентификационный номер МО Номер
Результат построения системы функциональных зависимостей всех
отношений представлен в таблице 3.5.
110
Таблица 3.5. Система функциональных зависимостей
Наименование
отношения
Наименование атрибута F1
Мобильный
объект
*Идентификационный номер МО *
Текущая координата нахождения (Х) ←
Текущая координата нахождения (У) ←
Текущая координата нахождения (Z) ←
Составляющая вектора направления I ←
Составляющая вектора направления J ←
Составляющая вектора направления K ←
Камеры
видеонаблюдения
*Идентификационный номер камеры *
*Номер разновидности камеры *
Номер положения камеры ←
Особые точки
эталона
* Идентификационный номер МО *
* Идентификационный номер фигуры *
*Номер особой точки *
Координата точки Х ←
Координата точки Y ←
Координата точки Z ←
Особые точки
изображения
*Идентификационный номер камеры *
*Номер особой точки *
Координата точки Х ←
Координата точки Y ←
Координата точки Z ←
Координата точки на изображении I ←
Координата точки на изображении J ←
Нейронная сеть
*Идентификационный номер нейронной
сети
*
Коэффициент наклона ←
Скорость обучения ←
Нейроны
внутреннего слоя
*Идентификационный номер нейронной
сети
*
*Номер нейрона *
Пороговое значение нейрона ←
Вес связи нейрона ←
Связь нейронов
*Идентификационный номер нейронной
сети
*
*Номер нейрона *
*Номер нейрона детектора *
Связь нейронов
детекторов
*Номер нейрона детектора *
Наименование параметра элемента
выборки
←
Вид камеры
*Номер разновидности камеры *
Угол обзора по горизонтали θ ←
Угол обзора по вертикали φ ←
Разрешение (ширина) ←
Разрешение (высота) ←
111
Таблица 3.5. Продолжение
Положение
камеры
*Номер положения камеры *
Координата нахождения (X) ←
Координата нахождения (Y) ←
Координата нахождения (Z) ←
Угол нутации α ←
Угол прецессии β ←
Угол собственного вращения γ ←
Выборка
*Идентификационный номер выборки *
Идентификационный номер камеры ←
Координата точки Х (измеренная) ←
Координата точки Y (измеренная) ←
Координата точки Х (истинная) ←
Координата точки Y (истинная) ←
Обучающая
выборка
*Идентификационный номер элемента
выборки
*
Тестирующая
выборка
*Идентификационный номер элемента
выборки
*
Связь 1 *Идентификационный номер камеры *
Связь 2 *Номер положения камеры *
Связь 3 *Номер разновидности камеры *
Связь 4 *Идентификационный номер камеры *
Связь 5 *Идентификационный номер элемента
выборки
*
Связь 6 *Идентификационный номер элемента
выборки
*
Связь 7 *Идентификационный номер нейронной
сети
*
*Номер нейрона *
Связь 8 *Идентификационный номер нейронной
сети
*
Связь 9 *Номер нейрона детектора *
Связь 10 *Идентификационный номер МО *
С целью повышения аддитивности и предотвращения дублирования
подобных атрибутов отношения: «Связь 1», «Связь 2», «Связь 3», «Связь 4»,
«Связь 5», «Связь 6», «Связь 7», «Связь 8», «Связь 9» и «Связь 10»
сокращаем.
Для нормализации отношений обратимся к таблице 3.5.
Нормализация отношений не требуется, так как все представленные
отношения находятся в третьей нормальной форме.
Атрибутом связи между отношениями «Камеры видеонаблюдения» и
«Особые точки изображения» является атрибут «Идентификационный номер
112
камеры». Атрибутом связи между отношениями «Камеры видеонаблюдения»
и «Выборка» является атрибут «Идентификационный номер камеры».
Атрибутом связи между отношениями «Камеры видеонаблюдения» и
«Положение камеры» является атрибут «Номер положения камеры».
Атрибутом связи между отношениями «Камеры видеонаблюдения» и «Вид
камеры» является атрибут «Номер разновидности камеры». Атрибутом связи
между отношениями «Обучающая выборка» и «Выборка» является атрибут
«Идентификационный номер элемента выборки». Атрибутом связи между
отношениями «Тестирующая выборка» и «Выборка» является атрибут
«Идентификационный номер элемента выборки». Атрибутом связи между
отношениями «Нейронная сеть» и «Нейроны внутреннего слоя» являются
атрибут «Идентификационный номер нейронной сети». Атрибутом связи
между отношениями «Связь нейронов» и «Нейроны внутреннего слоя»
являются атрибуты «Идентификационный номер нейронной сети» и «Номер
нейрона». Атрибутом связи между отношениями «Связь нейронов» и «Связь
нейронов детекторов» является атрибут «Номер нейрона детектора».
Атрибутом связи между отношениями «Мобильный объект» и «Особые
точки эталона» является атрибут «Идентификационный номер МО».
Оформление логического проектирования базы данных показано на
рисунках 3.3 и 3.4.
113
Рисунок 3.3. Логическая модель (часть 1)
Идентификационный
номер нейронной сети
(1,1 : 10,1)
Идентификационный номер нейронной сети
Номер нейрона
(1,1 : 1,1)
10
Особые точки эталона
*Идентификационный номер МО
*Идентификационный номер фигуры
*Номер особой точки
Координата точки Х
Координата точки Y
Координата точки Z
2
Нейронная сеть
*Идентификационный номер
нейронной сети
Коэффициент наклона
Скорость обучения
20
Нейроны внутреннего слоя
*Идентификационный номер нейронной сети
*Номер нейрона
Пороговое значение нейрона
Вес связи нейрона
20
Связь нейронов
*Идентификационный номер
нейронной сети
*Номер нейрона
*Номер нейрона детектора
1
Мобильный объект
*Идентификационный номер МО
Текущая координата нахождения (Х)
Текущая координата нахождения (У)
Текущая координата нахождения (Z)
Составляющая вектора направления I
Составляющая вектора направления J
Составляющая вектора направления K
20
Связь нейронов детекторов
*Номер нейрона детектора
Наименование параметра элемента выборки
Номер нейрона детектора
(1,1 : 1,1)
Идентификационный номер МО (1,1 : 10,1)
114
Рисунок 3.4. Логическая модель (часть 2)
20
Камеры видеонаблюдения
*Идентификационный номер камеры
*Номер разновидности камеры
Номер положения камеры
100
Особые точки изображения
*Идентификационный номер камеры
*Номер особой точки
Координата точки Х
Координата точки Y
Координата точки Z
Координата точки на изображении I
Координата точки на изображении J
Идентификационный номер
камеры
(1,1 : 5,1)
200
Выборка
*Идентификационный номер элемента
выборки
Идентификационный номер камеры
Координата точки Х (измеренная)
Координата точки Y (измеренная)
Координата точки Х (истинная)
Координата точки Y (истинная) 20
Положение камеры
*Номер положения камеры
Координата нахождения (Х)
Координата нахождения (У)
Координата нахождения (Z)
Угол нутации α
Угол прецессии β
Угол собственного вращения γ
2
Вид камеры
*Номер разновидности камеры
Угол обзора по горизонтали θ
Угол обзора по вертикали φ
Разрешение (ширина)
Разрешение (высота)
Номер положения камеры
(1,1 : 1,1)
Номер разновидности камеры
(1,10 : 1,1)
Идентификационный номер
камеры (1,10 : 1,1)
100
Обучающая выборка
*Идентификационный номер
элемента выборки
100
Тестирующая выборка
*Идентификационный номер
элемента выборки
Идентификационный номер
элемента выборки
(1,1 : 1,1)
Идентификационный номер
элемента выборки
(1,1 : 1,1)
115
3.3. Технология определения координат и направления мобильного
объекта на основе данных видеонаблюдения
Схемы технологии определения координат и направления мобильного
объекта представлены на рисунках 3.5 - 3.8.
На рисунке 3.5 показана основная схема технологии определения
координат мобильного объекта на основе данных видеонаблюдения.
Процесс навигации мобильного объекта начинается с определения
параметров (углы обзора) камеры наблюдения, далее происходит обучение
нейронной сети на основе заранее подготовленной обучающей и
контролирующей выборки, затем осуществляется определение положения
камеры наблюдения в пространстве. Далее происходит поиск особых точек
мобильного объекта на изображении с камеры наблюдения, после чего с
использованием обученной нейронной сети определяются координаты
особых точек. В заключении на основе полученной информации
определяется положения и направление мобильного объекта.
116
3
5
1
Определение
положения
камеры
Определение
координат
особых
точек
Определение
параметров
камер
наблюдения
4
Поиск особых
точек МО на
изображении
Мобильный
объект
Положение
камеры
6
Начало
Конец
Изображе-
ние с
камеры
Положение
камеры
Камера
наблюдения
Изображе-
ние с
камеры
Завершить
процесс
Нет
Да
Особые
точки
изображения
Особые
точки
изображения
Особые
точки
эталона
Вид камеры
Вид камеры
Связь
нейронов
Нейронная
сеть
Нейроны
внутреннего
слоя
Особые
точки
изображения
Определение
положения и
направления
движения МО
Изображе-
ние с камеры
Вид камеры
Обучение
нейронной сети
Обучающая
и тестирую-
щая выборка
Нейронная
сеть
Нейроны
внутреннего
слоя
Нейронная
сеть
2
7
Рисунок 3.5. Основная схема технологического процесса
117
На рисунке 3.6 более подробно показан процесс определения
положения камеры в пространстве.
Данный процесс начинается с формирования опорной сетки по
изображению, полученному с камеры видеонаблюдения, далее на основе
полученной информации об опорной сетке происходит определение
координат и углов поворота камеры наблюдения.
Рисунок 3.6. Определение положения камеры
1
Формирование
опорной сетки
2
Определение
координат и
направления
камеры
Начало
Конец
Положение
камеры
Опорная
сетка Изображе-
ние с камеры
Камера
наблюдения
Вид камеры
Опорная
сетка
Вид камеры
Камера
наблюдения
118
На рисунке 3.7 более подробно показан процесс поиска особых точек
мобильного объекта на изображении.
Данный процесс начинается с определения яркости сегментов на
изображении, далее на основе полученных значений яркости производится
кластеризация, где определяется принадлежность каждого сегмента объекту.
Затем, зная принадлежащие объекту сегменты, осуществляется поиск
границы объекта и выделение особых точек
Рисунок 3.7. Поиск особых точек МО на изображении
1
Определение
яркости
сегментов
изображения
Начало
Яркость
сегментов Изображе-
ние с
камеры
Вид камеры
Кластеризация
сегментов
изображения
2
Сегменты
объекта Яркость
сегментов
3
Поиск границы
объекта
Граница
объекта Изображе-
ние с
камеры
Вид камеры
Сегменты
объекта
Определение
особых точек
объекта
4
Граница
объекта Особые
точки
изображения
Изображе-
ние с
камеры
Вид камеры
Конец
119
На рисунке 3.8 более подробно показан процесс определения
координат особых точек.
Данный процесс начинается с аналитического определения положения
особых точек, далее на основе заранее обученной нейронной сети
происходит компенсирования ошибок аналитического подхода, в результате
чего мы получаем более точные значения координат особых точек.
Рисунок 3.8. Определение координат особых точек
1
Аналитическое
определение
положения
особых точек
2
Определение
координат особых
точек при помощи
нейросети
Начало
Конец
Коорди-
наты
особых
точек
Камера
наблюдения
Вид камеры
Положение
камеры
Особые
точки
изображения
Вид камеры
Нейронная
сеть
Нейроны
внутреннего
слоя
Коорди-
наты
особых
точек
Положение
камеры
Особые
точки
изображения
120
3.4. Описание алгоритмов решения прикладных задач
На рисунках 3.9- 3.16 представлены схемы алгоритмов решения задач.
Алгоритм программы определения положения мобильного объекта
представлен на рисунке 3.9
Рисунок 3.9. Алгоритм программы определения положения МО
Определение опорной сетки изображения
Определение
положения
камеры
Поиск МО на
изображении
Определение координат
МО
Да
Да
Начало
Конец
Загрузка данных
из БД
Ошибка данных
1
2
3
4
5
6
7
8
Да
Нет
Нет
Да
Нет
Нет
Запись
данных в БД
10 9
Положение найдено
Завершение процесса
Выдача
сообщения об
ошибке
Выдача сообщения об
ошибке
Выдача сообщения об
ошибке
11
12
13
Параметры найдены
121
Алгоритм подпрограммы определения опорной сетки представлен на
рисунке 3.10.
Рисунок 3.10. Алгоритм подпрограммы определения опорной сетки
Определение и
вывод искомых
линий
Начало
Конец
Получение
изображения
1
2
3
4
5
Подготовка
изображения
Составление
списка возможных
линий
Запись в БД
122
Алгоритм подпрограммы подготовки изображения представлен на
рисунке 3.11.
Рисунок 3.11. Алгоритм подпрограммы подготовки изображения
Закрашивание одиночных
черных пикселей
Сохранение текущего
изображения
Начало
Конец
Получение изображения и установка кол-
ва кадров
1
2
3
4
5
6 7
Перевод изображения в
черно белое
Применение преобразования
по средней яркости блока
Закрашивание одиночных
белых пикселей
123
Алгоритм подпрограммы составления списка возможных линий
представлен на рисунке 3.12.
Рисунок 3.12. Алгоритм подпрограммы определения списка возможных линий
Запись значений счетчика, k и b
для данной линии
в массив
Начало
Конец
Увеличение счетчика
совпадений s и
просмотра p
b++
1
2
3
4
5
6
7
8
Загрузка
подготовленног
о изображения
Да
Нет
Да
Нет
Да
Нет
9
10
Пока b < кол-ва пикселей в
одном столбце
изображения
Пока коэффициент k <
1,5 (изначально k = -1,5)
Пока x < кол-ва пикселей в
одной строке изображения
y = k*x+b
Да
x++
Нет
Пиксель x, y – черный и входит
в зону просмотра
Запись
коэффициента просмотра
KP=p/s
11
124
Алгоритм подпрограммы определения и вывода искомых линий
представлен на рисунке 3.13.
Рисунок 3.13. Алгоритм подпрограммы определения и вывода искомых линий
Начало
Конец
1
2
3
4
5
6
Загрузка списка линий и
коэффициента просмотра
Да
Нет
Да
Нет
Пока не пройдены все
линии
Коэффициент k текущей линии
равен коэффициенту k линии с
максимальным значением
счетчика пересечений и
значение счетчика этой линии
больше допустимого порога
Прорисовка
линии
Выбор следующей потенциальной
линии по максимальному коэффициенту
просмотра
Поиск линии с максимальным
коэффициентом просмотра
Проверка пересечения с
линиями выбранными
раньше
Да Обнуление
коэффициента просмотра выбранной
линии
Нет
7
125
Алгоритм подпрограммы определения положения камеры представлен
на рисунке 3.14.
Рисунок 3.14. Алгоритм подпрограммы определения положения камеры
Определение вектора
направления
камеры
Определение координат
опорных точек
Загрузка данных
о камере из БД
Определение координат
камеры
Да
Начало
Конец
Решение уравнений сфер с
началом в
опорных точках
1
2
3
4
5
7
8
9
Определение
расстояний от опорных точек
до камеры
Ошибка
данных
Запись результата
решения в БД
Нет
Выдача сообщения об
ошибке
10
126
Алгоритм подпрограммы поиска мобильного объекта на изображении
представлен на рисунке 3.15.
Рисунок 3.15. Алгоритм подпрограммы поиска мобильного объекта на
изображении
Поиск особых точек
мобильного
объекта
Начало
Конец
Кластеризация сегментов
изображения
Поиск границы мобильного
объекта
1
2
3
4
5
Определение средней яркости
сегментов
изображения
Загрузка
изображения
Ошибка данных
Да
Нет 7
6
Выдача сообщения об
ошибке
Запись
данных в БД
8
127
Алгоритм подпрограммы определения координат мобильного объекта
представлен на рисунке 3.16.
Рисунок 3.16. Алгоритм подпрограммы определения координат мобильного
объекта
Определение координат и направления
движения МО
Начало
Конец
Определение координат
особых точек в
пространстве
Определение фигур
составляющих
МО
1
2
3
4
5
Поиск координат проекций особых
точек на
плоскость Z=0
Загрузка
данных из БД
Ошибка данных
Да
Нет 7
6
Выдача сообщения об
ошибке
Запись
данных в БД
8
128
3.5. Выводы по главе
В данной главе выполнено, концептуально-логическое проектирование
базы данных, описана технология определения положения и направления
мобильного объекта, на основе, которой разработаны программные средства.
Программные средства проекта представлены в виде комплекса
программ, решающих задачу навигации мобильного объекта на основе
данных видеонаблюдения: определение углов обзора камеры
видеонаблюдения, определение пространственного положения камеры
видеонаблюдения, поиск мобильного объекта на изображении, определение
пространственных координат и направления мобильного объекта.
129
ГЛАВА 4. ИСПОЛЬЗОВАНИЕ СРЕДСТВ НАВИГАЦИИ МОБИЛЬНЫХ
ОБЪЕКТОВ НА ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ
4.1. Определение углов обзора камеры наблюдения
Для решения задачи навигации мобильного объекта необходимо знать
углы обзора камеры видеонаблюдения по горизонтали и вертикали. Так как в
технической документации предоставленной нами камеры Microsoft LifeCam
HD – 3000, необходимые углы обзора не указаны, при помощи программных
средств была произведена серия экспериментов по их определению.
Эксперимент проводился с использованием двух разрешений камеры
1280x720 и 640x480, использовались различные высоты от камеры до
наблюдаемого шаблона, а так же размеры самого шаблона.
Все результаты эксперимента представлены в таблицах 4.1 – 4.12.
Эксперимент №1:
Разрешение камеры 1280x720;
Высота от шаблона до камеры L = 30.5 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
Таблица 4.1. Результаты эксперимента №1
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 62,390091 36,129564
2 62,455353 36,073023
3 62,130403 35,960471
4 62,130403 36,016659
5 62,259976 36,016659
Итог 62,2732452 36,0392752
Эксперимент №2:
Разрешение камеры 640x480;
Высота от шаблона до камеры L = 30.5 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
130
Таблица 4.2. Результаты эксперимента №2
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 51,919406 40,333617
2 52,009858 40,018510
3 51,471825 40,018510
4 51,829268 40,122997
5 51,739443 40,228031
Итог 51,79396 40,144333
Эксперимент №3:
Разрешение камеры 1280x720;
Высота от шаблона до камеры L = 35.5 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
Таблица 4.3. Результаты эксперимента №3
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 62,842945 36,251891
2 63,071464 36,186098
3 62,842945 36,251891
4 62,767139 36,055226
5 62,842945 36,251891
Итог 62,8734876 36,1993994
Эксперимент №4:
Разрешение камеры 640x480;
Высота от шаблона до камеры L = 35.5 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
Таблица 4.4. Результаты эксперимента №4
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 52,453872 40,037229
2 52,348046 39,797485
3 52,772777 39,916997
4 52,665949 39,916997
5 52,453872 39,916997
Итог 52,5389032 39,917141
131
Эксперимент №5:
Разрешение камеры 1280x720;
Высота от шаблона до камеры L = 43 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
Таблица 4.5. Результаты эксперимента №5
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 63,364148 36,163445
2 63,456515 36,242577
3 63,364148 36,242577
4 63,180217 36,401885
5 63,364148 36,242577
Итог 63,3458352 36,2586122
Эксперимент №6:
Разрешение камеры 640x480;
Высота от шаблона до камеры L = 43 см;
Длина шаблона по вертикали V1= 26.3 см;
Длина шаблона по горизонтали V2= 17.5 см.
Таблица 4.6. Результаты эксперимента №6
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 52,829089 40,152382
2 53,086792 40,446539
3 52,701174 40,152382
4 52,829089 40,446539
5 53,086792 40,152382
Итог 52,9065872 40,2700448
Эксперимент №7:
Разрешение камеры 1280x720;
Высота от шаблона до камеры L = 35.5 см;
Длина шаблона по вертикали V1= 33.5 см;
Длина шаблона по горизонтали V2= 19.6 см.
132
Таблица 4.7. Результаты эксперимента №7
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 61,961260 36,193495
2 61,998120 36,311775
3 61,879463 36,193495
4 61,998120 36,311775
5 62,057619 36,371205
Итог 61,9789164 36,276349
Эксперимент №8:
Разрешение камеры 640x480;
Высота от шаблона до камеры L = 35.5 см;
Длина шаблона по вертикали V1= 33.5 см;
Длина шаблона по горизонтали V2= 19.6 см.
Таблица 4.8. Результаты эксперимента №8
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 51,648594 40,368404
2 51,814134 40,368404
3 51,897303 40,258707
4 51,814134 40,368404
5 51,731231 40,258707
Итог 51,7810792 40,3245252
Эксперимент №9:
Разрешение камеры 1280x720;
Высота от шаблона до камеры L = 43 см;
Длина шаблона по вертикали V1= 36.2 см;
Длина шаблона по горизонтали V2= 22.7 см.
Таблица 4.9. Результаты эксперимента №9
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 62,702687 36,459089
2 62,368094 36,647346
3 62,434726 36,853128
4 62,434726 36,965465
5 62,368094 36,459089
Итог 62,4616654 36,6768234
133
Эксперимент №10:
Разрешение камеры 640x480;
Высота от шаблона до камеры L = 43 см;
Длина шаблона по вертикали V1= 36.2 см;
Длина шаблона по горизонтали V2= 22.7 см.
Таблица 4.10. Результаты эксперимента №10
№ Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 52,270934 40,325962
2 51,991907 40,440851
3 51,991907 40,325962
4 51,807539 40,440851
5 51,991907 40,325962
Итог 52,0108388 40,3719176
Приведем окончательные результаты эксперимента:
Таблица 4.11. Результаты экспериментов для разрешения 1280x720
Эксперимент
№
Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
1 62,2732452 36,0392752
3 62,8734876 36,1993994
5 63,3458352 36,2586122
7 61,9789164 36,276349
9 62,4616654 36,6768234
Итог 62,58663 36,29009
Таблица 4.12. Результаты экспериментов для разрешения 640x480
Эксперимент
№
Угол обзора по горизонтали
(в градусах)
Угол обзора по вертикали
(в градусах)
2 51,79396 40,144333
4 52,5389032 39,917141
6 52,9065872 40,2700448
8 51,7810792 40,3245252
10 52,0108388 40,3719176
Итог 52,20627 40,20559
По результатам проведения экспериментов можно сказать, что камера
Microsoft LifeCam HD – 3000 при установке различного разрешения обладает
различными углами обзора. При разрешении камеры 1280x720 угол обзора
по горизонтали равен 62,58663 градусов, угол обзора по вертикали равен
134
36,29009 градусов. При разрешении камеры 640x480 угол обзора по
горизонтали равен 52,20627 градусов, угол обзора по вертикали равен
40,20559 градусов. Результаты экспериментов использовались для решения
следующих задач.
4.2. Определение координат точечного объекта
Для определения координат точечного объекта используется
программное средство на основе разработанного аналитического метода,
однако данный метод не дает необходимой точности определения координат,
поэтому для получения более точных значений координат точечного объекта в
данной работе используется нейронная сеть с методом обучения обратного
распространения ошибки (рис. 2.26). Для обучения нейронной сети были
сформированы обучающая и контролирующая выборки (приложение 1). В
качестве параметров обучения используются значение координат точечного
объекта на проекционной плоскости, значение координат точечного объекта
полученные аналитическим путем, истинные значения координат точечного
объекта.
Обучающая выборка представлена в таблице 4.13.
Контролирующая выборка представлена в таблице 4.14.
Таблица 4.13. Обучающая выборка
№ X1 X2 X3 X4 Y1 Y2
1 0 0 0,00052 1 0,00532 0,98231
2 0 0,13333 0,00045 0,86634 0,00461 0,86098
3 0 0,26667 0,00038 0,73279 0,0039 0,72829
4 0 0,4 0,00031 0,59933 0,00319 0,59634
5 0 0,53333 0,00024 0,46597 0,00248 0,46292
6 0 0,66667 0,00017 0,33271 0,00177 0,33024
7 0 0,8 0,0001 0,19955 0,00106 0,19578
8 0 0,93333 0 0,06649 0,00035 0,07586
9 0,04167 0 0,04263 0,99965 0,04471 0,98305
10 0,04167 0,13333 0,04255 0,86606 0,044 0,86098
11 0,04167 0,26667 0,04246 0,73257 0,04329 0,72829
12 0,04167 0,4 0,04238 0,59918 0,04258 0,59634
135
Таблица 4.13. Обучающая выборка. Продолжение
13 0,04167 0,53333 0,04229 0,46589 0,04187 0,46292
14 0,04167 0,66667 0,04221 0,33269 0,04116 0,33024
15 0,04167 0,8 0,04212 0,1996 0,04045 0,19578
16 0,04167 0,93333 0,04204 0,0666 0,03975 0,07499
17 0,08333 0 0,0847 0,99931 0,08492 0,98378
18 0,08333 0,13333 0,0846 0,86578 0,08417 0,86098
19 0,08333 0,26667 0,0845 0,73236 0,08342 0,72829
20 0,08333 0,4 0,0844 0,59903 0,08268 0,59634
21 0,08333 0,53333 0,0843 0,4658 0,08193 0,46292
22 0,08333 0,66667 0,0842 0,33267 0,08118 0,33024
23 0,08333 0,8 0,0841 0,19964 0,08044 0,19578
24 0,08333 0,93333 0,084 0,06671 0,07969 0,07411
25 0,125 0 0,12673 0,99897 0,12555 0,98452
26 0,125 0,13333 0,12662 0,8655 0,1248 0,86098
27 0,125 0,26667 0,1265 0,73214 0,12406 0,72829
28 0,125 0,4 0,12638 0,59888 0,12331 0,59634
29 0,125 0,53333 0,12627 0,46572 0,12257 0,46292
30 0,125 0,66667 0,12615 0,33265 0,12182 0,33024
31 0,125 0,8 0,12604 0,19969 0,12107 0,19578
32 0,125 0,93333 0,12592 0,06682 0,12033 0,07323
33 0,16667 0 0,16872 0,99862 0,16624 0,98526
34 0,16667 0,13333 0,16859 0,86523 0,16574 0,86098
35 0,16667 0,26667 0,16846 0,73193 0,1652 0,72829
36 0,16667 0,4 0,16833 0,59873 0,16462 0,59634
37 0,16667 0,53333 0,1682 0,46563 0,16398 0,46292
38 0,16667 0,66667 0,16806 0,33263 0,16328 0,33024
39 0,16667 0,8 0,16793 0,19973 0,16254 0,19578
40 0,16667 0,93333 0,1678 0,06693 0,16179 0,07236
41 0,20833 0 0,21067 0,99828 0,20707 0,98599
42 0,20833 0,13333 0,21052 0,86495 0,20707 0,86098
43 0,20833 0,26667 0,21038 0,73172 0,20707 0,72829
44 0,20833 0,4 0,21023 0,59858 0,20707 0,59634
45 0,20833 0,53333 0,21008 0,46555 0,20707 0,46292
46 0,20833 0,66667 0,20993 0,33261 0,20707 0,33024
47 0,20833 0,8 0,20979 0,19978 0,20707 0,19578
48 0,20833 0,93333 0,20964 0,06704 0,20707 0,07148
49 0,25 0 0,25258 0,99793 0,24994 0,98673
50 0,25 0,13333 0,25241 0,86467 0,2492 0,86098
51 0,25 0,26667 0,25225 0,7315 0,24845 0,72829
52 0,25 0,4 0,25209 0,59843 0,2477 0,59634
53 0,25 0,53333 0,25193 0,46547 0,24696 0,46292
54 0,25 0,66667 0,25176 0,3326 0,24621 0,33024
55 0,25 0,8 0,2516 0,19982 0,24547 0,19578
56 0,25 0,93333 0,25144 0,06715 0,24472 0,07061
57 0,29167 0 0,29444 0,99759 0,29141 0,98747
58 0,29167 0,13333 0,29427 0,86439 0,29066 0,86098
59 0,29167 0,26667 0,29409 0,73129 0,28992 0,72829
60 0,29167 0,4 0,29391 0,59829 0,28917 0,59634
136
Таблица 4.13. Обучающая выборка. Продолжение
61 0,29167 0,53333 0,29373 0,46538 0,28842 0,46292
62 0,29167 0,66667 0,29355 0,33258 0,28768 0,33024
63 0,29167 0,8 0,29338 0,19987 0,28693 0,19578
64 0,29167 0,93333 0,2932 0,06726 0,28618 0,06973
65 0,33333 0 0,33627 0,99725 0,32897 0,98821
66 0,33333 0,13333 0,33608 0,86411 0,32897 0,86098
67 0,33333 0,26667 0,33588 0,73108 0,32897 0,72829
68 0,33333 0,4 0,33569 0,59814 0,32897 0,59634
69 0,33333 0,53333 0,3355 0,4653 0,32897 0,46292
70 0,33333 0,66667 0,3353 0,33256 0,32897 0,33024
71 0,33333 0,8 0,33511 0,19991 0,32897 0,19578
72 0,33333 0,93333 0,33492 0,06737 0,32897 0,06886
73 0,375 0 0,37806 0,99691 0,37044 0,98894
74 0,375 0,13333 0,37785 0,86383 0,37044 0,86098
75 0,375 0,26667 0,37764 0,73086 0,37044 0,72829
76 0,375 0,4 0,37743 0,59799 0,37044 0,59634
77 0,375 0,53333 0,37722 0,46521 0,37044 0,46292
78 0,375 0,66667 0,37701 0,33254 0,37044 0,33024
79 0,375 0,8 0,3768 0,19996 0,37044 0,19578
80 0,375 0,93333 0,37659 0,06748 0,37044 0,06798
81 0,41667 0 0,4198 0,99656 0,4119 0,98968
82 0,41667 0,13333 0,41958 0,86356 0,4119 0,86098
83 0,41667 0,26667 0,41935 0,73065 0,4119 0,72829
84 0,41667 0,4 0,41913 0,59784 0,4119 0,59634
85 0,41667 0,53333 0,4189 0,46513 0,4119 0,46292
86 0,41667 0,66667 0,41868 0,33252 0,4119 0,33024
87 0,41667 0,8 0,41846 0,2 0,4119 0,19578
88 0,41667 0,93333 0,41823 0,06759 0,4119 0,06711
89 0,45833 0 0,46151 0,99622 0,45337 0,99042
90 0,45833 0,13333 0,46127 0,86328 0,45337 0,86098
91 0,45833 0,26667 0,46103 0,73044 0,45337 0,72829
92 0,45833 0,4 0,46079 0,59769 0,45337 0,59634
93 0,45833 0,53333 0,46055 0,46505 0,45337 0,46292
94 0,45833 0,66667 0,46031 0,3325 0,45337 0,33024
95 0,45833 0,8 0,46007 0,20005 0,45337 0,19578
96 0,45833 0,93333 0,45983 0,0677 0,45337 0,06623
97 0,5 0 0,50317 0,99588 0,49483 0,99115
98 0,5 0,13333 0,50291 0,863 0,49483 0,86098
99 0,5 0,26667 0,50266 0,73022 0,49483 0,72829
100 0,5 0,4 0,5024 0,59754 0,49483 0,59634
101 0,5 0,53333 0,50215 0,46496 0,49483 0,46292
102 0,5 0,66667 0,50189 0,33248 0,49483 0,33024
103 0,5 0,8 0,50164 0,20009 0,49483 0,19578
104 0,5 0,93333 0,50139 0,06781 0,49483 0,06536
105 0,54167 0 0,54479 0,99554 0,5363 0,99189
106 0,54167 0,13333 0,54452 0,86273 0,5363 0,86098
107 0,54167 0,26667 0,54425 0,73001 0,5363 0,72829
108 0,54167 0,4 0,54398 0,5974 0,5363 0,59634
137
Таблица 4.13. Обучающая выборка. Продолжение
109 0,54167 0,53333 0,54371 0,46488 0,5363 0,46292
110 0,54167 0,66667 0,54344 0,33246 0,5363 0,33024
111 0,54167 0,8 0,54317 0,20014 0,5363 0,19578
112 0,54167 0,93333 0,5429 0,06792 0,5363 0,06448
113 0,58333 0 0,58638 0,9952 0,57776 0,99263
114 0,58333 0,13333 0,58609 0,86245 0,57776 0,86098
115 0,58333 0,26667 0,5858 0,7298 0,57776 0,72829
116 0,58333 0,4 0,58552 0,59725 0,57776 0,59634
117 0,58333 0,53333 0,58523 0,4648 0,57776 0,46292
118 0,58333 0,66667 0,58495 0,33244 0,57776 0,33024
119 0,58333 0,8 0,58466 0,20018 0,57776 0,19578
120 0,58333 0,93333 0,58438 0,06802 0,57776 0,06361
121 0,625 0 0,62792 0,99486 0,61922 0,99337
122 0,625 0,13333 0,62762 0,86217 0,61922 0,86098
123 0,625 0,26667 0,62732 0,72959 0,61922 0,72829
124 0,625 0,4 0,62702 0,5971 0,61922 0,59634
125 0,625 0,53333 0,62672 0,46471 0,61922 0,46292
126 0,625 0,66667 0,62642 0,33242 0,61922 0,33024
127 0,625 0,8 0,62612 0,20023 0,61922 0,19578
128 0,625 0,93333 0,62582 0,06813 0,61922 0,06273
129 0,66667 0 0,66942 0,99452 0,66069 0,9941
130 0,66667 0,13333 0,6691 0,8619 0,66069 0,86098
131 0,66667 0,26667 0,66879 0,72938 0,66069 0,72829
132 0,66667 0,4 0,66847 0,59695 0,66069 0,59634
133 0,66667 0,53333 0,66816 0,46463 0,66069 0,46292
134 0,66667 0,66667 0,66784 0,3324 0,66069 0,33024
135 0,66667 0,8 0,66753 0,20027 0,66069 0,19578
136 0,66667 0,93333 0,66721 0,06824 0,66069 0,06186
137 0,70833 0 0,71088 0,99418 0,70215 0,99484
138 0,70833 0,13333 0,71055 0,86162 0,70215 0,86098
139 0,70833 0,26667 0,71022 0,72917 0,70215 0,72829
140 0,70833 0,4 0,70989 0,59681 0,70215 0,59634
141 0,70833 0,53333 0,70956 0,46455 0,70215 0,46292
142 0,70833 0,66667 0,70923 0,33238 0,70215 0,33024
143 0,70833 0,8 0,7089 0,20032 0,70215 0,19578
144 0,70833 0,93333 0,70857 0,06835 0,70215 0,06098
145 0,75 0 0,75231 0,99384 0,74362 0,99558
146 0,75 0,13333 0,75196 0,86135 0,74362 0,86098
147 0,75 0,26667 0,75161 0,72896 0,74362 0,72829
148 0,75 0,4 0,75127 0,59666 0,74362 0,59634
149 0,75 0,53333 0,75092 0,46446 0,74362 0,46292
150 0,75 0,66667 0,75057 0,33236 0,74362 0,33024
151 0,75 0,8 0,75023 0,20036 0,74362 0,19578
152 0,75 0,93333 0,74988 0,06846 0,74362 0,0601
153 0,79167 0 0,79369 0,9935 0,78549 0,99631
154 0,79167 0,13333 0,79333 0,86107 0,78549 0,86098
155 0,79167 0,26667 0,79296 0,72874 0,78549 0,72829
156 0,79167 0,4 0,7926 0,59651 0,78549 0,59634
138
Таблица 4.13. Обучающая выборка. Окончание
157 0,79167 0,53333 0,79224 0,46438 0,78549 0,46292
158 0,79167 0,66667 0,79188 0,33234 0,78549 0,33024
159 0,79167 0,8 0,79152 0,20041 0,78549 0,19578
160 0,79167 0,93333 0,79116 0,06857 0,78549 0,05923
161 0,83333 0 0,83503 0,99316 0,82737 0,99705
162 0,83333 0,13333 0,83465 0,8608 0,82737 0,86098
163 0,83333 0,26667 0,83428 0,72853 0,82737 0,72829
164 0,83333 0,4 0,8339 0,59637 0,82737 0,59634
165 0,83333 0,53333 0,83352 0,4643 0,82737 0,46292
166 0,83333 0,66667 0,83315 0,33233 0,82737 0,33024
167 0,83333 0,8 0,83277 0,20045 0,82737 0,19578
168 0,83333 0,93333 0,8324 0,06867 0,82737 0,05835
169 0,875 0 0,87633 0,99282 0,86967 0,99779
170 0,875 0,13333 0,87594 0,86052 0,86967 0,86098
171 0,875 0,26667 0,87555 0,72832 0,86967 0,72829
172 0,875 0,4 0,87516 0,59622 0,86967 0,59634
173 0,875 0,53333 0,87477 0,46421 0,86967 0,46292
174 0,875 0,66667 0,87438 0,33231 0,86967 0,33024
175 0,875 0,8 0,87398 0,2005 0,86967 0,19578
176 0,875 0,93333 0,87359 0,06878 0,86967 0,05748
177 0,91667 0 0,91759 0,99248 0,91196 0,99853
178 0,91667 0,13333 0,91719 0,86025 0,91196 0,86098
179 0,91667 0,26667 0,91678 0,72811 0,91196 0,72829
180 0,91667 0,4 0,91637 0,59607 0,91196 0,59634
181 0,91667 0,53333 0,91597 0,46413 0,91196 0,46292
182 0,91667 0,66667 0,91556 0,33229 0,91196 0,33024
183 0,91667 0,8 0,91516 0,20054 0,91196 0,19578
184 0,91667 0,93333 0,91475 0,06889 0,91196 0,0566
185 0,95833 0 0,95882 0,99215 0,9512 0,99926
186 0,95833 0,13333 0,9584 0,85998 0,95199 0,86098
187 0,95833 0,26667 0,95797 0,7279 0,95277 0,72829
188 0,95833 0,4 0,95755 0,59593 0,95356 0,59634
189 0,95833 0,53333 0,95713 0,46405 0,95435 0,46292
190 0,95833 0,66667 0,95671 0,33227 0,95514 0,33024
191 0,95833 0,8 0,95629 0,20058 0,95593 0,19578
192 0,95833 0,93333 0,95587 0,069 0,95671 0,05573
193 1 0 1 0,99181 0,99431 1
194 1 0,13333 0,99956 0,8597 0,99505 0,86098
195 1 0,26667 0,99913 0,72769 0,9958 0,72829
196 1 0,4 0,99869 0,59578 0,99655 0,59634
197 1 0,53333 0,99825 0,46397 0,99729 0,46292
198 1 0,66667 0,99782 0,33225 0,99804 0,33024
199 1 0,8 0,99738 0,20063 0,99882 0,19578
200 1 0,93333 0,99695 0,0691 0,99961 0,05485
139
Таблица 4.14. Контролирующая выборка
№ X1 X2 X3 X4 Y1 Y2
1 0 0,06667 0,00048 0,93316 0,00496 0,92671
2 0 0,2 0,00041 0,79955 0,00425 0,79463
3 0 0,33333 0,00035 0,66605 0,00355 0,66326
4 0 0,46667 0,00028 0,53264 0,00284 0,52926
5 0 0,6 0,00021 0,39933 0,00213 0,39658
6 0 0,73333 0,00014 0,26612 0,00142 0,26581
7 0 0,86667 0 0,13301 0,00071 0,14404
8 0 1 0 0 0 0
9 0,04167 0,06667 0,04259 0,93285 0,04435 0,92671
10 0,04167 0,2 0,0425 0,79931 0,04365 0,79463
11 0,04167 0,33333 0,04242 0,66586 0,04294 0,66326
12 0,04167 0,46667 0,04233 0,53252 0,04223 0,52926
13 0,04167 0,6 0,04225 0,39928 0,04152 0,39658
14 0,04167 0,73333 0,04216 0,26613 0,04081 0,26581
15 0,04167 0,86667 0,04208 0,13309 0,0401 0,1433
16 0,04167 1 0,042 0,00014 0,03939 0
17 0,08333 0,06667 0,08465 0,93253 0,08454 0,92671
18 0,08333 0,2 0,08455 0,79906 0,0838 0,79463
19 0,08333 0,33333 0,08445 0,66568 0,08305 0,66326
20 0,08333 0,46667 0,08435 0,5324 0,0823 0,52926
21 0,08333 0,6 0,08425 0,39923 0,08156 0,39658
22 0,08333 0,73333 0,08415 0,26615 0,08081 0,26581
23 0,08333 0,86667 0,08405 0,13317 0,08007 0,14256
24 0,08333 1 0,08395 0,00028 0,07932 0
25 0,125 0,06667 0,12667 0,93222 0,12518 0,92671
26 0,125 0,2 0,12656 0,79881 0,12443 0,79463
27 0,125 0,33333 0,12644 0,6655 0,12369 0,66326
28 0,125 0,46667 0,12633 0,53229 0,12294 0,52926
29 0,125 0,6 0,12621 0,39917 0,12219 0,39658
30 0,125 0,73333 0,12609 0,26616 0,12145 0,26581
31 0,125 0,86667 0,12598 0,13324 0,1207 0,14183
32 0,125 1 0,12586 0,00043 0,11995 0
33 0,16667 0,06667 0,16866 0,93191 0,166 0,92671
34 0,16667 0,2 0,16852 0,79856 0,16548 0,79463
35 0,16667 0,33333 0,16839 0,66532 0,16492 0,66326
36 0,16667 0,46667 0,16826 0,53217 0,16431 0,52926
37 0,16667 0,6 0,16813 0,39912 0,16364 0,39658
38 0,16667 0,73333 0,168 0,26617 0,16291 0,26581
39 0,16667 0,86667 0,16787 0,13332 0,16216 0,14109
40 0,16667 1 0,16774 0,00057 0,16142 0
41 0,20833 0,06667 0,2106 0,9316 0,20707 0,92671
42 0,20833 0,2 0,21045 0,79832 0,20707 0,79463
43 0,20833 0,33333 0,2103 0,66514 0,20707 0,66326
44 0,20833 0,46667 0,21015 0,53205 0,20707 0,52926
45 0,20833 0,6 0,21001 0,39907 0,20707 0,39658
46 0,20833 0,73333 0,20986 0,26618 0,20707 0,26581
47 0,20833 0,86667 0,20971 0,1334 0,20707 0,14035
140
Таблица 4.14. Контролирующая выборка. Продолжение
48 0,20833 1 0,20957 0,00071 0,20707 0
49 0,25 0,06667 0,2525 0,93129 0,24957 0,92671
50 0,25 0,2 0,25233 0,79807 0,24882 0,79463
51 0,25 0,33333 0,25217 0,66496 0,24808 0,66326
52 0,25 0,46667 0,25201 0,53194 0,24733 0,52926
53 0,25 0,6 0,25185 0,39902 0,24659 0,39658
54 0,25 0,73333 0,25168 0,2662 0,24584 0,26581
55 0,25 0,86667 0,25152 0,13348 0,24509 0,13961
56 0,25 1 0,25136 0,00085 0,24435 0
57 0,29167 0,06667 0,29436 0,93098 0,29103 0,92671
58 0,29167 0,2 0,29418 0,79783 0,29029 0,79463
59 0,29167 0,33333 0,294 0,66477 0,28954 0,66326
60 0,29167 0,46667 0,29382 0,53182 0,2888 0,52926
61 0,29167 0,6 0,29364 0,39897 0,28805 0,39658
62 0,29167 0,73333 0,29347 0,26621 0,2873 0,26581
63 0,29167 0,86667 0,29329 0,13355 0,28656 0,13888
64 0,29167 1 0,29311 0,00099 0,28581 0
65 0,33333 0,06667 0,33617 0,93067 0,32897 0,92671
66 0,33333 0,2 0,33598 0,79758 0,32897 0,79463
67 0,33333 0,33333 0,33579 0,66459 0,32897 0,66326
68 0,33333 0,46667 0,33559 0,5317 0,32897 0,52926
69 0,33333 0,6 0,3354 0,39891 0,32897 0,39658
70 0,33333 0,73333 0,33521 0,26622 0,32897 0,26581
71 0,33333 0,86667 0,33501 0,13363 0,32897 0,13814
72 0,33333 1 0,33482 0,00114 0,32897 0
73 0,375 0,06667 0,37795 0,93036 0,37044 0,92671
74 0,375 0,2 0,37774 0,79734 0,37044 0,79463
75 0,375 0,33333 0,37753 0,66441 0,37044 0,66326
76 0,375 0,46667 0,37732 0,53159 0,37044 0,52926
77 0,375 0,6 0,37712 0,39886 0,37044 0,39658
78 0,375 0,73333 0,37691 0,26624 0,37044 0,26581
79 0,375 0,86667 0,3767 0,13371 0,37044 0,1374
80 0,375 1 0,37649 0,00128 0,37044 0
81 0,41667 0,06667 0,41969 0,93005 0,4119 0,92671
82 0,41667 0,2 0,41946 0,79709 0,4119 0,79463
83 0,41667 0,33333 0,41924 0,66423 0,4119 0,66326
84 0,41667 0,46667 0,41902 0,53147 0,4119 0,52926
85 0,41667 0,6 0,41879 0,39881 0,4119 0,39658
86 0,41667 0,73333 0,41857 0,26625 0,4119 0,26581
87 0,41667 0,86667 0,41834 0,13378 0,4119 0,13667
88 0,41667 1 0,41812 0,00142 0,4119 0
89 0,45833 0,06667 0,46139 0,92974 0,45337 0,92671
90 0,45833 0,2 0,46115 0,79685 0,45337 0,79463
91 0,45833 0,33333 0,46091 0,66405 0,45337 0,66326
92 0,45833 0,46667 0,46067 0,53136 0,45337 0,52926
93 0,45833 0,6 0,46043 0,39876 0,45337 0,39658
94 0,45833 0,73333 0,46019 0,26626 0,45337 0,26581
95 0,45833 0,86667 0,45995 0,13386 0,45337 0,13593
141
Таблица 4.14. Контролирующая выборка. Продолжение
96 0,45833 1 0,45971 0,00156 0,45337 0
97 0,5 0,06667 0,50304 0,92943 0,49483 0,92671
98 0,5 0,2 0,50279 0,7966 0,49483 0,79463
99 0,5 0,33333 0,50253 0,66387 0,49483 0,66326
100 0,5 0,46667 0,50228 0,53124 0,49483 0,52926
101 0,5 0,6 0,50202 0,39871 0,49483 0,39658
102 0,5 0,73333 0,50177 0,26627 0,49483 0,26581
103 0,5 0,86667 0,50151 0,13394 0,49483 0,13519
104 0,5 1 0,50126 0,0017 0,49483 0
105 0,54167 0,06667 0,54466 0,92912 0,5363 0,92671
106 0,54167 0,2 0,54439 0,79636 0,5363 0,79463
107 0,54167 0,33333 0,54412 0,66369 0,5363 0,66326
108 0,54167 0,46667 0,54385 0,53113 0,5363 0,52926
109 0,54167 0,6 0,54358 0,39866 0,5363 0,39658
110 0,54167 0,73333 0,54331 0,26629 0,5363 0,26581
111 0,54167 0,86667 0,54304 0,13401 0,5363 0,13445
112 0,54167 1 0,54277 0,00184 0,5363 0
113 0,58333 0,06667 0,58623 0,92881 0,57776 0,92671
114 0,58333 0,2 0,58595 0,79611 0,57776 0,79463
115 0,58333 0,33333 0,58566 0,66351 0,57776 0,66326
116 0,58333 0,46667 0,58538 0,53101 0,57776 0,52926
117 0,58333 0,6 0,58509 0,39861 0,57776 0,39658
118 0,58333 0,73333 0,58481 0,2663 0,57776 0,26581
119 0,58333 0,86667 0,58452 0,13409 0,57776 0,13369
120 0,58333 1 0,58424 0,00198 0,57776 0
121 0,625 0,06667 0,62777 0,9285 0,61922 0,92671
122 0,625 0,2 0,62747 0,79587 0,61922 0,79463
123 0,625 0,33333 0,62717 0,66333 0,61922 0,66326
124 0,625 0,46667 0,62687 0,5309 0,61922 0,52926
125 0,625 0,6 0,62657 0,39855 0,61922 0,39658
126 0,625 0,73333 0,62627 0,26631 0,61922 0,26581
127 0,625 0,86667 0,62597 0,13417 0,61922 0,13291
128 0,625 1 0,62567 0,00212 0,61922 0
129 0,66667 0,06667 0,66926 0,9282 0,66069 0,92671
130 0,66667 0,2 0,66895 0,79563 0,66069 0,79463
131 0,66667 0,33333 0,66863 0,66315 0,66069 0,66326
132 0,66667 0,46667 0,66831 0,53078 0,66069 0,52926
133 0,66667 0,6 0,668 0,3985 0,66069 0,39658
134 0,66667 0,73333 0,66768 0,26633 0,66069 0,26581
135 0,66667 0,86667 0,66737 0,13424 0,66069 0,13214
136 0,66667 1 0,66705 0,00226 0,66069 0
137 0,70833 0,06667 0,71072 0,92789 0,70215 0,92671
138 0,70833 0,2 0,71039 0,79538 0,70215 0,79463
139 0,70833 0,33333 0,71006 0,66297 0,70215 0,66326
140 0,70833 0,46667 0,70972 0,53066 0,70215 0,52926
141 0,70833 0,6 0,70939 0,39845 0,70215 0,39658
142 0,70833 0,73333 0,70906 0,26634 0,70215 0,26581
143 0,70833 0,86667 0,70873 0,13432 0,70215 0,13136
142
Таблица 4.14. Контролирующая выборка. Продолжение
144 0,70833 1 0,7084 0,0024 0,70215 0
145 0,75 0,06667 0,75213 0,92758 0,74362 0,92671
146 0,75 0,2 0,75179 0,79514 0,74362 0,79463
147 0,75 0,33333 0,75144 0,6628 0,74362 0,66326
148 0,75 0,46667 0,75109 0,53055 0,74362 0,52926
149 0,75 0,6 0,75075 0,3984 0,74362 0,39658
150 0,75 0,73333 0,7504 0,26635 0,74362 0,26581
151 0,75 0,86667 0,75006 0,1344 0,74362 0,13058
152 0,75 1 0,74971 0,00254 0,74362 0
153 0,79167 0,06667 0,79351 0,92727 0,78549 0,92671
154 0,79167 0,2 0,79315 0,7949 0,78549 0,79463
155 0,79167 0,33333 0,79278 0,66262 0,78549 0,66326
156 0,79167 0,46667 0,79242 0,53043 0,78549 0,52926
157 0,79167 0,6 0,79206 0,39835 0,78549 0,39658
158 0,79167 0,73333 0,7917 0,26636 0,78549 0,26581
159 0,79167 0,86667 0,79134 0,13447 0,78549 0,1298
160 0,79167 1 0,79098 0,00268 0,78549 0
161 0,83333 0,06667 0,83484 0,92697 0,82737 0,92671
162 0,83333 0,2 0,83446 0,79465 0,82737 0,79463
163 0,83333 0,33333 0,83409 0,66244 0,82737 0,66326
164 0,83333 0,46667 0,83371 0,53032 0,82737 0,52926
165 0,83333 0,6 0,83334 0,3983 0,82737 0,39658
166 0,83333 0,73333 0,83296 0,26638 0,82737 0,26581
167 0,83333 0,86667 0,83258 0,13455 0,82737 0,12902
168 0,83333 1 0,83221 0,00282 0,82737 0
169 0,875 0,06667 0,87614 0,92666 0,86967 0,92671
170 0,875 0,2 0,87574 0,79441 0,86967 0,79463
171 0,875 0,33333 0,87535 0,66226 0,86967 0,66326
172 0,875 0,46667 0,87496 0,53021 0,86967 0,52926
173 0,875 0,6 0,87457 0,39825 0,86967 0,39658
174 0,875 0,73333 0,87418 0,26639 0,86967 0,26581
175 0,875 0,86667 0,87379 0,13463 0,86967 0,12825
176 0,875 1 0,8734 0,00296 0,86967 0
177 0,91667 0,06667 0,91739 0,92635 0,91196 0,92671
178 0,91667 0,2 0,91698 0,79417 0,91196 0,79463
179 0,91667 0,33333 0,91658 0,66208 0,91196 0,66326
180 0,91667 0,46667 0,91617 0,53009 0,91196 0,52926
181 0,91667 0,6 0,91577 0,3982 0,91196 0,39658
182 0,91667 0,73333 0,91536 0,2664 0,91196 0,26581
183 0,91667 0,86667 0,91495 0,1347 0,91196 0,12747
184 0,91667 1 0,91455 0,0031 0,91196 0
185 0,95833 0,06667 0,95861 0,92605 0,95159 0,92671
186 0,95833 0,2 0,95818 0,79393 0,95238 0,79463
187 0,95833 0,33333 0,95776 0,6619 0,95317 0,66326
188 0,95833 0,46667 0,95734 0,52998 0,95396 0,52926
189 0,95833 0,6 0,95692 0,39815 0,95474 0,39658
190 0,95833 0,73333 0,9565 0,26641 0,95553 0,26581
191 0,95833 0,86667 0,95608 0,13478 0,95632 0,12669
143
Таблица 4.14. Контролирующая выборка. Окончание
192 0,95833 1 0,95566 0,00324 0,95711 0
193 1 0,06667 0,99978 0,92574 0,99468 0,92671
194 1 0,2 0,99934 0,79369 0,99543 0,79463
195 1 0,33333 0,99891 0,66172 0,99617 0,66326
196 1 0,46667 0,99847 0,52986 0,99692 0,52926
197 1 0,6 0,99804 0,3981 0,99767 0,39658
198 1 0,73333 0,9976 0,26643 0,99842 0,26581
199 1 0,86667 0,99716 0,13485 0,99921 0,12591
200 1 1 0,99673 0,00338 1 0
Результаты тестирования аналитического метода и нейронной сети
показаны в таблице 4.15.
Таблица 4.15. Результаты тестирования методов
№
Ошибка
нейронной сети
по X в см
Ошибка
нейронной сети
по Y в см
Ошибка
аналитического
метода по X в см
Ошибка
аналитического
метода по Y в см
1 0,57169 0,24609 0,49615 0,47212
2 0,53106 0,17088 0,49715 0,50705
3 0,49043 0,07414 0,49925 0,06811
4 0,44979 0,07453 0,50245 0,32026
5 0,40914 0,0317 0,50655 0,00842
6 0,3685 0,07599 0,51115 0,456
7 0,32785 0,50117 0,51515 0,43263
8 0,2872 0,12807 0,51635 0,59547
9 0,41537 0,23488 0,30765 0,47512
10 0,37572 0,16202 0,30845 0,50305
11 0,33608 0,06761 0,31055 0,06511
12 0,29642 0,07034 0,31375 0,32126
13 0,25677 0,02984 0,31805 0,01042
14 0,21711 0,07553 0,32285 0,446
15 0,17744 0,47207 0,32695 0,42632
16 0,13778 0,12296 0,32805 0,58847
17 0,31229 0,22369 0,125984 0,47812
18 0,27127 0,15316 0,126921 0,50005
19 0,23023 0,06109 0,129158 0,06411
20 0,1892 0,06615 0,132795 0,32226
21 0,14815 0,02798 0,137532 0,01242
22 0,10712 0,07506 0,142768 0,436
23 0,06607 0,44297 0,147305 0,421
24 0,02501 0,11786 0,148342 0,58047
25 0,24009 0,21251 0,043911 0,48112
26 0,20005 0,14432 0,043174 0,49705
27 0,16 0,05458 0,040937 0,06211
28 0,11995 0,06196 0,0372 0,32226
144
Таблица 4.15. Результаты тестирования методов. Продолжение
29 0,07989 0,02612 0,032163 0,01342
30 0,03983 0,0746 0,026626 0,427
31 0,00025 0,41387 0,021889 0,41468
32 0,04031 0,11277 0,020953 0,57347
33 0,18222 0,20134 0,19738 0,48412
34 0,15762 0,13548 0,198289 0,49405
35 0,13025 0,04807 0,197122 0,06011
36 0,09976 0,05778 0,194043 0,32226
37 0,0657 0,02426 0,189208 0,01542
38 0,02775 0,07414 0,183284 0,418
39 0,01135 0,38478 0,178247 0,40937
40 0,05043 0,10768 0,177611 0,56647
41 0,1429 0,19018 0,331047 0,48612
42 0,15219 0,12665 0,335347 0,49105
43 0,16147 0,04157 0,337747 0,05911
44 0,17075 0,05361 0,338247 0,32126
45 0,18002 0,0224 0,337147 0,01642
46 0,18928 0,07368 0,335447 0,408
47 0,19854 0,35569 0,334847 0,40305
48 0,20779 0,10259 0,339147 0,55947
49 0,19686 0,17903 0,448084 0,48912
50 0,15976 0,11783 0,447747 0,48805
51 0,12266 0,03507 0,445311 0,05811
52 0,08554 0,04943 0,440674 0,32026
53 0,04842 0,02055 0,434437 0,01642
54 0,01129 0,07322 0,4274 0,4
55 0,02585 0,32661 0,421563 0,39674
56 0,063 0,09751 0,421326 0,55247
57 0,1876 0,16789 0,528342 0,49212
58 0,15147 0,10902 0,528005 0,48605
59 0,11534 0,02858 0,525268 0,05711
60 0,07921 0,04526 0,520232 0,31926
61 0,04306 0,01869 0,513395 0,01742
62 0,00691 0,07276 0,505558 0,391
63 0,02926 0,29752 0,499321 0,39142
64 0,06543 0,09244 0,499284 0,54547
65 0,04277 0,15677 0,551032 0,49412
66 0,03055 0,10022 0,555332 0,48305
67 0,01834 0,0221 0,557132 0,05711
68 0,00614 0,0411 0,556332 0,31826
69 0,00606 0,01684 0,553432 0,01742
70 0,01824 0,0723 0,549532 0,383
71 0,03042 0,26844 0,547432 0,38511
72 0,04259 0,08737 0,552332 0,53847
73 0,04691 0,14565 0,556489 0,49712
74 0,03372 0,09142 0,560789 0,48105
75 0,02053 0,01563 0,562089 0,05611
145
Таблица 4.15. Результаты тестирования методов. Продолжение
76 0,00736 0,03694 0,560689 0,31626
77 0,00581 0,01499 0,556889 0,01642
78 0,01896 0,07184 0,552189 0,375
79 0,03211 0,23936 0,549389 0,37879
80 0,04524 0,0823 0,554389 0,53147
81 0,04848 0,13455 0,519447 0,49912
82 0,03432 0,08264 0,523447 0,47905
83 0,02016 0,00916 0,524247 0,05711
84 0,00602 0,03278 0,522147 0,31426
85 0,00812 0,01315 0,517547 0,01542
86 0,02224 0,07138 0,511847 0,367
87 0,03636 0,21028 0,508247 0,37247
88 0,05046 0,07724 0,513247 0,52447
89 0,04749 0,12345 0,439205 0,50112
90 0,03236 0,07386 0,442805 0,47705
91 0,01723 0,00269 0,443105 0,05711
92 0,00212 0,02863 0,440305 0,31126
93 0,01298 0,0113 0,434705 0,01442
94 0,02807 0,07092 0,428105 0,359
95 0,04315 0,18121 0,423705 0,36516
96 0,05822 0,07219 0,428705 0,51747
97 0,04395 0,11237 0,319163 0,50412
98 0,02785 0,06509 0,322263 0,47505
99 0,01176 0,00376 0,321963 0,05811
100 0,00432 0,02448 0,318363 0,30826
101 0,02039 0,00946 0,312063 0,01242
102 0,03644 0,07046 0,304563 0,352
103 0,05248 0,15213 0,299663 0,35884
104 0,06852 0,06714 0,304363 0,51047
105 0,03786 0,10129 0,167521 0,50612
106 0,0208 0,05633 0,170121 0,47405
107 0,00374 0,01021 0,169221 0,05911
108 0,0133 0,02034 0,165121 0,30526
109 0,03033 0,00762 0,158121 0,01042
110 0,04735 0,07001 0,150121 0,345
111 0,06436 0,12307 0,144621 0,35253
112 0,08135 0,06209 0,149021 0,50447
113 0,02923 0,09023 0,001921 0,50812
114 0,0112 0,04758 2,1E-05 0,47205
115 0,00682 0,01666 0,001321 0,06111
116 0,02483 0,0162 0,005921 0,30126
117 0,04282 0,00578 0,013121 0,00842
118 0,0608 0,06955 0,021421 0,338
119 0,07876 0,09312 0,027121 0,34433
120 0,09672 0,05705 0,023121 0,49747
121 0,01805 0,07918 0,171963 0,51012
122 0,00094 0,03884 0,170463 0,47105
146
Таблица 4.15. Результаты тестирования методов. Продолжение
123 0,01992 0,0231 0,172263 0,06211
124 0,03889 0,01206 0,176863 0,29626
125 0,05784 0,00394 0,184063 0,00542
126 0,07678 0,06909 0,192163 0,331
127 0,0957 0,0626 0,197763 0,33656
128 0,11461 0,05201 0,194363 0,49147
129 0,00434 0,06814 0,323105 0,51212
130 0,01562 0,0301 0,322205 0,47005
131 0,03556 0,02953 0,324105 0,06411
132 0,05548 0,00793 0,328605 0,29226
133 0,07539 0,0021 0,335305 0,00242
134 0,09529 0,06864 0,342705 0,325
135 0,11517 0,03207 0,348105 0,32778
136 0,13503 0,04698 0,345105 0,48447
137 0,01191 0,05711 0,438247 0,51312
138 0,03282 0,02138 0,437747 0,46905
139 0,05372 0,03595 0,439647 0,06711
140 0,0746 0,0038 0,443647 0,28726
141 0,09547 0,00027 0,449547 0,00058
142 0,11632 0,06818 0,456147 0,319
143 0,13715 0,00155 0,460847 0,32
144 0,15797 0,04196 0,458447 0,47847
145 0,03069 0,04609 0,505089 0,51512
146 0,05256 0,01266 0,504789 0,46905
147 0,07441 0,04237 0,506489 0,06911
148 0,09625 0,00033 0,509989 0,28226
149 0,11807 0,00157 0,514989 0,00458
150 0,13987 0,06773 0,520489 0,313
151 0,16166 0,02897 0,524489 0,31122
152 0,18343 0,03693 0,522489 0,47147
153 0,07831 0,03508 0,5149 0,51712
154 0,10113 0,00395 0,5148 0,46805
155 0,12394 0,04879 0,5161 0,07211
156 0,14673 0,00445 0,519 0,27626
157 0,1695 0,0034 0,523 0,00858
158 0,19225 0,06727 0,5275 0,307
159 0,21499 0,05949 0,5306 0,30244
160 0,23772 0,03192 0,529 0,46547
161 0,12845 0,02408 0,470311 0,51912
162 0,15222 0,00475 0,470211 0,46805
163 0,17598 0,05519 0,471311 0,07511
164 0,19972 0,00856 0,473511 0,27026
165 0,22345 0,00523 0,476611 0,01358
166 0,24715 0,06682 0,480011 0,302
167 0,27084 0,08999 0,482411 0,29467
168 0,29451 0,02691 0,481211 0,45947
169 0,20744 0,0131 0,373489 0,52012
147
Таблица 4.15. Результаты тестирования методов. Окончание
170 0,23216 0,01345 0,373489 0,46705
171 0,25687 0,06159 0,374289 0,07811
172 0,28156 0,01268 0,375889 0,26426
173 0,30623 0,00706 0,378189 0,01758
174 0,33089 0,06636 0,380789 0,296
175 0,35552 0,1205 0,382489 0,28589
176 0,38014 0,0219 0,381489 0,45347
177 0,28893 0,00212 0,234468 0,52212
178 0,31461 0,02213 0,234368 0,46705
179 0,34027 0,06799 0,234968 0,08111
180 0,3659 0,01679 0,236068 0,25826
181 0,39152 0,00888 0,237768 0,02158
182 0,41712 0,06591 0,239568 0,29
183 0,4427 0,15101 0,240768 0,27711
184 0,46826 0,0169 0,240068 0,44647
185 0,20408 0,00885 0,077933 0,52412
186 0,2807 0,03081 0,072933 0,46705
187 0,35731 0,07438 0,068233 0,08511
188 0,43389 0,02089 0,064033 0,25226
189 0,51045 0,01071 0,060233 0,02658
190 0,587 0,06546 0,056533 0,284
191 0,66352 0,18152 0,052333 0,26933
192 0,74002 0,0119 0,046733 0,44047
193 0,34104 0,0198 0,126932 0,52612
194 0,41597 0,03947 0,131768 0,46605
195 0,49088 0,08076 0,136205 0,08811
196 0,56578 0,02499 0,140442 0,24626
197 0,64066 0,01253 0,144379 0,03158
198 0,71624 0,06501 0,148289 0,279
199 0,79371 0,21201 0,152789 0,26156
200 0,87115 0,00691 0,158189 0,43447
Конечное сравнение результатов показано в таблице 4.16.
Таблица 4.16. Результаты
Среднее значение ошибки
аналитического метода в %
Среднее значение ошибки
нейронной сети в %
По координате X 2,215787 1,087606
По координате Y 2,152801 0,523732
Результаты работы нейронной сети показали, что ошибка нейронной
сети при вычислении значения координаты проекции точки на предметную
148
плоскость по оси X составляет 1%, а по оси Y 0.5%. В то время как ошибка
аналитического метода при вычислении значения координаты проекции
точки на предметную плоскость по оси X составляет 2.2%, а по оси Y 2.1%.
Что подтверждает правильность работы и компенсацию ошибки
аналитического метода нейронной сетью.
4.3. Выводы по главе
В данной главе были представлены результаты экспериментов по
определению углов обзора камеры видеонаблюдения и определению
координат проекции точек на предметную плоскость при помощи нейронной
сети. Результаты показали работоспособность программных средств, как в
первом, так и во втором случае, а так же правильность выбранного подхода, а
именно использование нейронной сети для компенсации ошибок
аналитического метода при определении координат проекции точек на
предметную плоскость.
149
ЗАКЛЮЧЕНИЕ
В данной работе была рассмотрена и разрешена проблема навигации
мобильного объекта на основе данных видеонаблюдения.
В процессе написания работы произведен анализ предметной области и
определены цели и задачи, разработаны математические методы решения
задач, разработан технологический процесс обработки данных, алгоритмы
решения задач, осуществлено концептуальное и логическое проектирование
реляционной базы данных, проведены эксперименты и показаны их
результаты.
Результатом работы является проект, содержащий описание общей
схемы системы, основных структур данных, основных алгоритмов, и
реализацию полученной системы в виде программы.
Практическая значимость: разработаны алгоритмы, которые позволяют
осуществлять навигацию мобильного объекта на основе данных
видеонаблюдения.
150
CONCLUSION
In this paper was examined and resolved the problem of navigation of
mobile object on the basis of surveillance.
In the process of writing the work performed domain analysis and identified
goals and objectives developed mathematical methods for solving problems, the
technological process of data processing algorithms for solving problems, carrying
out conceptual and logical design of a relational database, conducted experiments
and their results are shown.
The result of a project that contains a description of the general scheme of
the system, the basic data structures, basic algorithms and implementation of the
resulting system in the form of a program.
Practical value: the algorithms that allow you to navigate the mobile object
on the basis of surveillance.
151
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Мальцев А. Д., Прасько Г. А., Якушенко С. А. Варианты интеграции
систем подвижной связи и навигации в нестационарных условиях //
Научный электронный архив.
2. Stephen, J and Lachapelle, G., 2000: Development of a GNSS-based multi-
sensor vehicle navigation system. Proceedings of IONNTM Conference,
Anaheim, CA, USA January 2000, 268–278.
3. Walcho, K.J., Nechyba, M.C., Schwartz, E., Arroyo, A., (2003), “Embedded
Low Cost Inertial Navigation System”, Florida Conference on Recents
Advances in Robotics, FAU, Dania Beach-FL-USA.
4. R. T.Moreo, B. Ú. Miñarro A test of a GNSS/INS integrated navigation system
forremote services in terrestrial vehicles. Journal del Instituto de Navegación
de España: publicación técnica cuatrimestral de navegación marítima, aérea
y terrestre. vol 23, pp. 4–11
5. Сурков В. О. Навигационные системы подвижных наземных объектов
и их характеристики/ В. О. Сурков// Магистратура ТГТУ. — 2012. —
№ 27. — С. 105–109.
6. Komjathy, A., Langley, R.B., Bilitza, D. Ingesting GPS-derived TEC data into
International Reference Ionosphere for single frequency radar altimeter
ionospheric delay corrections. Adv. Space Res. 22, 793–801, 1998.
7. Jakowski N.,R. Leitinger and L. Ciraolo (2004): Behaviour of large scale
structures of the electron content as a key parameter for range errors in GNSS
applications, Ann. Geophysics, 47 (suppl. to no. 2/3), 1031–1047
8. Комраков Д. В. Технологии позиционирования наземных подвижных
объектов в сетях GSM // Технические науки в России и за рубежом (II):
материалы междунар. заоч. науч. конф. (г. Москва, ноябрь 2012 г.). — М.:
Буки-Веди,2012. — С. 38–40.
9. Иванов, А. В. Комплексные оптимальные алгоритмы обработки
информации в навигационных системах подвижных наземных объектов
с контролем целостности навигационного обеспечения / А. В. Иванов. —
2011 // Радиотехника /. — 2010. — N 12. — С. 15–25.
10. Kuusniemi, H., G. Lachapelle (2004) GNSS Signal Reliability Testing in
Urban and Indoor Environments. Proceedings of NTM 2004 Conference
(Session A2), San Diego, CA, January 26–28, 2004, The Institute of
Navigation
152
11. Shanmugam S. K., A. Lopez, D. Lu and others. Wireless Location in IS–95
CDMA Cellular Radio Systems. Proceedings of Wireless 2005, Calgary,
Canada
12. С. А. Синютин. Гибридная навигационная система для автомобиля /
С. А. Синютин // Ползуновский вестник. — 2011. — № 3/1. — С. 179–183:
ил.
13. S. Shanmugam, J. Jones, A. MacAulay and A. J. Van Dierendonck. Evolution
to Modernized GNSS Ionospheric Scintillation and TEC Monitoring.
IEEE/ION PLANS 2012April 24, 2012
14. Ю. А. Громаков, А. В. Северин, В. А. Шевцов. Технологии определения
местоположения в GSM и UMTS: Учеб. пособие. — М.: Эко-Трендз,
2005. — 144 с.: ил.
15. М. А. Сбитенькова. Гибридная инерциальная навигационная система//
ТРУДЫ МАИ — 2011- № 45 — С. 47–48.
16. П. Ф. Гаврилов, В. Н. Кривлев. Видеокамеры: принцип работы,
схемотехника, регулировки// Радиотон, 1999. – 272с.:ил.
17. http://courses.graphicon.ru/files/courses/vision/2010/cv_2010_10.pdf//
http://courses.graphicon.ru – курс лекций по компьютерному зрению
лаборатории компьютерного зрения при ВМК МГУ.
18. Александр Кравцов, Владимир Вежневец. Общая формулировка задачи
внешней калибровки камеры. Компьютерная графика и мультимедиа.
Выпуск №1(2)/2003. http://cgm.computergraphics.ru/content/view/34.
19. Martin A. Fischler, Robert C. Bolles: "Random Sample Consensus: A
Paradigm for Model Fitting with Applications to Image Analysis and
Automated Cartography". CACM 24(6): 381-395 (1981).
20. Афиногенов Е.И. Отслеживание положения камеры системы
компьютерного зрения в трёхмерном пространстве в режиме реального
ВРЕМЕНИ.-М.: МГТУ им. Н.Э.Баумана. Электронный журнал:
Молодежный научно – технический вестник, 9.09.12.
21. А.В. Козырева. ОПРЕДЕЛЕНИЕ КООРДИНАТ МОБИЛЬНОГО
УСТРОЙСТВА В ПРОСТРАНСТВЕ НА ОСНОВЕ ИЗОБРАЖЕНИЙ,
ПОЛУЧАЕМЫХ ОТ ЕГО ВИДЕОКАМЕРЫ.-М.: Институт систем
информатики им. А. П. Ершова, СО РАН.
22. Мартынова Л.А., Корякин А.В., Ланцов К.В., Ланцов В.В.
ОПРЕДЕЛЕНИЕ КООРДИНАТ И ПАРАМЕТРОВ ДВИЖЕНИЯ
153
ОБЪЕКТА НА ОСНОВЕ ОБРАБОТКИ ИЗОБРАЖЕНИЙ \\ Федеральное
государственное унитарное предприятие «Государственный научно-
исследовательский институт прикладных проблем».
23. А.В. Лопота, С.А. Половко, Д.Н. Степанова, А.А. Торубарова. ТОЧНОЕ
ОПРЕДЕЛЕНИЕ КООРДИНАТ ОБЪЕКТОВ ПО ИХ ТЕЛЕВИЗИОННЫМ
ИЗОБРАЖЕНИЯМ МЕТОДОМ «ВСТРЕЧНЫХ ИЗМЕРЕНИЙ» \\
Федеральное государственное автономное научное учреждение
«Центральный научно-исследовательский и опытно-конструкторский
институт робототехники и технической кибернетики»
24. Техническое зрение в системах управления мобильными объектами -
2010: Труды научно-технической конференции-семинара. Вып. 4 / Под
ред. Р. Р. Назирова. - М. : КДУ, 2011. - 328 с. : табл., ил., цв. ил.
25. А.К. Платонов. Определение параметров проективного отображения в
зрительном канале робота \\ ИНСТИТУТ ПРИКЛАДНОЙ
МАТЕМАТИКИ имени М.В. Келдыша, Москва 2007г.
26. Roth, P.M. Survey of Appearance-Based Methods for Object Recognition /
P.M. Roth, M. Winter // Technical Report ICG-TR-01/08, Institute for
Computer Graphics and Vision, Graz University of Technology, Austria,
January, 2008. – 68 p.
27. Murphy, K.P. Models for Generic Visual Object Detection / K.P. Murphy //
Technical report, Department of Computer Science, University of British
Columbia,Vancouver, Canada, May, 2005. – 8 p.
28. Greenspan, M. Efficient Tracking with the Bounded Hough Transform /M.
Greenspan, L. Shang, P. Jasiobedzki // Proceedings of Computer Vision and
Pattern Recognition. – 2004. – Vol. 1. – P. 520–527.
29. Kapoor, A. Located Hidden Random Fields: Learning Discriminative Parts for
Object Detection / A. Kapoor, J. Winn // Proceedings of the European
Conference onComputer Vision. – 2006. – Vol. 3. – P. 302–315.
30. Ferrari, V. From Images to Shape Models for Object Detection / V. Ferrari, F.
Jurie, C. Schmid // Intl. J. Computer Vision. – 2010. – Vol. 87(3). – P. 284–
303.
31. Fergus, R. Object Class Recognition by Unsupervised Scale-Invariant Learning
/R. Fergus, P. Perona, A. Zisserman // Proceedings of Computer Vision and
Pattern Recognition. – 2003. – Vol. 2, Sec. II. – P. 264–271.
32. Viola, P. Robust Real-Time Object Detection / P. Viola, M. Jones // Intl.
J.Computer Vision. – 2004. – Vol. 57(2). – P. 137–154.
154
33. LeCun, Y. Learning Methods for Generic Object Recognition with Invariance
toPose and Lighting / Y. LeCun, F.-J. Huang, L. Bottou // Proceedings of
Computer Vision and Pattern Recognition. – 2004. – Vol. 2. – P. 97–104.
34. Papageorgiou, C.A Trainable System for Object Detection / C. Papageorgiou,
T. Poggio // Intl. J. Computer Vision. – 2000. – Vol. 38(1). – P. 15–33.
35. Шапиро и др. 2006 – Шапиро, Л. Компьютерное зрение / Л. Шапиро,
Дж. Стокман. – М. : БИНОМ, 2006.
36. Форсайт Д., Понс Ж. "Компьютерное зрение. Современный подход". Пер.
с англ. М.: Издательский дом "Вильямс" , 2004. - 928 с.: ил.
37. Крашенинников В.Р. Основы теории обработки изображений: Учебное
пособие. – Ульяновск: УлГТУ, 2003. – 150 с.
38. А.Ю. Кручинин Модель адаптивной системы стереозрения для
подвижного робота. Оренбург: ИПК ГОУ ОГУ, 2009
39. Ильин В. А., Поздняк Э. Г. Аналитическая геометрия: Учеб. для вузов. -
7-е изд., стер. - М.: ФИЗМАТЛИТ, 2004. - 224 с.
40. Куликов Л.Я. Алгебра и теория чисел: Учеб. пособие для педагогических
институтов. — М.: Высш. школа, 1979. — 559 с.
41. Д. Рутковская, М. Пилиньский, Л. Рутковский. Нейронные сети,
генетические алгоритмы и нечеткие системы. Москва 2006. – 383 стр.
42. Суздальцев В.А., Технология разработки интеллектуальных
информационных систем. Учебное пособие по курсовому
проектированию
43. Ризаев И.С., Яхина З.Т. Базы данных/Лабораторный практикум. – Казань,
«Мастер Лайн», 2003. – 56 с. табл 12, илл.6, библтогр.:12 назв.
44. Медведев В.И. Программирование на С++, С++.NET и С#: - Казань:
Мастер Лайн, 2005. – 270с.:ил.- (Серия «Современная прикладная
математика и информатика»).
45. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд
Штайн. Алгоритмы: построение и анализ, 3-е издание Introduction to
Algorithms, Third Edition. — М.: «Вильямс», 2013. — 1328 с.
155
ПРИЛОЖЕНИЯ
Приложение 1. Формирование обучающей и контролирующей выборки
Выбор данных для обучения сети и их обработка является одним из
важнейших этапов решения задачи разработки НС. Данные представляют
собой совокупность обучающих векторов, каждый из которых состоит из
значений, подаваемых на вход сети (по одному на каждый), и на выход сети
(по одному на каждый). Перед тем, как подавать данные НС, необходимо
произвести некоторые преобразования для формирования обучающей и
контролирующей выборок:
1. Удаление признаков с неизвестными значениями
2. Удаление признаков с постоянными значениями (результаты
представить в таблице).
3. Устранение одинаковых элементов выборки и подсчетом их
частоты.
4. Восстановление пропущенных данных.
5. Контроль значений признаков и восстановление ошибочных
данных.
6. Вычисление значений признаков.
7. Сжатие исходной выборки путем классификации и определения
типичных представителей классов в качестве элементов выборки.
8. Нормирование значений признаков.
9. Снижение размерности пространства признаков.
10. Подготовка обучающей и контролирующей выборки.
Целевым показателем является совокупность параметров,
составляющих управляющее воздействие, необходимых для выполнения
команды управления мобильным объектом. Характеристики показателей
представлены в таблице 1.
156
Определение целевого показателя
Целевым показателем является координата точки по оси X и Y.
Характеристики показателя представлены в таблице 1.
Таблица 1. Целевой показатель
Целевой
показатель №
Единица
измерения Вариации
Точность
измерений Тип
Координата
точки по оси X Y1 см [0; 500] 0.1
Положительное
число
Координата
точки по оси Y Y2 см [0; 500] 0.1
Положительное
число
Определение факторов
Выберем 4 факторов влияющих на целевой показатель. Характеристики
факторов представлены в таблице 2.
Таблица 2. Факторы влияющие на целевой показатель
№ Фактор Единица
измерения
Вариации Точность
измерений
Пояснение
X1 Номер пикселя
изображения по
ширине
[0;1280] 0 Номер столбца
изображения
X2 Номер пикселя
изображения по
высоте
[0;720] 0 Номер строки
изображения
X3 Координата X точки см [0; 500] 0.5 Координата
точки по оси X
вычисленная
аналитически
X4 Координата Y точки см [0; 500] 0.5 Координата
точки по оси Y
вычисленная
аналитически
Данные выборки, отображающей соответствие значений факторов и
целевого показателя, представлены в таблице 3.
Таблица 3. Данные выборки
№ X1 X2 X3 X4 Y1 Y2
1 30 30 0,39299 35,93674 0,985 35,27895
2 30 75 0,39081 33,54021 0,9625 33,29412
3 30 120 0,38862 31,14457 0,94 30,94737
4 30 165 0,38644 28,74983 0,9175 28,57895
5 30 210 0,38426 26,35598 0,895 26,21053
157
Таблица 3. Данные выборки. Продолжение
6 30 255 0,38207 23,96303 0,8725 23,88889
7 30 300 0,37989 21,57096 0,85 21,5
8 30 345 0,37771 19,17979 0,8275 19,10526
9 30 390 0,37553 16,78951 0,805 16,73684
10 30 435 0,37336 14,40012 0,7825 14,36842
11 30 480 0,37118 12,01162 0,76 12
12 30 525 0,369 9,62401 0,7375 9,7
13 30 570 0,36682 7,23729 0,715 7,2
14 30 615 0,36465 4,85146 0,6925 5,35263
15 30 660 0,36248 2,46652 0,67 2,91875
16 30 705 0,3603 0,08246 0,6475 0,21053
17 80 30 3,04981 35,92436 3,485 35,30526
18 80 75 3,04713 33,529 3,4625 33,29412
19 80 120 3,04445 31,13454 3,44 30,94737
20 80 165 3,04178 28,74097 3,4175 28,57895
21 80 210 3,0391 26,34829 3,395 26,21053
22 80 255 3,03642 23,9565 3,3725 23,88889
23 80 300 3,03375 21,5656 3,35 21,5
24 80 345 3,03108 19,1756 3,3275 19,10526
25 80 390 3,0284 16,78648 3,305 16,73684
26 80 435 3,02573 14,39826 3,2825 14,36842
27 80 480 3,02306 12,01092 3,26 12
28 80 525 3,02039 9,62447 3,2375 9,7
29 80 570 3,01772 7,23892 3,215 7,2
30 80 615 3,01506 4,85425 3,1925 5,32632
31 80 660 3,01239 2,47046 3,17 2,8875
32 80 705 3,00972 0,08757 3,1475 0,21053
33 130 30 5,70404 35,912 6,03684 35,33158
34 130 75 5,70087 33,51781 6,01316 33,29412
35 130 120 5,6977 31,12452 5,98947 30,94737
36 130 165 5,69452 28,73211 5,96579 28,57895
37 130 210 5,69135 26,3406 5,94211 26,21053
38 130 255 5,68819 23,94998 5,91842 23,88889
39 130 300 5,68502 21,56025 5,89474 21,5
40 130 345 5,68185 19,17141 5,87105 19,10526
41 130 390 5,67869 16,78346 5,84737 16,73684
42 130 435 5,67553 14,3964 5,82368 14,36842
43 130 480 5,67236 12,01022 5,8 12
44 130 525 5,6692 9,62494 5,77632 9,7
45 130 570 5,66604 7,24054 5,75263 7,2
46 130 615 5,66288 4,85703 5,72895 5,3
47 130 660 5,65973 2,47441 5,70526 2,85625
48 130 705 5,65657 0,09267 5,68158 0,21053
49 180 30 8,35568 35,89965 8,61579 35,35789
50 180 75 8,35202 33,50663 8,59211 33,29412
51 180 120 8,34835 31,1145 8,56842 30,94737
52 180 165 8,34469 28,72327 8,54474 28,57895
158
Таблица 3. Данные выборки. Продолжение
53 180 210 8,34103 26,33292 8,52105 26,21053
54 180 255 8,33737 23,94347 8,49737 23,88889
55 180 300 8,33371 21,5549 8,47368 21,5
56 180 345 8,33005 19,16722 8,45 19,10526
57 180 390 8,32639 16,78044 8,42632 16,73684
58 180 435 8,32274 14,39454 8,40263 14,36842
59 180 480 8,31909 12,00952 8,37895 12
60 180 525 8,31543 9,6254 8,35526 9,7
61 180 570 8,31178 7,24216 8,33158 7,2
62 180 615 8,30814 4,85981 8,30789 5,27368
63 180 660 8,30449 2,47834 8,28421 2,825
64 180 705 8,30084 0,09776 8,26053 0,21053
65 230 30 11,00474 35,88731 11,19831 35,38421
66 230 75 11,00058 33,49546 11,1828 33,29412
67 230 120 10,99643 31,1045 11,16667 30,94737
68 230 165 10,99227 28,71443 11,14989 28,57895
69 230 210 10,98812 26,32525 11,13242 26,21053
70 230 255 10,98397 23,93696 11,11422 23,88889
71 230 300 10,97982 21,54956 11,09524 21,5
72 230 345 10,97567 19,16304 11,07543 19,10526
73 230 390 10,97152 16,77742 11,05473 16,73684
74 230 435 10,96738 14,39268 11,03308 14,36842
75 230 480 10,96324 12,00883 11,01042 12
76 230 525 10,95909 9,62586 10,98684 9,7
77 230 570 10,95495 7,24378 10,96316 7,2
78 230 615 10,95082 4,86259 10,93947 5,24737
79 230 660 10,94668 2,48228 10,91579 2,79375
80 230 705 10,94254 0,10285 10,89211 0,21053
81 280 30 13,65122 35,87499 13,78947 35,41053
82 280 75 13,64657 33,4843 13,78947 33,29412
83 280 120 13,64192 31,09451 13,78947 30,94737
84 280 165 13,63728 28,7056 13,78947 28,57895
85 280 210 13,63264 26,31759 13,78947 26,21053
86 280 255 13,628 23,93046 13,78947 23,88889
87 280 300 13,62336 21,54422 13,78947 21,5
88 280 345 13,61872 19,15887 13,78947 19,10526
89 280 390 13,61408 16,7744 13,78947 16,73684
90 280 435 13,60945 14,39082 13,78947 14,36842
91 280 480 13,60482 12,00813 13,78947 12
92 280 525 13,60019 9,62632 13,78947 9,7
93 280 570 13,59556 7,2454 13,78947 7,2
94 280 615 13,59093 4,86536 13,78947 5,22105
95 280 660 13,5863 2,48621 13,78947 2,7625
96 280 705 13,58168 0,10794 13,78947 0,21053
97 330 30 16,29512 35,86267 16,51053 35,43684
98 330 75 16,28998 33,47315 16,48684 33,29412
99 330 120 16,28485 31,08452 16,46316 30,94737
159
Таблица 3. Данные выборки. Продолжение
100 330 165 16,27971 28,69678 16,43947 28,57895
101 330 210 16,27458 26,30993 16,41579 26,21053
102 330 255 16,26945 23,92396 16,39211 23,88889
103 330 300 16,26432 21,53888 16,36842 21,5
104 330 345 16,2592 19,15469 16,34474 19,10526
105 330 390 16,25407 16,77139 16,32105 16,73684
106 330 435 16,24895 14,38897 16,29737 14,36842
107 330 480 16,24383 12,00743 16,27368 12
108 330 525 16,23871 9,62678 16,25 9,7
109 330 570 16,23359 7,24702 16,22632 7,2
110 330 615 16,22848 4,86813 16,20263 5,19474
111 330 660 16,22337 2,49013 16,17895 2,73125
112 330 705 16,21826 0,11302 16,15526 0,21053
113 380 30 18,93645 35,85037 19,14211 35,46316
114 380 75 18,93082 33,46201 19,11842 33,29412
115 380 120 18,9252 31,07455 19,09474 30,94737
116 380 165 18,91958 28,68797 19,07105 28,57895
117 380 210 18,91396 26,30228 19,04737 26,21053
118 380 255 18,90834 23,91747 19,02368 23,88889
119 380 300 18,90272 21,53356 19 21,5
120 380 345 18,89711 19,15052 18,97632 19,10526
121 380 390 18,8915 16,76838 18,95263 16,73684
122 380 435 18,88589 14,38711 18,92895 14,36842
123 380 480 18,88028 12,00674 18,90526 12
124 380 525 18,87467 9,62724 18,88158 9,7
125 380 570 18,86907 7,24863 18,85789 7,2
126 380 615 18,86347 4,8709 18,83421 5,16842
127 380 660 18,85787 2,49406 18,81053 2,7
128 380 705 18,85227 0,11809 18,78684 0,21053
129 430 30 21,57521 35,83808 21,52632 35,48947
130 430 75 21,56909 33,45089 21,52632 33,29412
131 430 120 21,56298 31,06458 21,52632 30,94737
132 430 165 21,55687 28,67917 21,52632 28,57895
133 430 210 21,55077 26,29464 21,52632 26,21053
134 430 255 21,54466 23,91099 21,52632 23,88889
135 430 300 21,53856 21,52823 21,52632 21,5
136 430 345 21,53246 19,14636 21,52632 19,10526
137 430 390 21,52636 16,76537 21,52632 16,73684
138 430 435 21,52026 14,38526 21,52632 14,36842
139 430 480 21,51417 12,00604 21,52632 12
140 430 525 21,50808 9,6277 21,52632 9,7
141 430 570 21,50199 7,25024 21,52632 7,2
142 430 615 21,4959 4,87367 21,52632 5,14211
143 430 660 21,48982 2,49798 21,52632 2,66875
144 430 705 21,48373 0,12316 21,52632 0,21053
145 480 30 24,2114 35,8258 24,15789 35,51579
146 480 75 24,2048 33,43977 24,15789 33,29412
160
Таблица 3. Данные выборки. Продолжение
147 480 120 24,19821 31,05463 24,15789 30,94737
148 480 165 24,19161 28,67037 24,15789 28,57895
149 480 210 24,18502 26,287 24,15789 26,21053
150 480 255 24,17842 23,90452 24,15789 23,88889
151 480 300 24,17184 21,52292 24,15789 21,5
152 480 345 24,16525 19,1422 24,15789 19,10526
153 480 390 24,15867 16,76236 24,15789 16,73684
154 480 435 24,15208 14,38341 24,15789 14,36842
155 480 480 24,1455 12,00535 24,15789 12
156 480 525 24,13893 9,62816 24,15789 9,7
157 480 570 24,13235 7,25186 24,15789 7,2
158 480 615 24,12578 4,87643 24,15789 5,11579
159 480 660 24,11921 2,50189 24,15789 2,6375
160 480 705 24,11265 0,12823 24,15789 0,21053
161 530 30 26,84504 35,81353 26,78947 35,54211
162 530 75 26,83795 33,42867 26,78947 33,29412
163 530 120 26,83087 31,04468 26,78947 30,94737
164 530 165 26,82379 28,66159 26,78947 28,57895
165 530 210 26,81671 26,27938 26,78947 26,21053
166 530 255 26,80963 23,89805 26,78947 23,88889
167 530 300 26,80256 21,5176 26,78947 21,5
168 530 345 26,79549 19,13804 26,78947 19,10526
169 530 390 26,78842 16,75936 26,78947 16,73684
170 530 435 26,78135 14,38157 26,78947 14,36842
171 530 480 26,77429 12,00465 26,78947 12
172 530 525 26,76723 9,62862 26,78947 9,7
173 530 570 26,76017 7,25347 26,78947 7,2
174 530 615 26,75311 4,87919 26,78947 5,08947
175 530 660 26,74606 2,5058 26,78947 2,60625
176 530 705 26,73901 0,13329 26,78947 0,21053
177 580 30 29,47612 35,80128 29,42105 35,56842
178 580 75 29,46854 33,41757 29,42105 33,29412
179 580 120 29,46098 31,03475 29,42105 30,94737
180 580 165 29,45341 28,65281 29,42105 28,57895
181 580 210 29,44585 26,27176 29,42105 26,21053
182 580 255 29,43828 23,89158 29,42105 23,88889
183 580 300 29,43073 21,5123 29,42105 21,5
184 580 345 29,42317 19,13389 29,42105 19,10526
185 580 390 29,41562 16,75636 29,42105 16,73684
186 580 435 29,40807 14,37972 29,42105 14,36842
187 580 480 29,40052 12,00396 29,42105 12
188 580 525 29,39298 9,62908 29,42105 9,7
189 580 570 29,38544 7,25508 29,42105 7,2
190 580 615 29,3779 4,88195 29,42105 5,06316
191 580 660 29,37036 2,50971 29,42105 2,575
192 580 705 29,36283 0,13834 29,42105 0,21053
193 630 30 32,10464 35,78904 32,05263 35,59474
161
Таблица 3. Данные выборки. Продолжение
194 630 75 32,09658 33,40649 32,05263 33,29412
195 630 120 32,08853 31,02482 32,05263 30,94737
196 630 165 32,08048 28,64404 32,05263 28,57895
197 630 210 32,07243 26,26414 32,05263 26,21053
198 630 255 32,06439 23,88513 32,05263 23,88889
199 630 300 32,05635 21,50699 32,05263 21,5
200 630 345 32,04831 19,12974 32,05263 19,10526
201 630 390 32,04028 16,75337 32,05263 16,73684
202 630 435 32,03224 14,37788 32,05263 14,36842
203 630 480 32,02421 12,00327 32,05263 12
204 630 525 32,01619 9,62954 32,05263 9,7
205 630 570 32,00817 7,25668 32,05263 7,2
206 630 615 32,00015 4,88471 32,05263 5,03684
207 630 660 31,99213 2,51361 32,05263 2,54375
208 630 705 31,98411 0,14339 32,05263 0,21053
209 680 30 34,73061 35,77681 34,68421 35,62105
210 680 75 34,72207 33,39541 34,68421 33,29412
211 680 120 34,71354 31,01491 34,68421 30,94737
212 680 165 34,70501 28,63528 34,68421 28,57895
213 680 210 34,69648 26,25654 34,68421 26,21053
214 680 255 34,68795 23,87868 34,68421 23,88889
215 680 300 34,67943 21,5017 34,68421 21,5
216 680 345 34,67091 19,1256 34,68421 19,10526
217 680 390 34,66239 16,75038 34,68421 16,73684
218 680 435 34,65388 14,37604 34,68421 14,36842
219 680 480 34,64537 12,00257 34,68421 12
220 680 525 34,63686 9,62999 34,68421 9,7
221 680 570 34,62835 7,25829 34,68421 7,2
222 680 615 34,61985 4,88746 34,68421 5,01053
223 680 660 34,61135 2,51751 34,68421 2,5125
224 680 705 34,60286 0,14844 34,68421 0,21053
225 730 30 37,35404 35,76459 37,31579 35,64737
226 730 75 37,34502 33,38435 37,31579 33,29412
227 730 120 37,336 31,005 37,31579 30,94737
228 730 165 37,32699 28,62653 37,31579 28,57895
229 730 210 37,31798 26,24894 37,31579 26,21053
230 730 255 37,30897 23,87223 37,31579 23,88889
231 730 300 37,29996 21,4964 37,31579 21,5
232 730 345 37,29096 19,12146 37,31579 19,10526
233 730 390 37,28196 16,74739 37,31579 16,73684
234 730 435 37,27297 14,3742 37,31579 14,36842
235 730 480 37,26398 12,00188 37,31579 12
236 730 525 37,25499 9,63045 37,31579 9,7
237 730 570 37,24601 7,25989 37,31579 7,2
238 730 615 37,23703 4,89021 37,31579 4,98333
239 730 660 37,22805 2,52141 37,31579 2,48125
240 730 705 37,21907 0,15348 37,31579 0,21053
162
Таблица 3. Данные выборки. Продолжение
241 780 30 39,97492 35,75238 39,94737 35,67368
242 780 75 39,96542 33,3733 39,94737 33,29412
243 780 120 39,95592 30,9951 39,94737 30,94737
244 780 165 39,94643 28,61779 39,94737 28,57895
245 780 210 39,93694 26,24135 39,94737 26,21053
246 780 255 39,92745 23,86579 39,94737 23,88889
247 780 300 39,91796 21,49112 39,94737 21,5
248 780 345 39,90848 19,11732 39,94737 19,10526
249 780 390 39,899 16,7444 39,94737 16,73684
250 780 435 39,88953 14,37236 39,94737 14,36842
251 780 480 39,88006 12,00119 39,94737 12
252 780 525 39,87059 9,63091 39,94737 9,7
253 780 570 39,86113 7,2615 39,94737 7,2
254 780 615 39,85167 4,89296 39,94737 4,95556
255 780 660 39,84221 2,5253 39,94737 2,45
256 780 705 39,83276 0,15852 39,94737 0,21053
257 830 30 42,59327 35,74018 42,57895 35,7
258 830 75 42,58329 33,36226 42,57895 33,29412
259 830 120 42,57331 30,98522 42,57895 30,94737
260 830 165 42,56333 28,60905 42,57895 28,57895
261 830 210 42,55336 26,23377 42,57895 26,21053
262 830 255 42,54339 23,85936 42,57895 23,88889
263 830 300 42,53343 21,48583 42,57895 21,5
264 830 345 42,52347 19,11319 42,57895 19,10526
265 830 390 42,51351 16,74141 42,57895 16,73684
266 830 435 42,50356 14,37052 42,57895 14,36842
267 830 480 42,49361 12,0005 42,57895 12
268 830 525 42,48366 9,63136 42,57895 9,7
269 830 570 42,47372 7,2631 42,57895 7,2
270 830 615 42,46378 4,89571 42,57895 4,92778
271 830 660 42,45385 2,52919 42,57895 2,41875
272 830 705 42,44392 0,16355 42,57895 0,21053
273 880 30 45,20908 35,728 45,21053 35,72632
274 880 75 45,19862 33,35123 45,21053 33,29412
275 880 120 45,18816 30,97534 45,21053 30,94737
276 880 165 45,17771 28,60033 45,21053 28,57895
277 880 210 45,16725 26,22619 45,21053 26,21053
278 880 255 45,15681 23,85294 45,21053 23,88889
279 880 300 45,14637 21,48056 45,21053 21,5
280 880 345 45,13593 19,10906 45,21053 19,10526
281 880 390 45,12549 16,73843 45,21053 16,73684
282 880 435 45,11506 14,36869 45,21053 14,36842
283 880 480 45,10463 11,99981 45,21053 12
284 880 525 45,09421 9,63182 45,21053 9,7
285 880 570 45,08379 7,2647 45,21053 7,2
286 880 615 45,07338 4,89845 45,21053 4,9
287 880 660 45,06296 2,53307 45,21053 2,3875
163
Таблица 3. Данные выборки. Продолжение
288 880 705 45,05256 0,16857 45,21053 0,21053
289 930 30 47,82236 35,71583 47,84211 35,75263
290 930 75 47,81142 33,34021 47,84211 33,29412
291 930 120 47,80048 30,96547 47,84211 30,94737
292 930 165 47,78955 28,59161 47,84211 28,57895
293 930 210 47,77862 26,21862 47,84211 26,21053
294 930 255 47,7677 23,84652 47,84211 23,88889
295 930 300 47,75678 21,47529 47,84211 21,5
296 930 345 47,74586 19,10493 47,84211 19,10526
297 930 390 47,73495 16,73546 47,84211 16,73684
298 930 435 47,72404 14,36685 47,84211 14,36842
299 930 480 47,71314 11,99913 47,84211 12
300 930 525 47,70224 9,63227 47,84211 9,7
301 930 570 47,69134 7,26629 47,84211 7,2
302 930 615 47,68045 4,90119 47,84211 4,87222
303 930 660 47,66956 2,53696 47,84211 2,35625
304 930 705 47,65868 0,1736 47,84211 0,21053
305 980 30 50,43311 35,70367 50,5 35,77895
306 980 75 50,42169 33,3292 50,5 33,29412
307 980 120 50,41028 30,95561 50,5 30,94737
308 980 165 50,39887 28,5829 50,5 28,57895
309 980 210 50,38746 26,21106 50,5 26,21053
310 980 255 50,37606 23,8401 50,5 23,88889
311 980 300 50,36467 21,47002 50,5 21,5
312 980 345 50,35327 19,10081 50,5 19,10526
313 980 390 50,34188 16,73248 50,5 16,73684
314 980 435 50,3305 14,36502 50,5 14,36842
315 980 480 50,31912 11,99844 50,5 12
316 980 525 50,30775 9,63273 50,5 9,7
317 980 570 50,29637 7,26789 50,5 7,2
318 980 615 50,28501 4,90393 50,5 4,84444
319 980 660 50,27364 2,54083 50,5 2,325
320 980 705 50,26228 0,17861 50,5 0,21053
321 1030 30 53,04134 35,69152 53,15789 35,80526
322 1030 75 53,02944 33,3182 53,15789 33,29412
323 1030 120 53,01755 30,94576 53,15789 30,94737
324 1030 165 53,00567 28,5742 53,15789 28,57895
325 1030 210 52,99378 26,20351 53,15789 26,21053
326 1030 255 52,98191 23,8337 53,15789 23,88889
327 1030 300 52,97004 21,46476 53,15789 21,5
328 1030 345 52,95817 19,0967 53,15789 19,10526
329 1030 390 52,9463 16,72951 53,15789 16,73684
330 1030 435 52,93444 14,36319 53,15789 14,36842
331 1030 480 52,92259 11,99775 53,15789 12
332 1030 525 52,91074 9,63318 53,15789 9,7
333 1030 570 52,89889 7,26949 53,15789 7,2
334 1030 615 52,88705 4,90666 53,15789 4,81667
164
Таблица 3. Данные выборки. Продолжение
335 1030 660 52,87521 2,54471 53,15789 2,29375
336 1030 705 52,86338 0,18362 53,15789 0,21053
337 1080 30 55,64704 35,67938 55,84211 35,83158
338 1080 75 55,63467 33,30722 55,84211 33,29412
339 1080 120 55,62231 30,93592 55,84211 30,94737
340 1080 165 55,60995 28,5655 55,84211 28,57895
341 1080 210 55,59759 26,19596 55,84211 26,21053
342 1080 255 55,58524 23,8273 55,84211 23,88889
343 1080 300 55,57289 21,4595 55,84211 21,5
344 1080 345 55,56055 19,09258 55,84211 19,10526
345 1080 390 55,54821 16,72654 55,84211 16,73684
346 1080 435 55,53588 14,36136 55,84211 14,36842
347 1080 480 55,52355 11,99706 55,84211 12
348 1080 525 55,51122 9,63364 55,84211 9,7
349 1080 570 55,4989 7,27108 55,84211 7,2
350 1080 615 55,48659 4,90939 55,84211 4,78889
351 1080 660 55,47428 2,54858 55,84211 2,2625
352 1080 705 55,46197 0,18863 55,84211 0,21053
353 1130 30 58,25023 35,66726 58,52632 35,85789
354 1130 75 58,23739 33,29624 58,52632 33,29412
355 1130 120 58,22455 30,92609 58,52632 30,94737
356 1130 165 58,21171 28,55682 58,52632 28,57895
357 1130 210 58,19888 26,18842 58,52632 26,21053
358 1130 255 58,18605 23,8209 58,52632 23,88889
359 1130 300 58,17323 21,45425 58,52632 21,5
360 1130 345 58,16042 19,08847 58,52632 19,10526
361 1130 390 58,14761 16,72357 58,52632 16,73684
362 1130 435 58,1348 14,35954 58,52632 14,36842
363 1130 480 58,122 11,99638 58,52632 12
364 1130 525 58,1092 9,63409 58,52632 9,7
365 1130 570 58,09641 7,27267 58,52632 7,2
366 1130 615 58,08362 4,91212 58,52632 4,76111
367 1130 660 58,07084 2,55244 58,52632 2,23125
368 1130 705 58,05806 0,19363 58,52632 0,21053
369 1180 30 60,85091 35,65515 61,01667 35,88421
370 1180 75 60,83759 33,28527 61,04167 33,29412
371 1180 120 60,82427 30,91627 61,06667 30,94737
372 1180 165 60,81097 28,54814 61,09167 28,57895
373 1180 210 60,79766 26,18089 61,11667 26,21053
374 1180 255 60,78436 23,81451 61,14167 23,88889
375 1180 300 60,77107 21,449 61,16667 21,5
376 1180 345 60,75778 19,08437 61,19167 19,10526
377 1180 390 60,7445 16,72061 61,21667 16,73684
378 1180 435 60,73122 14,35771 61,24167 14,36842
379 1180 480 60,71794 11,99569 61,26667 12
380 1180 525 60,70467 9,63454 61,29167 9,7
381 1180 570 60,69141 7,27426 61,31667 7,2
165
Таблица 3. Данные выборки. Окончание
382 1180 615 60,67815 4,91485 61,34167 4,73333
383 1180 660 60,6649 2,55631 61,36667 2,2
384 1180 705 60,65165 0,19863 61,39167 0,21053
385 1230 30 63,44907 35,64305 63,75263 35,91053
386 1230 75 63,43528 33,27432 63,77632 33,29412
387 1230 120 63,42149 30,90646 63,8 30,94737
388 1230 165 63,40771 28,53948 63,82368 28,57895
389 1230 210 63,39394 26,17337 63,84737 26,21053
390 1230 255 63,38017 23,80813 63,87105 23,88889
391 1230 300 63,3664 21,44376 63,89474 21,5
392 1230 345 63,35264 19,08027 63,91842 19,10526
393 1230 390 63,33888 16,71765 63,94211 16,73684
394 1230 435 63,32513 14,35589 63,96579 14,36842
395 1230 480 63,31139 11,99501 63,98947 12
396 1230 525 63,29765 9,63499 64,01389 9,7
397 1230 570 63,28391 7,27585 64,03889 7,2
398 1230 615 63,27018 4,91757 64,06389 4,70556
399 1230 660 63,25646 2,56016 64,08889 2,16875
400 1230 705 63,24274 0,20362 64,11389 0,21053
a. Удаление признаков с неизвестными значениями
Если у каждого элемента выборки значения признака неизвестно, то
такой признак удаляется.
Вывод. В рассматриваемом примере в результате анализа выборки
факторы с неизвестными значениями не обнаружены.
b. Удаление факторов с постоянными значениями
Пусть задана выборка значений:
yxZ , ,
где x – вектор значений факторов y – целевой показатель, Xx , где X –
пространство значений факторов. Пусть известны количество элементов
выборки q и частота появления каждого i-го значения каждого j-го фактора в
выборке: ijq . Тогда удаляют фактор, если у него существует такое i-ое
значение, частота появления которого удовлетворяют условию:
eqqij /
166
где e – порог, задаваемый экспертом (значение e близко к единице – если e =
1, будут удалены только те факторы, все значения которых одинаковы). В
результате удаления факторов будет получено пространство X*.
Зададим значение e = 0.99.
Таблица 4. Факторы
Фактор № Единица измерения Вариации
Номер пикселя
изображения по ширине
Х1 [0;1280]
Номер пикселя
изображения по высоте
Х2 [0;720]
Координата X точки Х3 см [0; 500]
Координата Y точки Х4 см [0; 500]
Вывод: Факторы с постоянными значениями в выборке не были
обнаружены.
с. Устранение одинаковых элементов выборки
Выборка должна быть множеством различных между собой элементов.
Поэтому в ней не должно встречаться хотя бы двух одинаковых элементов,
для которых совпадают вектора значений факторов и значения целевых
показателей. В некоторых случаях бывает целесообразно сохранять
информацию о частоте, с которой каждый элемент встречается в исходной
выборке:
pyxZ ,*,* ,
где. x* - вектор значений факторов,
y – целевой показатель,
Xx * - пространство значений признаков,
p – частота с которой (x*,y) присутствовала в исходной выборке.
В результате анализа выборки, одинаковые элементы не были
обнаружены.
Вывод: одинаковые элементы выборки не были обнаружены.
167
d. Восстановление пропущенных данных
Методы обработки данных с пропусками можно условно разбить на
четыре (пересекающиеся) группы: исключение некомпетентных объектов, с
заполнением, взвешивания и методы, основанные на моделировании.
Рассмотрим множество значений X*={x} (X
* X) обучающей выборки.
Выделим во множестве признаков J подмножества J1 и J2. Подмножество J1
включает признаки, для которых определены все значения для всех
элементов обучающей выборки X*. А подмножество J2 включает признаки,
для которых не определено хотя бы одно значение в элементах обучающей
выборки X*.
Причины (механизмы образования пропусков) возникновения
пропусков в данных для признака j (j J2) можно классифицировать в
соответствии с зависимостью вероятности пропуска значений признака j:
1. Вероятность пропуска значений признака j зависят от самого
значения признака j и от значений признаков включаемых в J1.
2. Вероятность пропуска значений признака j не зависят от значений
признака j и зависят от значений признаков включаемых в J1.
3. Вероятность пропуска значений признака j не зависят от значений
признака j и не зависят от значений признаков включаемых в J1 (данные
отсутствуют случайно – ОС, данные присутствуют случайно – ПС;
отсутствуют и присутствуют случайно - ОПС).
Пропуски могут быть управляемы (метод двойного выбора) или
неуправляемы в выборке.
Пропуски могут быть связаны с отказом в ответе эксперта, высокой
стоимостью измерения, обнаруженными ошибками в регистрации данных.
Способами заполнения пропущенных значений (порождение
пропусков) являются:
1. Замена пропущенных выражений с помощью явных выражений (с
помощью регрессии);
2. Итеративные методы подбора пропущенных значений;
168
3. Заполнение безусловными средними;
4. Заполнение пристрастным подбором;
5. Заполнение условными средними (метод Бака);
6. Методы, основанные на моделировании;
7. Заполнение в планировании эксперимента;
8. Заполнение в многомерном анализе;
9. Заполнение в выборочных исследованиях.
В данной работе будем применять метод условного среднего.
В результате анализа выборки не было обнаружено пропущенных
данных.
Вывод: Пропущенных данных в выборке не обнаружено.
e. Контроль значений признаков и восстановление ошибочных данных
Для контроля данных найдем:
1. Минимальные и максимальные значения каждого признака в
выборке.
2. Оценки математического ожидания значений признаков.
3. Оценим среднее квадратическое отклонение.
4. Стандартная ошибка среднего.
5. Отношение стандартной ошибки среднего к среднему значению.
Минимальные и максимальные значения элементов выборки
представлены в таблице 5.
Таблица 5. Минимальные и максимальные значения
Х1 Х2 Х3 Х4 Y1 Y2
Минимум 30 30 0.3603 0.0824 0.6474 0.2105
Максимум 1230 705 63.4490 35.9367 64.1138 35.9105
Для того, чтобы оценить достоверность минимальных и максимальных
значений признаков, проведём анализ их основных статистических
характеристик.
169
Среднее – среднее арифметическое значение (оценка математического
ожидания):
1
1
n
i
ijj vn
v , KMj ,1 , (2)
где n – количество экспериментальных значений;
M – количество целевых показателей;
К – количество признаков;
vij – i–ое значение j–ого признака;
jv – среднее арифметическое значение j–ого признака по n
экспериментальным значениям;
i – номер строки (значения признака) в таблицах исходных данных;
j – номер столбца (признака) в таблицах исходных данных.
Далее во всех формулах данного раздела используются одни и те же
обозначения переменных, как и в (2), поэтому нет необходимости их
дальнейшего пояснения.
Стандартное отклонение (оценка среднего квадратического
отклонения) – это мера того, насколько широко распределены
экспериментальные данные относительно их среднего значения:
2
1
2
1
2
*
n
vvnn
i
n
i
ijij
j
; MNj ,1 . (3)
Стандартная ошибка среднего – отношение стандартного отклонения к
корню квадратному из количества экспериментальных значений:
;
*
nS
j
j
MNj ,1 . (4)
Отношение стандартной ошибки среднего к среднему значению:
j
j
v
S ; MNj ,1 . (5)
Основные статистические характеристики для всех признаков
приведены в таблице 6.
170
Таблица 6. Основные статистические характеристики
X1 X2 X3 X4 Y1 Y2
Среднее значение 630 367,5 31,97821 17,95089 32,13047 17,93204
Стандартное
отклонение 360,5551 207,4398 18,9198 10,95478 18,96787 10,89283
Стандартная
ошибка среднего 18,02776 10,37199 0,94599 0,547739 0,948393 0,544641
Отношение
стандартной ошибки
к среднему 0,028615 0,028223 0,029582 0,030513 0,029517 0,030373
Вывод: Проведен анализ данных выборки. Полученные результаты
показывают, что имеющиеся исходные данные пригодны для
статистического исследования. Все данные признаны достоверными.
f. Установление аналитических зависимостей между факторами и
снижение количества факторов
Вывод. Аналитические зависимости между факторами не
выявлены, поэтому уменьшение количества факторов не произведено.
g. Снижение размера выборки
Исходная выборка разбивается на классы (кластеры), в каждый из
которых включаются элементы выборки близкие по значениям факторов и
целевого показателя. Необходимость в этом действии возникает в том случае,
если выборка имеет большое количество элементов и необходимо снизить
объем выборки.
После выполнения кластеризации в выборку включают только
типичные представители каждого кластера.
Выводы. В виду того, что количество элементов выборки
небольшое (400 элементов) в данном случае снижение размера выборки не
производится.
171
h. Нормирование значений признаков
Нормирование на основе минимальных и максимальных значений (от 0
до 1):
Проведем нормирование значений признаков и представим результаты
в таблице 7.
Нормирование проводилось по формуле 1.
.,1,
minmax
min
...1...1
...1 nivv
vvs
nn
nii
(1)
В формуле 1:
si – нормированное значение,
vi – значение, подлежащее нормированию,
min(v1…n) – минимальное, среди всех подлежащих нормированию,
значений, max(v1…n) – максимальное, среди всех подлежащих нормированию,
значений.
Вывод: В результате выполнения данного этапа значения
факторов в выборке были сведены к диапазону от 0 до 1.
Таблица 7. Данные выборки
№ X1 X2 X3 X4 Y1 Y2
1 0 0 0,00052 1 0,00532 0,98231
2 0 0,06667 0,00048 0,93316 0,00496 0,92671
3 0 0,13333 0,00045 0,86634 0,00461 0,86098
4 0 0,2 0,00041 0,79955 0,00425 0,79463
5 0 0,26667 0,00038 0,73279 0,0039 0,72829
6 0 0,33333 0,00035 0,66605 0,00355 0,66326
7 0 0,4 0,00031 0,59933 0,00319 0,59634
8 0 0,46667 0,00028 0,53264 0,00284 0,52926
9 0 0,53333 0,00024 0,46597 0,00248 0,46292
10 0 0,6 0,00021 0,39933 0,00213 0,39658
11 0 0,66667 0,00017 0,33271 0,00177 0,33024
12 0 0,73333 0,00014 0,26612 0,00142 0,26581
13 0 0,8 0,0001 0,19955 0,00106 0,19578
14 0 0,86667 7E-05 0,13301 0,00071 0,14404
15 0 0,93333 3E-05 0,06649 0,00035 0,07586
16 0 1 0 0 0 0
17 0,04167 0 0,04263 0,99965 0,04471 0,98305
172
Таблица 7. Данные выборки. Продолжение
18 0,04167 0,06667 0,04259 0,93285 0,04435 0,92671
19 0,04167 0,13333 0,04255 0,86606 0,044 0,86098
20 0,04167 0,2 0,0425 0,79931 0,04365 0,79463
21 0,04167 0,26667 0,04246 0,73257 0,04329 0,72829
22 0,04167 0,33333 0,04242 0,66586 0,04294 0,66326
23 0,04167 0,4 0,04238 0,59918 0,04258 0,59634
24 0,04167 0,46667 0,04233 0,53252 0,04223 0,52926
25 0,04167 0,53333 0,04229 0,46589 0,04187 0,46292
26 0,04167 0,6 0,04225 0,39928 0,04152 0,39658
27 0,04167 0,66667 0,04221 0,33269 0,04116 0,33024
28 0,04167 0,73333 0,04216 0,26613 0,04081 0,26581
29 0,04167 0,8 0,04212 0,1996 0,04045 0,19578
30 0,04167 0,86667 0,04208 0,13309 0,0401 0,1433
31 0,04167 0,93333 0,04204 0,0666 0,03975 0,07499
32 0,04167 1 0,042 0,00014 0,03939 0
33 0,08333 0 0,0847 0,99931 0,08492 0,98378
34 0,08333 0,06667 0,08465 0,93253 0,08454 0,92671
35 0,08333 0,13333 0,0846 0,86578 0,08417 0,86098
36 0,08333 0,2 0,08455 0,79906 0,0838 0,79463
37 0,08333 0,26667 0,0845 0,73236 0,08342 0,72829
38 0,08333 0,33333 0,08445 0,66568 0,08305 0,66326
39 0,08333 0,4 0,0844 0,59903 0,08268 0,59634
40 0,08333 0,46667 0,08435 0,5324 0,0823 0,52926
41 0,08333 0,53333 0,0843 0,4658 0,08193 0,46292
42 0,08333 0,6 0,08425 0,39923 0,08156 0,39658
43 0,08333 0,66667 0,0842 0,33267 0,08118 0,33024
44 0,08333 0,73333 0,08415 0,26615 0,08081 0,26581
45 0,08333 0,8 0,0841 0,19964 0,08044 0,19578
46 0,08333 0,86667 0,08405 0,13317 0,08007 0,14256
47 0,08333 0,93333 0,084 0,06671 0,07969 0,07411
48 0,08333 1 0,08395 0,00028 0,07932 0
49 0,125 0 0,12673 0,99897 0,12555 0,98452
50 0,125 0,06667 0,12667 0,93222 0,12518 0,92671
51 0,125 0,13333 0,12662 0,8655 0,1248 0,86098
52 0,125 0,2 0,12656 0,79881 0,12443 0,79463
53 0,125 0,26667 0,1265 0,73214 0,12406 0,72829
54 0,125 0,33333 0,12644 0,6655 0,12369 0,66326
55 0,125 0,4 0,12638 0,59888 0,12331 0,59634
56 0,125 0,46667 0,12633 0,53229 0,12294 0,52926
57 0,125 0,53333 0,12627 0,46572 0,12257 0,46292
58 0,125 0,6 0,12621 0,39917 0,12219 0,39658
59 0,125 0,66667 0,12615 0,33265 0,12182 0,33024
60 0,125 0,73333 0,12609 0,26616 0,12145 0,26581
61 0,125 0,8 0,12604 0,19969 0,12107 0,19578
62 0,125 0,86667 0,12598 0,13324 0,1207 0,14183
63 0,125 0,93333 0,12592 0,06682 0,12033 0,07323
64 0,125 1 0,12586 0,00043 0,11995 0
173
Таблица 7. Данные выборки. Продолжение
65 0,16667 0 0,16872 0,99862 0,16624 0,98526
66 0,16667 0,06667 0,16866 0,93191 0,166 0,92671
67 0,16667 0,13333 0,16859 0,86523 0,16574 0,86098
68 0,16667 0,2 0,16852 0,79856 0,16548 0,79463
69 0,16667 0,26667 0,16846 0,73193 0,1652 0,72829
70 0,16667 0,33333 0,16839 0,66532 0,16492 0,66326
71 0,16667 0,4 0,16833 0,59873 0,16462 0,59634
72 0,16667 0,46667 0,16826 0,53217 0,16431 0,52926
73 0,16667 0,53333 0,1682 0,46563 0,16398 0,46292
74 0,16667 0,6 0,16813 0,39912 0,16364 0,39658
75 0,16667 0,66667 0,16806 0,33263 0,16328 0,33024
76 0,16667 0,73333 0,168 0,26617 0,16291 0,26581
77 0,16667 0,8 0,16793 0,19973 0,16254 0,19578
78 0,16667 0,86667 0,16787 0,13332 0,16216 0,14109
79 0,16667 0,93333 0,1678 0,06693 0,16179 0,07236
80 0,16667 1 0,16774 0,00057 0,16142 0
81 0,20833 0 0,21067 0,99828 0,20707 0,98599
82 0,20833 0,06667 0,2106 0,9316 0,20707 0,92671
83 0,20833 0,13333 0,21052 0,86495 0,20707 0,86098
84 0,20833 0,2 0,21045 0,79832 0,20707 0,79463
85 0,20833 0,26667 0,21038 0,73172 0,20707 0,72829
86 0,20833 0,33333 0,2103 0,66514 0,20707 0,66326
87 0,20833 0,4 0,21023 0,59858 0,20707 0,59634
88 0,20833 0,46667 0,21015 0,53205 0,20707 0,52926
89 0,20833 0,53333 0,21008 0,46555 0,20707 0,46292
90 0,20833 0,6 0,21001 0,39907 0,20707 0,39658
91 0,20833 0,66667 0,20993 0,33261 0,20707 0,33024
92 0,20833 0,73333 0,20986 0,26618 0,20707 0,26581
93 0,20833 0,8 0,20979 0,19978 0,20707 0,19578
94 0,20833 0,86667 0,20971 0,1334 0,20707 0,14035
95 0,20833 0,93333 0,20964 0,06704 0,20707 0,07148
96 0,20833 1 0,20957 0,00071 0,20707 0
97 0,25 0 0,25258 0,99793 0,24994 0,98673
98 0,25 0,06667 0,2525 0,93129 0,24957 0,92671
99 0,25 0,13333 0,25241 0,86467 0,2492 0,86098
100 0,25 0,2 0,25233 0,79807 0,24882 0,79463
101 0,25 0,26667 0,25225 0,7315 0,24845 0,72829
102 0,25 0,33333 0,25217 0,66496 0,24808 0,66326
103 0,25 0,4 0,25209 0,59843 0,2477 0,59634
104 0,25 0,46667 0,25201 0,53194 0,24733 0,52926
105 0,25 0,53333 0,25193 0,46547 0,24696 0,46292
106 0,25 0,6 0,25185 0,39902 0,24659 0,39658
107 0,25 0,66667 0,25176 0,3326 0,24621 0,33024
108 0,25 0,73333 0,25168 0,2662 0,24584 0,26581
109 0,25 0,8 0,2516 0,19982 0,24547 0,19578
110 0,25 0,86667 0,25152 0,13348 0,24509 0,13961
111 0,25 0,93333 0,25144 0,06715 0,24472 0,07061
112 0,25 1 0,25136 0,00085 0,24435 0
174
Таблица 7. Данные выборки. Продолжение
113 0,29167 0 0,29444 0,99759 0,29141 0,98747
114 0,29167 0,06667 0,29436 0,93098 0,29103 0,92671
115 0,29167 0,13333 0,29427 0,86439 0,29066 0,86098
116 0,29167 0,2 0,29418 0,79783 0,29029 0,79463
117 0,29167 0,26667 0,29409 0,73129 0,28992 0,72829
118 0,29167 0,33333 0,294 0,66477 0,28954 0,66326
119 0,29167 0,4 0,29391 0,59829 0,28917 0,59634
120 0,29167 0,46667 0,29382 0,53182 0,2888 0,52926
121 0,29167 0,53333 0,29373 0,46538 0,28842 0,46292
122 0,29167 0,6 0,29364 0,39897 0,28805 0,39658
123 0,29167 0,66667 0,29355 0,33258 0,28768 0,33024
124 0,29167 0,73333 0,29347 0,26621 0,2873 0,26581
125 0,29167 0,8 0,29338 0,19987 0,28693 0,19578
126 0,29167 0,86667 0,29329 0,13355 0,28656 0,13888
127 0,29167 0,93333 0,2932 0,06726 0,28618 0,06973
128 0,29167 1 0,29311 0,00099 0,28581 0
129 0,33333 0 0,33627 0,99725 0,32897 0,98821
130 0,33333 0,06667 0,33617 0,93067 0,32897 0,92671
131 0,33333 0,13333 0,33608 0,86411 0,32897 0,86098
132 0,33333 0,2 0,33598 0,79758 0,32897 0,79463
133 0,33333 0,26667 0,33588 0,73108 0,32897 0,72829
134 0,33333 0,33333 0,33579 0,66459 0,32897 0,66326
135 0,33333 0,4 0,33569 0,59814 0,32897 0,59634
136 0,33333 0,46667 0,33559 0,5317 0,32897 0,52926
137 0,33333 0,53333 0,3355 0,4653 0,32897 0,46292
138 0,33333 0,6 0,3354 0,39891 0,32897 0,39658
139 0,33333 0,66667 0,3353 0,33256 0,32897 0,33024
140 0,33333 0,73333 0,33521 0,26622 0,32897 0,26581
141 0,33333 0,8 0,33511 0,19991 0,32897 0,19578
142 0,33333 0,86667 0,33501 0,13363 0,32897 0,13814
143 0,33333 0,93333 0,33492 0,06737 0,32897 0,06886
144 0,33333 1 0,33482 0,00114 0,32897 0
145 0,375 0 0,37806 0,99691 0,37044 0,98894
146 0,375 0,06667 0,37795 0,93036 0,37044 0,92671
147 0,375 0,13333 0,37785 0,86383 0,37044 0,86098
148 0,375 0,2 0,37774 0,79734 0,37044 0,79463
149 0,375 0,26667 0,37764 0,73086 0,37044 0,72829
150 0,375 0,33333 0,37753 0,66441 0,37044 0,66326
151 0,375 0,4 0,37743 0,59799 0,37044 0,59634
152 0,375 0,46667 0,37732 0,53159 0,37044 0,52926
153 0,375 0,53333 0,37722 0,46521 0,37044 0,46292
154 0,375 0,6 0,37712 0,39886 0,37044 0,39658
155 0,375 0,66667 0,37701 0,33254 0,37044 0,33024
156 0,375 0,73333 0,37691 0,26624 0,37044 0,26581
157 0,375 0,8 0,3768 0,19996 0,37044 0,19578
158 0,375 0,86667 0,3767 0,13371 0,37044 0,1374
159 0,375 0,93333 0,37659 0,06748 0,37044 0,06798
175
Таблица 7. Данные выборки. Продолжение
160 0,375 1 0,37649 0,00128 0,37044 0
161 0,41667 0 0,4198 0,99656 0,4119 0,98968
162 0,41667 0,06667 0,41969 0,93005 0,4119 0,92671
163 0,41667 0,13333 0,41958 0,86356 0,4119 0,86098
164 0,41667 0,2 0,41946 0,79709 0,4119 0,79463
165 0,41667 0,26667 0,41935 0,73065 0,4119 0,72829
166 0,41667 0,33333 0,41924 0,66423 0,4119 0,66326
167 0,41667 0,4 0,41913 0,59784 0,4119 0,59634
168 0,41667 0,46667 0,41902 0,53147 0,4119 0,52926
169 0,41667 0,53333 0,4189 0,46513 0,4119 0,46292
170 0,41667 0,6 0,41879 0,39881 0,4119 0,39658
171 0,41667 0,66667 0,41868 0,33252 0,4119 0,33024
172 0,41667 0,73333 0,41857 0,26625 0,4119 0,26581
173 0,41667 0,8 0,41846 0,2 0,4119 0,19578
174 0,41667 0,86667 0,41834 0,13378 0,4119 0,13667
175 0,41667 0,93333 0,41823 0,06759 0,4119 0,06711
176 0,41667 1 0,41812 0,00142 0,4119 0
177 0,45833 0 0,46151 0,99622 0,45337 0,99042
178 0,45833 0,06667 0,46139 0,92974 0,45337 0,92671
179 0,45833 0,13333 0,46127 0,86328 0,45337 0,86098
180 0,45833 0,2 0,46115 0,79685 0,45337 0,79463
181 0,45833 0,26667 0,46103 0,73044 0,45337 0,72829
182 0,45833 0,33333 0,46091 0,66405 0,45337 0,66326
183 0,45833 0,4 0,46079 0,59769 0,45337 0,59634
184 0,45833 0,46667 0,46067 0,53136 0,45337 0,52926
185 0,45833 0,53333 0,46055 0,46505 0,45337 0,46292
186 0,45833 0,6 0,46043 0,39876 0,45337 0,39658
187 0,45833 0,66667 0,46031 0,3325 0,45337 0,33024
188 0,45833 0,73333 0,46019 0,26626 0,45337 0,26581
189 0,45833 0,8 0,46007 0,20005 0,45337 0,19578
190 0,45833 0,86667 0,45995 0,13386 0,45337 0,13593
191 0,45833 0,93333 0,45983 0,0677 0,45337 0,06623
192 0,45833 1 0,45971 0,00156 0,45337 0
193 0,5 0 0,50317 0,99588 0,49483 0,99115
194 0,5 0,06667 0,50304 0,92943 0,49483 0,92671
195 0,5 0,13333 0,50291 0,863 0,49483 0,86098
196 0,5 0,2 0,50279 0,7966 0,49483 0,79463
197 0,5 0,26667 0,50266 0,73022 0,49483 0,72829
198 0,5 0,33333 0,50253 0,66387 0,49483 0,66326
199 0,5 0,4 0,5024 0,59754 0,49483 0,59634
200 0,5 0,46667 0,50228 0,53124 0,49483 0,52926
201 0,5 0,53333 0,50215 0,46496 0,49483 0,46292
202 0,5 0,6 0,50202 0,39871 0,49483 0,39658
203 0,5 0,66667 0,50189 0,33248 0,49483 0,33024
204 0,5 0,73333 0,50177 0,26627 0,49483 0,26581
205 0,5 0,8 0,50164 0,20009 0,49483 0,19578
206 0,5 0,86667 0,50151 0,13394 0,49483 0,13519
176
Таблица 7. Данные выборки. Продолжение
207 0,5 0,93333 0,50139 0,06781 0,49483 0,06536
208 0,5 1 0,50126 0,0017 0,49483 0
209 0,54167 0 0,54479 0,99554 0,5363 0,99189
210 0,54167 0,06667 0,54466 0,92912 0,5363 0,92671
211 0,54167 0,13333 0,54452 0,86273 0,5363 0,86098
212 0,54167 0,2 0,54439 0,79636 0,5363 0,79463
213 0,54167 0,26667 0,54425 0,73001 0,5363 0,72829
214 0,54167 0,33333 0,54412 0,66369 0,5363 0,66326
215 0,54167 0,4 0,54398 0,5974 0,5363 0,59634
216 0,54167 0,46667 0,54385 0,53113 0,5363 0,52926
217 0,54167 0,53333 0,54371 0,46488 0,5363 0,46292
218 0,54167 0,6 0,54358 0,39866 0,5363 0,39658
219 0,54167 0,66667 0,54344 0,33246 0,5363 0,33024
220 0,54167 0,73333 0,54331 0,26629 0,5363 0,26581
221 0,54167 0,8 0,54317 0,20014 0,5363 0,19578
222 0,54167 0,86667 0,54304 0,13401 0,5363 0,13445
223 0,54167 0,93333 0,5429 0,06792 0,5363 0,06448
224 0,54167 1 0,54277 0,00184 0,5363 0
225 0,58333 0 0,58638 0,9952 0,57776 0,99263
226 0,58333 0,06667 0,58623 0,92881 0,57776 0,92671
227 0,58333 0,13333 0,58609 0,86245 0,57776 0,86098
228 0,58333 0,2 0,58595 0,79611 0,57776 0,79463
229 0,58333 0,26667 0,5858 0,7298 0,57776 0,72829
230 0,58333 0,33333 0,58566 0,66351 0,57776 0,66326
231 0,58333 0,4 0,58552 0,59725 0,57776 0,59634
232 0,58333 0,46667 0,58538 0,53101 0,57776 0,52926
233 0,58333 0,53333 0,58523 0,4648 0,57776 0,46292
234 0,58333 0,6 0,58509 0,39861 0,57776 0,39658
235 0,58333 0,66667 0,58495 0,33244 0,57776 0,33024
236 0,58333 0,73333 0,58481 0,2663 0,57776 0,26581
237 0,58333 0,8 0,58466 0,20018 0,57776 0,19578
238 0,58333 0,86667 0,58452 0,13409 0,57776 0,13369
239 0,58333 0,93333 0,58438 0,06802 0,57776 0,06361
240 0,58333 1 0,58424 0,00198 0,57776 0
241 0,625 0 0,62792 0,99486 0,61922 0,99337
242 0,625 0,06667 0,62777 0,9285 0,61922 0,92671
243 0,625 0,13333 0,62762 0,86217 0,61922 0,86098
244 0,625 0,2 0,62747 0,79587 0,61922 0,79463
245 0,625 0,26667 0,62732 0,72959 0,61922 0,72829
246 0,625 0,33333 0,62717 0,66333 0,61922 0,66326
247 0,625 0,4 0,62702 0,5971 0,61922 0,59634
248 0,625 0,46667 0,62687 0,5309 0,61922 0,52926
249 0,625 0,53333 0,62672 0,46471 0,61922 0,46292
250 0,625 0,6 0,62657 0,39855 0,61922 0,39658
251 0,625 0,66667 0,62642 0,33242 0,61922 0,33024
252 0,625 0,73333 0,62627 0,26631 0,61922 0,26581
253 0,625 0,8 0,62612 0,20023 0,61922 0,19578
177
Таблица 7. Данные выборки. Продолжение
254 0,625 0,86667 0,62597 0,13417 0,61922 0,13291
255 0,625 0,93333 0,62582 0,06813 0,61922 0,06273
256 0,625 1 0,62567 0,00212 0,61922 0
257 0,66667 0 0,66942 0,99452 0,66069 0,9941
258 0,66667 0,06667 0,66926 0,9282 0,66069 0,92671
259 0,66667 0,13333 0,6691 0,8619 0,66069 0,86098
260 0,66667 0,2 0,66895 0,79563 0,66069 0,79463
261 0,66667 0,26667 0,66879 0,72938 0,66069 0,72829
262 0,66667 0,33333 0,66863 0,66315 0,66069 0,66326
263 0,66667 0,4 0,66847 0,59695 0,66069 0,59634
264 0,66667 0,46667 0,66831 0,53078 0,66069 0,52926
265 0,66667 0,53333 0,66816 0,46463 0,66069 0,46292
266 0,66667 0,6 0,668 0,3985 0,66069 0,39658
267 0,66667 0,66667 0,66784 0,3324 0,66069 0,33024
268 0,66667 0,73333 0,66768 0,26633 0,66069 0,26581
269 0,66667 0,8 0,66753 0,20027 0,66069 0,19578
270 0,66667 0,86667 0,66737 0,13424 0,66069 0,13214
271 0,66667 0,93333 0,66721 0,06824 0,66069 0,06186
272 0,66667 1 0,66705 0,00226 0,66069 0
273 0,70833 0 0,71088 0,99418 0,70215 0,99484
274 0,70833 0,06667 0,71072 0,92789 0,70215 0,92671
275 0,70833 0,13333 0,71055 0,86162 0,70215 0,86098
276 0,70833 0,2 0,71039 0,79538 0,70215 0,79463
277 0,70833 0,26667 0,71022 0,72917 0,70215 0,72829
278 0,70833 0,33333 0,71006 0,66297 0,70215 0,66326
279 0,70833 0,4 0,70989 0,59681 0,70215 0,59634
280 0,70833 0,46667 0,70972 0,53066 0,70215 0,52926
281 0,70833 0,53333 0,70956 0,46455 0,70215 0,46292
282 0,70833 0,6 0,70939 0,39845 0,70215 0,39658
283 0,70833 0,66667 0,70923 0,33238 0,70215 0,33024
284 0,70833 0,73333 0,70906 0,26634 0,70215 0,26581
285 0,70833 0,8 0,7089 0,20032 0,70215 0,19578
286 0,70833 0,86667 0,70873 0,13432 0,70215 0,13136
287 0,70833 0,93333 0,70857 0,06835 0,70215 0,06098
288 0,70833 1 0,7084 0,0024 0,70215 0
289 0,75 0 0,75231 0,99384 0,74362 0,99558
290 0,75 0,06667 0,75213 0,92758 0,74362 0,92671
291 0,75 0,13333 0,75196 0,86135 0,74362 0,86098
292 0,75 0,2 0,75179 0,79514 0,74362 0,79463
293 0,75 0,26667 0,75161 0,72896 0,74362 0,72829
294 0,75 0,33333 0,75144 0,6628 0,74362 0,66326
295 0,75 0,4 0,75127 0,59666 0,74362 0,59634
296 0,75 0,46667 0,75109 0,53055 0,74362 0,52926
297 0,75 0,53333 0,75092 0,46446 0,74362 0,46292
298 0,75 0,6 0,75075 0,3984 0,74362 0,39658
299 0,75 0,66667 0,75057 0,33236 0,74362 0,33024
300 0,75 0,73333 0,7504 0,26635 0,74362 0,26581
178
Таблица 7. Данные выборки. Продолжение
301 0,75 0,8 0,75023 0,20036 0,74362 0,19578
302 0,75 0,86667 0,75006 0,1344 0,74362 0,13058
303 0,75 0,93333 0,74988 0,06846 0,74362 0,0601
304 0,75 1 0,74971 0,00254 0,74362 0
305 0,79167 0 0,79369 0,9935 0,78549 0,99631
306 0,79167 0,06667 0,79351 0,92727 0,78549 0,92671
307 0,79167 0,13333 0,79333 0,86107 0,78549 0,86098
308 0,79167 0,2 0,79315 0,7949 0,78549 0,79463
309 0,79167 0,26667 0,79296 0,72874 0,78549 0,72829
310 0,79167 0,33333 0,79278 0,66262 0,78549 0,66326
311 0,79167 0,4 0,7926 0,59651 0,78549 0,59634
312 0,79167 0,46667 0,79242 0,53043 0,78549 0,52926
313 0,79167 0,53333 0,79224 0,46438 0,78549 0,46292
314 0,79167 0,6 0,79206 0,39835 0,78549 0,39658
315 0,79167 0,66667 0,79188 0,33234 0,78549 0,33024
316 0,79167 0,73333 0,7917 0,26636 0,78549 0,26581
317 0,79167 0,8 0,79152 0,20041 0,78549 0,19578
318 0,79167 0,86667 0,79134 0,13447 0,78549 0,1298
319 0,79167 0,93333 0,79116 0,06857 0,78549 0,05923
320 0,79167 1 0,79098 0,00268 0,78549 0
321 0,83333 0 0,83503 0,99316 0,82737 0,99705
322 0,83333 0,06667 0,83484 0,92697 0,82737 0,92671
323 0,83333 0,13333 0,83465 0,8608 0,82737 0,86098
324 0,83333 0,2 0,83446 0,79465 0,82737 0,79463
325 0,83333 0,26667 0,83428 0,72853 0,82737 0,72829
326 0,83333 0,33333 0,83409 0,66244 0,82737 0,66326
327 0,83333 0,4 0,8339 0,59637 0,82737 0,59634
328 0,83333 0,46667 0,83371 0,53032 0,82737 0,52926
329 0,83333 0,53333 0,83352 0,4643 0,82737 0,46292
330 0,83333 0,6 0,83334 0,3983 0,82737 0,39658
331 0,83333 0,66667 0,83315 0,33233 0,82737 0,33024
332 0,83333 0,73333 0,83296 0,26638 0,82737 0,26581
333 0,83333 0,8 0,83277 0,20045 0,82737 0,19578
334 0,83333 0,86667 0,83258 0,13455 0,82737 0,12902
335 0,83333 0,93333 0,8324 0,06867 0,82737 0,05835
336 0,83333 1 0,83221 0,00282 0,82737 0
337 0,875 0 0,87633 0,99282 0,86967 0,99779
338 0,875 0,06667 0,87614 0,92666 0,86967 0,92671
339 0,875 0,13333 0,87594 0,86052 0,86967 0,86098
340 0,875 0,2 0,87574 0,79441 0,86967 0,79463
341 0,875 0,26667 0,87555 0,72832 0,86967 0,72829
342 0,875 0,33333 0,87535 0,66226 0,86967 0,66326
343 0,875 0,4 0,87516 0,59622 0,86967 0,59634
344 0,875 0,46667 0,87496 0,53021 0,86967 0,52926
345 0,875 0,53333 0,87477 0,46421 0,86967 0,46292
346 0,875 0,6 0,87457 0,39825 0,86967 0,39658
347 0,875 0,66667 0,87438 0,33231 0,86967 0,33024
348 0,875 0,73333 0,87418 0,26639 0,86967 0,26581
179
Таблица 7. Данные выборки. Продолжение
349 0,875 0,8 0,87398 0,2005 0,86967 0,19578
350 0,875 0,86667 0,87379 0,13463 0,86967 0,12825
351 0,875 0,93333 0,87359 0,06878 0,86967 0,05748
352 0,875 1 0,8734 0,00296 0,86967 0
353 0,91667 0 0,91759 0,99248 0,91196 0,99853
354 0,91667 0,06667 0,91739 0,92635 0,91196 0,92671
355 0,91667 0,13333 0,91719 0,86025 0,91196 0,86098
356 0,91667 0,2 0,91698 0,79417 0,91196 0,79463
357 0,91667 0,26667 0,91678 0,72811 0,91196 0,72829
358 0,91667 0,33333 0,91658 0,66208 0,91196 0,66326
359 0,91667 0,4 0,91637 0,59607 0,91196 0,59634
360 0,91667 0,46667 0,91617 0,53009 0,91196 0,52926
361 0,91667 0,53333 0,91597 0,46413 0,91196 0,46292
362 0,91667 0,6 0,91577 0,3982 0,91196 0,39658
363 0,91667 0,66667 0,91556 0,33229 0,91196 0,33024
364 0,91667 0,73333 0,91536 0,2664 0,91196 0,26581
365 0,91667 0,8 0,91516 0,20054 0,91196 0,19578
366 0,91667 0,86667 0,91495 0,1347 0,91196 0,12747
367 0,91667 0,93333 0,91475 0,06889 0,91196 0,0566
368 0,91667 1 0,91455 0,0031 0,91196 0
369 0,95833 0 0,95882 0,99215 0,9512 0,99926
370 0,95833 0,06667 0,95861 0,92605 0,95159 0,92671
371 0,95833 0,13333 0,9584 0,85998 0,95199 0,86098
372 0,95833 0,2 0,95818 0,79393 0,95238 0,79463
373 0,95833 0,26667 0,95797 0,7279 0,95277 0,72829
374 0,95833 0,33333 0,95776 0,6619 0,95317 0,66326
375 0,95833 0,4 0,95755 0,59593 0,95356 0,59634
376 0,95833 0,46667 0,95734 0,52998 0,95396 0,52926
377 0,95833 0,53333 0,95713 0,46405 0,95435 0,46292
378 0,95833 0,6 0,95692 0,39815 0,95474 0,39658
379 0,95833 0,66667 0,95671 0,33227 0,95514 0,33024
380 0,95833 0,73333 0,9565 0,26641 0,95553 0,26581
381 0,95833 0,8 0,95629 0,20058 0,95593 0,19578
382 0,95833 0,86667 0,95608 0,13478 0,95632 0,12669
383 0,95833 0,93333 0,95587 0,069 0,95671 0,05573
384 0,95833 1 0,95566 0,00324 0,95711 0
385 1 0 1 0,99181 0,99431 1
386 1 0,06667 0,99978 0,92574 0,99468 0,92671
387 1 0,13333 0,99956 0,8597 0,99505 0,86098
388 1 0,2 0,99934 0,79369 0,99543 0,79463
389 1 0,26667 0,99913 0,72769 0,9958 0,72829
390 1 0,33333 0,99891 0,66172 0,99617 0,66326
391 1 0,4 0,99869 0,59578 0,99655 0,59634
392 1 0,46667 0,99847 0,52986 0,99692 0,52926
393 1 0,53333 0,99825 0,46397 0,99729 0,46292
394 1 0,6 0,99804 0,3981 0,99767 0,39658
395 1 0,66667 0,99782 0,33225 0,99804 0,33024
180
Таблица 7. Данные выборки. Окончание
396 1 0,73333 0,9976 0,26643 0,99842 0,26581
397 1 0,8 0,99738 0,20063 0,99882 0,19578
398 1 0,86667 0,99716 0,13485 0,99921 0,12591
399 1 0,93333 0,99695 0,0691 0,99961 0,05485
400 1 1 0,99673 0,00338 1 0
i. Снижение размерности пространства признаков
Проведем снижение размерности пространства признаков,
представленных в таблице 6.
Для отбора наиболее информативных признаков используем
корреляционный анализ.
Возьмем в качестве меры сходства между признаками внутри кластера
коэффициент корреляции. Коэффициент корреляции между двумя
признаками заболевания определяется как:
n
j
jj
n
i
ii
n
i
n
j
jjii
ij
xxxx
xxxx
1
2
1
2
1 1 , (7)
где x - оценка первичных моментов
n
ji
jiji xn
x1,
,,
1. (8)
Если коэффициент линейной корреляции близок к 1, то
корреляционная связь между переменными положительная, близкая к
линейной. Если коэффициент линейной корреляции близок к -1, то
корреляционная связь между переменными отрицательная, близкая к
линейной. Если коэффициент линейной корреляции близок к нулю, то
между переменными имеется слабая корреляционная связь. Для независимых
переменных коэффициент линейной корреляции равен нулю.
Корреляционный анализ будем выполнять в программном пакете
Statistica 6.0.
Результаты корреляционного анализа представлены в таблице 8.
181
Таблица 8. Результаты корреляционного анализа
X1 X2 X3 X4 Y1 Y2
X1 1 0,196 0,182 0,166 0,863 0,209
X2 0,196 1 0,132 0,131 0,227 0,847
X3 0,182 0,132 1 0,065 0,955 0,129
X4 0,166 0,131 0,065 1 0,205 0,966
Y1 0,863 0,227 0,955 0,205 1 0,019
Y2 0,209 0,847 0,129 0,966 0,019 1
По результатам корреляционного анализа выяснилось, что все
признаки являются информативными.
Вывод: Наиболее информативными признаками являются: Х1, Х2,
X3, Х4, имеющие наибольшие значения коэффициента корреляции с
результирующим показателем.
j. Формирование обучающей и тестирующей (контролирующей выборок)
Используя данные таблицы 8 и выбрав все имеющиеся признаки
сформируем обучающую (таблица 9) и тестирующую выборку (таблица 10).
При построении выборок придерживались следующих положений:
1. Обучающая и тестирующая выборка должны содержать
примерно одинаковое количество элементов.
2. Элементы каждой выборки должны содержать как можно больше
различных значений результирующего показателя, включая максимальные и
минимальные значения.
Таблица 9. Обучающая выборка
№ X1 X2 X3 X4 Y1 Y2
1 0 0 0,00052 1 0,00532 0,98231
2 0 0,13333 0,00045 0,86634 0,00461 0,86098
3 0 0,26667 0,00038 0,73279 0,0039 0,72829
4 0 0,4 0,00031 0,59933 0,00319 0,59634
5 0 0,53333 0,00024 0,46597 0,00248 0,46292
6 0 0,66667 0,00017 0,33271 0,00177 0,33024
7 0 0,8 0,0001 0,19955 0,00106 0,19578
8 0 0,93333 0 0,06649 0,00035 0,07586
9 0,04167 0 0,04263 0,99965 0,04471 0,98305
10 0,04167 0,13333 0,04255 0,86606 0,044 0,86098
11 0,04167 0,26667 0,04246 0,73257 0,04329 0,72829
12 0,04167 0,4 0,04238 0,59918 0,04258 0,59634
182
Таблица 9. Обучающая выборка. Продолжение
13 0,04167 0,53333 0,04229 0,46589 0,04187 0,46292
14 0,04167 0,66667 0,04221 0,33269 0,04116 0,33024
15 0,04167 0,8 0,04212 0,1996 0,04045 0,19578
16 0,04167 0,93333 0,04204 0,0666 0,03975 0,07499
17 0,08333 0 0,0847 0,99931 0,08492 0,98378
18 0,08333 0,13333 0,0846 0,86578 0,08417 0,86098
19 0,08333 0,26667 0,0845 0,73236 0,08342 0,72829
20 0,08333 0,4 0,0844 0,59903 0,08268 0,59634
21 0,08333 0,53333 0,0843 0,4658 0,08193 0,46292
22 0,08333 0,66667 0,0842 0,33267 0,08118 0,33024
23 0,08333 0,8 0,0841 0,19964 0,08044 0,19578
24 0,08333 0,93333 0,084 0,06671 0,07969 0,07411
25 0,125 0 0,12673 0,99897 0,12555 0,98452
26 0,125 0,13333 0,12662 0,8655 0,1248 0,86098
27 0,125 0,26667 0,1265 0,73214 0,12406 0,72829
28 0,125 0,4 0,12638 0,59888 0,12331 0,59634
29 0,125 0,53333 0,12627 0,46572 0,12257 0,46292
30 0,125 0,66667 0,12615 0,33265 0,12182 0,33024
31 0,125 0,8 0,12604 0,19969 0,12107 0,19578
32 0,125 0,93333 0,12592 0,06682 0,12033 0,07323
33 0,16667 0 0,16872 0,99862 0,16624 0,98526
34 0,16667 0,13333 0,16859 0,86523 0,16574 0,86098
35 0,16667 0,26667 0,16846 0,73193 0,1652 0,72829
36 0,16667 0,4 0,16833 0,59873 0,16462 0,59634
37 0,16667 0,53333 0,1682 0,46563 0,16398 0,46292
38 0,16667 0,66667 0,16806 0,33263 0,16328 0,33024
39 0,16667 0,8 0,16793 0,19973 0,16254 0,19578
40 0,16667 0,93333 0,1678 0,06693 0,16179 0,07236
41 0,20833 0 0,21067 0,99828 0,20707 0,98599
42 0,20833 0,13333 0,21052 0,86495 0,20707 0,86098
43 0,20833 0,26667 0,21038 0,73172 0,20707 0,72829
44 0,20833 0,4 0,21023 0,59858 0,20707 0,59634
45 0,20833 0,53333 0,21008 0,46555 0,20707 0,46292
46 0,20833 0,66667 0,20993 0,33261 0,20707 0,33024
47 0,20833 0,8 0,20979 0,19978 0,20707 0,19578
48 0,20833 0,93333 0,20964 0,06704 0,20707 0,07148
49 0,25 0 0,25258 0,99793 0,24994 0,98673
50 0,25 0,13333 0,25241 0,86467 0,2492 0,86098
51 0,25 0,26667 0,25225 0,7315 0,24845 0,72829
52 0,25 0,4 0,25209 0,59843 0,2477 0,59634
53 0,25 0,53333 0,25193 0,46547 0,24696 0,46292
54 0,25 0,66667 0,25176 0,3326 0,24621 0,33024
55 0,25 0,8 0,2516 0,19982 0,24547 0,19578
56 0,25 0,93333 0,25144 0,06715 0,24472 0,07061
57 0,29167 0 0,29444 0,99759 0,29141 0,98747
58 0,29167 0,13333 0,29427 0,86439 0,29066 0,86098
59 0,29167 0,26667 0,29409 0,73129 0,28992 0,72829
60 0,29167 0,4 0,29391 0,59829 0,28917 0,59634
183
Таблица 9. Обучающая выборка. Продолжение
61 0,29167 0,53333 0,29373 0,46538 0,28842 0,46292
62 0,29167 0,66667 0,29355 0,33258 0,28768 0,33024
63 0,29167 0,8 0,29338 0,19987 0,28693 0,19578
64 0,29167 0,93333 0,2932 0,06726 0,28618 0,06973
65 0,33333 0 0,33627 0,99725 0,32897 0,98821
66 0,33333 0,13333 0,33608 0,86411 0,32897 0,86098
67 0,33333 0,26667 0,33588 0,73108 0,32897 0,72829
68 0,33333 0,4 0,33569 0,59814 0,32897 0,59634
69 0,33333 0,53333 0,3355 0,4653 0,32897 0,46292
70 0,33333 0,66667 0,3353 0,33256 0,32897 0,33024
71 0,33333 0,8 0,33511 0,19991 0,32897 0,19578
72 0,33333 0,93333 0,33492 0,06737 0,32897 0,06886
73 0,375 0 0,37806 0,99691 0,37044 0,98894
74 0,375 0,13333 0,37785 0,86383 0,37044 0,86098
75 0,375 0,26667 0,37764 0,73086 0,37044 0,72829
76 0,375 0,4 0,37743 0,59799 0,37044 0,59634
77 0,375 0,53333 0,37722 0,46521 0,37044 0,46292
78 0,375 0,66667 0,37701 0,33254 0,37044 0,33024
79 0,375 0,8 0,3768 0,19996 0,37044 0,19578
80 0,375 0,93333 0,37659 0,06748 0,37044 0,06798
81 0,41667 0 0,4198 0,99656 0,4119 0,98968
82 0,41667 0,13333 0,41958 0,86356 0,4119 0,86098
83 0,41667 0,26667 0,41935 0,73065 0,4119 0,72829
84 0,41667 0,4 0,41913 0,59784 0,4119 0,59634
85 0,41667 0,53333 0,4189 0,46513 0,4119 0,46292
86 0,41667 0,66667 0,41868 0,33252 0,4119 0,33024
87 0,41667 0,8 0,41846 0,2 0,4119 0,19578
88 0,41667 0,93333 0,41823 0,06759 0,4119 0,06711
89 0,45833 0 0,46151 0,99622 0,45337 0,99042
90 0,45833 0,13333 0,46127 0,86328 0,45337 0,86098
91 0,45833 0,26667 0,46103 0,73044 0,45337 0,72829
92 0,45833 0,4 0,46079 0,59769 0,45337 0,59634
93 0,45833 0,53333 0,46055 0,46505 0,45337 0,46292
94 0,45833 0,66667 0,46031 0,3325 0,45337 0,33024
95 0,45833 0,8 0,46007 0,20005 0,45337 0,19578
96 0,45833 0,93333 0,45983 0,0677 0,45337 0,06623
97 0,5 0 0,50317 0,99588 0,49483 0,99115
98 0,5 0,13333 0,50291 0,863 0,49483 0,86098
99 0,5 0,26667 0,50266 0,73022 0,49483 0,72829
100 0,5 0,4 0,5024 0,59754 0,49483 0,59634
101 0,5 0,53333 0,50215 0,46496 0,49483 0,46292
102 0,5 0,66667 0,50189 0,33248 0,49483 0,33024
103 0,5 0,8 0,50164 0,20009 0,49483 0,19578
104 0,5 0,93333 0,50139 0,06781 0,49483 0,06536
105 0,54167 0 0,54479 0,99554 0,5363 0,99189
106 0,54167 0,13333 0,54452 0,86273 0,5363 0,86098
107 0,54167 0,26667 0,54425 0,73001 0,5363 0,72829
108 0,54167 0,4 0,54398 0,5974 0,5363 0,59634
184
Таблица 9. Обучающая выборка. Продолжение
109 0,54167 0,53333 0,54371 0,46488 0,5363 0,46292
110 0,54167 0,66667 0,54344 0,33246 0,5363 0,33024
111 0,54167 0,8 0,54317 0,20014 0,5363 0,19578
112 0,54167 0,93333 0,5429 0,06792 0,5363 0,06448
113 0,58333 0 0,58638 0,9952 0,57776 0,99263
114 0,58333 0,13333 0,58609 0,86245 0,57776 0,86098
115 0,58333 0,26667 0,5858 0,7298 0,57776 0,72829
116 0,58333 0,4 0,58552 0,59725 0,57776 0,59634
117 0,58333 0,53333 0,58523 0,4648 0,57776 0,46292
118 0,58333 0,66667 0,58495 0,33244 0,57776 0,33024
119 0,58333 0,8 0,58466 0,20018 0,57776 0,19578
120 0,58333 0,93333 0,58438 0,06802 0,57776 0,06361
121 0,625 0 0,62792 0,99486 0,61922 0,99337
122 0,625 0,13333 0,62762 0,86217 0,61922 0,86098
123 0,625 0,26667 0,62732 0,72959 0,61922 0,72829
124 0,625 0,4 0,62702 0,5971 0,61922 0,59634
125 0,625 0,53333 0,62672 0,46471 0,61922 0,46292
126 0,625 0,66667 0,62642 0,33242 0,61922 0,33024
127 0,625 0,8 0,62612 0,20023 0,61922 0,19578
128 0,625 0,93333 0,62582 0,06813 0,61922 0,06273
129 0,66667 0 0,66942 0,99452 0,66069 0,9941
130 0,66667 0,13333 0,6691 0,8619 0,66069 0,86098
131 0,66667 0,26667 0,66879 0,72938 0,66069 0,72829
132 0,66667 0,4 0,66847 0,59695 0,66069 0,59634
133 0,66667 0,53333 0,66816 0,46463 0,66069 0,46292
134 0,66667 0,66667 0,66784 0,3324 0,66069 0,33024
135 0,66667 0,8 0,66753 0,20027 0,66069 0,19578
136 0,66667 0,93333 0,66721 0,06824 0,66069 0,06186
137 0,70833 0 0,71088 0,99418 0,70215 0,99484
138 0,70833 0,13333 0,71055 0,86162 0,70215 0,86098
139 0,70833 0,26667 0,71022 0,72917 0,70215 0,72829
140 0,70833 0,4 0,70989 0,59681 0,70215 0,59634
141 0,70833 0,53333 0,70956 0,46455 0,70215 0,46292
142 0,70833 0,66667 0,70923 0,33238 0,70215 0,33024
143 0,70833 0,8 0,7089 0,20032 0,70215 0,19578
144 0,70833 0,93333 0,70857 0,06835 0,70215 0,06098
145 0,75 0 0,75231 0,99384 0,74362 0,99558
146 0,75 0,13333 0,75196 0,86135 0,74362 0,86098
147 0,75 0,26667 0,75161 0,72896 0,74362 0,72829
148 0,75 0,4 0,75127 0,59666 0,74362 0,59634
149 0,75 0,53333 0,75092 0,46446 0,74362 0,46292
150 0,75 0,66667 0,75057 0,33236 0,74362 0,33024
151 0,75 0,8 0,75023 0,20036 0,74362 0,19578
152 0,75 0,93333 0,74988 0,06846 0,74362 0,0601
153 0,79167 0 0,79369 0,9935 0,78549 0,99631
154 0,79167 0,13333 0,79333 0,86107 0,78549 0,86098
155 0,79167 0,26667 0,79296 0,72874 0,78549 0,72829
156 0,79167 0,4 0,7926 0,59651 0,78549 0,59634
185
Таблица 9. Обучающая выборка. Окончание
157 0,79167 0,53333 0,79224 0,46438 0,78549 0,46292
158 0,79167 0,66667 0,79188 0,33234 0,78549 0,33024
159 0,79167 0,8 0,79152 0,20041 0,78549 0,19578
160 0,79167 0,93333 0,79116 0,06857 0,78549 0,05923
161 0,83333 0 0,83503 0,99316 0,82737 0,99705
162 0,83333 0,13333 0,83465 0,8608 0,82737 0,86098
163 0,83333 0,26667 0,83428 0,72853 0,82737 0,72829
164 0,83333 0,4 0,8339 0,59637 0,82737 0,59634
165 0,83333 0,53333 0,83352 0,4643 0,82737 0,46292
166 0,83333 0,66667 0,83315 0,33233 0,82737 0,33024
167 0,83333 0,8 0,83277 0,20045 0,82737 0,19578
168 0,83333 0,93333 0,8324 0,06867 0,82737 0,05835
169 0,875 0 0,87633 0,99282 0,86967 0,99779
170 0,875 0,13333 0,87594 0,86052 0,86967 0,86098
171 0,875 0,26667 0,87555 0,72832 0,86967 0,72829
172 0,875 0,4 0,87516 0,59622 0,86967 0,59634
173 0,875 0,53333 0,87477 0,46421 0,86967 0,46292
174 0,875 0,66667 0,87438 0,33231 0,86967 0,33024
175 0,875 0,8 0,87398 0,2005 0,86967 0,19578
176 0,875 0,93333 0,87359 0,06878 0,86967 0,05748
177 0,91667 0 0,91759 0,99248 0,91196 0,99853
178 0,91667 0,13333 0,91719 0,86025 0,91196 0,86098
179 0,91667 0,26667 0,91678 0,72811 0,91196 0,72829
180 0,91667 0,4 0,91637 0,59607 0,91196 0,59634
181 0,91667 0,53333 0,91597 0,46413 0,91196 0,46292
182 0,91667 0,66667 0,91556 0,33229 0,91196 0,33024
183 0,91667 0,8 0,91516 0,20054 0,91196 0,19578
184 0,91667 0,93333 0,91475 0,06889 0,91196 0,0566
185 0,95833 0 0,95882 0,99215 0,9512 0,99926
186 0,95833 0,13333 0,9584 0,85998 0,95199 0,86098
187 0,95833 0,26667 0,95797 0,7279 0,95277 0,72829
188 0,95833 0,4 0,95755 0,59593 0,95356 0,59634
189 0,95833 0,53333 0,95713 0,46405 0,95435 0,46292
190 0,95833 0,66667 0,95671 0,33227 0,95514 0,33024
191 0,95833 0,8 0,95629 0,20058 0,95593 0,19578
192 0,95833 0,93333 0,95587 0,069 0,95671 0,05573
193 1 0 1 0,99181 0,99431 1
194 1 0,13333 0,99956 0,8597 0,99505 0,86098
195 1 0,26667 0,99913 0,72769 0,9958 0,72829
196 1 0,4 0,99869 0,59578 0,99655 0,59634
197 1 0,53333 0,99825 0,46397 0,99729 0,46292
198 1 0,66667 0,99782 0,33225 0,99804 0,33024
199 1 0,8 0,99738 0,20063 0,99882 0,19578
200 1 0,93333 0,99695 0,0691 0,99961 0,05485
186
Таблица 10. Контролирующая выборка
№ X1 X2 X3 X4 Y1 Y2
1 0 0,06667 0,00048 0,93316 0,00496 0,92671
2 0 0,2 0,00041 0,79955 0,00425 0,79463
3 0 0,33333 0,00035 0,66605 0,00355 0,66326
4 0 0,46667 0,00028 0,53264 0,00284 0,52926
5 0 0,6 0,00021 0,39933 0,00213 0,39658
6 0 0,73333 0,00014 0,26612 0,00142 0,26581
7 0 0,86667 0 0,13301 0,00071 0,14404
8 0 1 0 0 0 0
9 0,04167 0,06667 0,04259 0,93285 0,04435 0,92671
10 0,04167 0,2 0,0425 0,79931 0,04365 0,79463
11 0,04167 0,33333 0,04242 0,66586 0,04294 0,66326
12 0,04167 0,46667 0,04233 0,53252 0,04223 0,52926
13 0,04167 0,6 0,04225 0,39928 0,04152 0,39658
14 0,04167 0,73333 0,04216 0,26613 0,04081 0,26581
15 0,04167 0,86667 0,04208 0,13309 0,0401 0,1433
16 0,04167 1 0,042 0,00014 0,03939 0
17 0,08333 0,06667 0,08465 0,93253 0,08454 0,92671
18 0,08333 0,2 0,08455 0,79906 0,0838 0,79463
19 0,08333 0,33333 0,08445 0,66568 0,08305 0,66326
20 0,08333 0,46667 0,08435 0,5324 0,0823 0,52926
21 0,08333 0,6 0,08425 0,39923 0,08156 0,39658
22 0,08333 0,73333 0,08415 0,26615 0,08081 0,26581
23 0,08333 0,86667 0,08405 0,13317 0,08007 0,14256
24 0,08333 1 0,08395 0,00028 0,07932 0
25 0,125 0,06667 0,12667 0,93222 0,12518 0,92671
26 0,125 0,2 0,12656 0,79881 0,12443 0,79463
27 0,125 0,33333 0,12644 0,6655 0,12369 0,66326
28 0,125 0,46667 0,12633 0,53229 0,12294 0,52926
29 0,125 0,6 0,12621 0,39917 0,12219 0,39658
30 0,125 0,73333 0,12609 0,26616 0,12145 0,26581
31 0,125 0,86667 0,12598 0,13324 0,1207 0,14183
32 0,125 1 0,12586 0,00043 0,11995 0
33 0,16667 0,06667 0,16866 0,93191 0,166 0,92671
34 0,16667 0,2 0,16852 0,79856 0,16548 0,79463
35 0,16667 0,33333 0,16839 0,66532 0,16492 0,66326
36 0,16667 0,46667 0,16826 0,53217 0,16431 0,52926
37 0,16667 0,6 0,16813 0,39912 0,16364 0,39658
38 0,16667 0,73333 0,168 0,26617 0,16291 0,26581
39 0,16667 0,86667 0,16787 0,13332 0,16216 0,14109
40 0,16667 1 0,16774 0,00057 0,16142 0
41 0,20833 0,06667 0,2106 0,9316 0,20707 0,92671
42 0,20833 0,2 0,21045 0,79832 0,20707 0,79463
43 0,20833 0,33333 0,2103 0,66514 0,20707 0,66326
44 0,20833 0,46667 0,21015 0,53205 0,20707 0,52926
45 0,20833 0,6 0,21001 0,39907 0,20707 0,39658
46 0,20833 0,73333 0,20986 0,26618 0,20707 0,26581
47 0,20833 0,86667 0,20971 0,1334 0,20707 0,14035
187
Таблица 10. Контролирующая выборка. Продолжение
48 0,20833 1 0,20957 0,00071 0,20707 0
49 0,25 0,06667 0,2525 0,93129 0,24957 0,92671
50 0,25 0,2 0,25233 0,79807 0,24882 0,79463
51 0,25 0,33333 0,25217 0,66496 0,24808 0,66326
52 0,25 0,46667 0,25201 0,53194 0,24733 0,52926
53 0,25 0,6 0,25185 0,39902 0,24659 0,39658
54 0,25 0,73333 0,25168 0,2662 0,24584 0,26581
55 0,25 0,86667 0,25152 0,13348 0,24509 0,13961
56 0,25 1 0,25136 0,00085 0,24435 0
57 0,29167 0,06667 0,29436 0,93098 0,29103 0,92671
58 0,29167 0,2 0,29418 0,79783 0,29029 0,79463
59 0,29167 0,33333 0,294 0,66477 0,28954 0,66326
60 0,29167 0,46667 0,29382 0,53182 0,2888 0,52926
61 0,29167 0,6 0,29364 0,39897 0,28805 0,39658
62 0,29167 0,73333 0,29347 0,26621 0,2873 0,26581
63 0,29167 0,86667 0,29329 0,13355 0,28656 0,13888
64 0,29167 1 0,29311 0,00099 0,28581 0
65 0,33333 0,06667 0,33617 0,93067 0,32897 0,92671
66 0,33333 0,2 0,33598 0,79758 0,32897 0,79463
67 0,33333 0,33333 0,33579 0,66459 0,32897 0,66326
68 0,33333 0,46667 0,33559 0,5317 0,32897 0,52926
69 0,33333 0,6 0,3354 0,39891 0,32897 0,39658
70 0,33333 0,73333 0,33521 0,26622 0,32897 0,26581
71 0,33333 0,86667 0,33501 0,13363 0,32897 0,13814
72 0,33333 1 0,33482 0,00114 0,32897 0
73 0,375 0,06667 0,37795 0,93036 0,37044 0,92671
74 0,375 0,2 0,37774 0,79734 0,37044 0,79463
75 0,375 0,33333 0,37753 0,66441 0,37044 0,66326
76 0,375 0,46667 0,37732 0,53159 0,37044 0,52926
77 0,375 0,6 0,37712 0,39886 0,37044 0,39658
78 0,375 0,73333 0,37691 0,26624 0,37044 0,26581
79 0,375 0,86667 0,3767 0,13371 0,37044 0,1374
80 0,375 1 0,37649 0,00128 0,37044 0
81 0,41667 0,06667 0,41969 0,93005 0,4119 0,92671
82 0,41667 0,2 0,41946 0,79709 0,4119 0,79463
83 0,41667 0,33333 0,41924 0,66423 0,4119 0,66326
84 0,41667 0,46667 0,41902 0,53147 0,4119 0,52926
85 0,41667 0,6 0,41879 0,39881 0,4119 0,39658
86 0,41667 0,73333 0,41857 0,26625 0,4119 0,26581
87 0,41667 0,86667 0,41834 0,13378 0,4119 0,13667
88 0,41667 1 0,41812 0,00142 0,4119 0
89 0,45833 0,06667 0,46139 0,92974 0,45337 0,92671
90 0,45833 0,2 0,46115 0,79685 0,45337 0,79463
91 0,45833 0,33333 0,46091 0,66405 0,45337 0,66326
92 0,45833 0,46667 0,46067 0,53136 0,45337 0,52926
93 0,45833 0,6 0,46043 0,39876 0,45337 0,39658
94 0,45833 0,73333 0,46019 0,26626 0,45337 0,26581
95 0,45833 0,86667 0,45995 0,13386 0,45337 0,13593
188
Таблица 10. Контролирующая выборка. Продолжение
96 0,45833 1 0,45971 0,00156 0,45337 0
97 0,5 0,06667 0,50304 0,92943 0,49483 0,92671
98 0,5 0,2 0,50279 0,7966 0,49483 0,79463
99 0,5 0,33333 0,50253 0,66387 0,49483 0,66326
100 0,5 0,46667 0,50228 0,53124 0,49483 0,52926
101 0,5 0,6 0,50202 0,39871 0,49483 0,39658
102 0,5 0,73333 0,50177 0,26627 0,49483 0,26581
103 0,5 0,86667 0,50151 0,13394 0,49483 0,13519
104 0,5 1 0,50126 0,0017 0,49483 0
105 0,54167 0,06667 0,54466 0,92912 0,5363 0,92671
106 0,54167 0,2 0,54439 0,79636 0,5363 0,79463
107 0,54167 0,33333 0,54412 0,66369 0,5363 0,66326
108 0,54167 0,46667 0,54385 0,53113 0,5363 0,52926
109 0,54167 0,6 0,54358 0,39866 0,5363 0,39658
110 0,54167 0,73333 0,54331 0,26629 0,5363 0,26581
111 0,54167 0,86667 0,54304 0,13401 0,5363 0,13445
112 0,54167 1 0,54277 0,00184 0,5363 0
113 0,58333 0,06667 0,58623 0,92881 0,57776 0,92671
114 0,58333 0,2 0,58595 0,79611 0,57776 0,79463
115 0,58333 0,33333 0,58566 0,66351 0,57776 0,66326
116 0,58333 0,46667 0,58538 0,53101 0,57776 0,52926
117 0,58333 0,6 0,58509 0,39861 0,57776 0,39658
118 0,58333 0,73333 0,58481 0,2663 0,57776 0,26581
119 0,58333 0,86667 0,58452 0,13409 0,57776 0,13369
120 0,58333 1 0,58424 0,00198 0,57776 0
121 0,625 0,06667 0,62777 0,9285 0,61922 0,92671
122 0,625 0,2 0,62747 0,79587 0,61922 0,79463
123 0,625 0,33333 0,62717 0,66333 0,61922 0,66326
124 0,625 0,46667 0,62687 0,5309 0,61922 0,52926
125 0,625 0,6 0,62657 0,39855 0,61922 0,39658
126 0,625 0,73333 0,62627 0,26631 0,61922 0,26581
127 0,625 0,86667 0,62597 0,13417 0,61922 0,13291
128 0,625 1 0,62567 0,00212 0,61922 0
129 0,66667 0,06667 0,66926 0,9282 0,66069 0,92671
130 0,66667 0,2 0,66895 0,79563 0,66069 0,79463
131 0,66667 0,33333 0,66863 0,66315 0,66069 0,66326
132 0,66667 0,46667 0,66831 0,53078 0,66069 0,52926
133 0,66667 0,6 0,668 0,3985 0,66069 0,39658
134 0,66667 0,73333 0,66768 0,26633 0,66069 0,26581
135 0,66667 0,86667 0,66737 0,13424 0,66069 0,13214
136 0,66667 1 0,66705 0,00226 0,66069 0
137 0,70833 0,06667 0,71072 0,92789 0,70215 0,92671
138 0,70833 0,2 0,71039 0,79538 0,70215 0,79463
139 0,70833 0,33333 0,71006 0,66297 0,70215 0,66326
140 0,70833 0,46667 0,70972 0,53066 0,70215 0,52926
141 0,70833 0,6 0,70939 0,39845 0,70215 0,39658
142 0,70833 0,73333 0,70906 0,26634 0,70215 0,26581
143 0,70833 0,86667 0,70873 0,13432 0,70215 0,13136
189
Таблица 10. Контролирующая выборка. Продолжение
144 0,70833 1 0,7084 0,0024 0,70215 0
145 0,75 0,06667 0,75213 0,92758 0,74362 0,92671
146 0,75 0,2 0,75179 0,79514 0,74362 0,79463
147 0,75 0,33333 0,75144 0,6628 0,74362 0,66326
148 0,75 0,46667 0,75109 0,53055 0,74362 0,52926
149 0,75 0,6 0,75075 0,3984 0,74362 0,39658
150 0,75 0,73333 0,7504 0,26635 0,74362 0,26581
151 0,75 0,86667 0,75006 0,1344 0,74362 0,13058
152 0,75 1 0,74971 0,00254 0,74362 0
153 0,79167 0,06667 0,79351 0,92727 0,78549 0,92671
154 0,79167 0,2 0,79315 0,7949 0,78549 0,79463
155 0,79167 0,33333 0,79278 0,66262 0,78549 0,66326
156 0,79167 0,46667 0,79242 0,53043 0,78549 0,52926
157 0,79167 0,6 0,79206 0,39835 0,78549 0,39658
158 0,79167 0,73333 0,7917 0,26636 0,78549 0,26581
159 0,79167 0,86667 0,79134 0,13447 0,78549 0,1298
160 0,79167 1 0,79098 0,00268 0,78549 0
161 0,83333 0,06667 0,83484 0,92697 0,82737 0,92671
162 0,83333 0,2 0,83446 0,79465 0,82737 0,79463
163 0,83333 0,33333 0,83409 0,66244 0,82737 0,66326
164 0,83333 0,46667 0,83371 0,53032 0,82737 0,52926
165 0,83333 0,6 0,83334 0,3983 0,82737 0,39658
166 0,83333 0,73333 0,83296 0,26638 0,82737 0,26581
167 0,83333 0,86667 0,83258 0,13455 0,82737 0,12902
168 0,83333 1 0,83221 0,00282 0,82737 0
169 0,875 0,06667 0,87614 0,92666 0,86967 0,92671
170 0,875 0,2 0,87574 0,79441 0,86967 0,79463
171 0,875 0,33333 0,87535 0,66226 0,86967 0,66326
172 0,875 0,46667 0,87496 0,53021 0,86967 0,52926
173 0,875 0,6 0,87457 0,39825 0,86967 0,39658
174 0,875 0,73333 0,87418 0,26639 0,86967 0,26581
175 0,875 0,86667 0,87379 0,13463 0,86967 0,12825
176 0,875 1 0,8734 0,00296 0,86967 0
177 0,91667 0,06667 0,91739 0,92635 0,91196 0,92671
178 0,91667 0,2 0,91698 0,79417 0,91196 0,79463
179 0,91667 0,33333 0,91658 0,66208 0,91196 0,66326
180 0,91667 0,46667 0,91617 0,53009 0,91196 0,52926
181 0,91667 0,6 0,91577 0,3982 0,91196 0,39658
182 0,91667 0,73333 0,91536 0,2664 0,91196 0,26581
183 0,91667 0,86667 0,91495 0,1347 0,91196 0,12747
184 0,91667 1 0,91455 0,0031 0,91196 0
185 0,95833 0,06667 0,95861 0,92605 0,95159 0,92671
186 0,95833 0,2 0,95818 0,79393 0,95238 0,79463
187 0,95833 0,33333 0,95776 0,6619 0,95317 0,66326
188 0,95833 0,46667 0,95734 0,52998 0,95396 0,52926
189 0,95833 0,6 0,95692 0,39815 0,95474 0,39658
190 0,95833 0,73333 0,9565 0,26641 0,95553 0,26581
191 0,95833 0,86667 0,95608 0,13478 0,95632 0,12669
190
Таблица 10. Контролирующая выборка. Окончание
192 0,95833 1 0,95566 0,00324 0,95711 0
193 1 0,06667 0,99978 0,92574 0,99468 0,92671
194 1 0,2 0,99934 0,79369 0,99543 0,79463
195 1 0,33333 0,99891 0,66172 0,99617 0,66326
196 1 0,46667 0,99847 0,52986 0,99692 0,52926
197 1 0,6 0,99804 0,3981 0,99767 0,39658
198 1 0,73333 0,9976 0,26643 0,99842 0,26581
199 1 0,86667 0,99716 0,13485 0,99921 0,12591
200 1 1 0,99673 0,00338 1 0
191
Приложение 2. Листинг программ
Программа определения угла обзора
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace Углы_обзора
{
public partial class Form1 : Form
{
public Form1()
{ InitializeComponent();
}
double Visota = 0;//Высота камеры для определения угла обзора
double Ygol_po_Vertikali = 0;//Угол обзора по вертикали
double Ygol_po_Gorizontali = 0;//Угол обзора по горизонтали
double[] Gorizont_Liniya_B;//Массив горизонтальных линий
double[] Vertical_Liniya_B;//Массив вертикальных линий
Bitmap Image;//Изображение
private void Form1_Load(object sender, EventArgs e)
{
Image = new Bitmap("Исходное.jpg", true);//Записываем выбранный файл в переменную Chtenie_Dannix(out Gorizont_Liniya_B, out Vertical_Liniya_B);//Записываем горизонтальные и
вертикальные линии
MessageBox.Show("Введите высоту камеры");
}
private void Chtenie_Dannix(out double[] Gorizont_Liniya_B, out double[]
Vertical_Liniya_B)//Модуль чтения данных
{
int Count_Gor = System.IO.File.ReadAllLines("Gorizont_B.txt").Length;//Путь файла
расположения горизонтальных линий
int Count_Vert = System.IO.File.ReadAllLines("Vertikal_B.txt").Length;//Путь файла расположения вертикальных линий
//Записываем горизонтальные линии
Gorizont_Liniya_B = new double[Count_Gor];//Массив горизонтальных линий
StreamReader ReadFile = new StreamReader("Gorizont_B.txt", Encoding.Default);//Чтение файла
string Input = null;
int i = 0;
while ((Input = ReadFile.ReadLine()) != null)//Пока не конец файла
{
Gorizont_Liniya_B[i] = Convert.ToDouble(Input);//Записываем линии
i++;
}
//Записываем вертикальные линии Vertical_Liniya_B = new double[Count_Vert];//Массив вертикальных линий
ReadFile = new StreamReader("Vertikal_B.txt", Encoding.Default);//Чтение файла
Input = null;
i = 0;
while ((Input = ReadFile.ReadLine()) != null)//Пока не конец файла
{
192
Vertical_Liniya_B[i] = Convert.ToDouble(Input);//Записываем линии
i++;
}
}
private void button1_Click(object sender, EventArgs e)
{
Visota = Convert.ToDouble(textBox1.Text);//Преобразуем введеную высоту в double
if (Visota != 0)//Проверяем введена ли высота {
Ygol_po_Vertikali = Opredelenie_Max_Ygla_Obzora(Visota, Image.Height,
Gorizont_Liniya_B);//Определение угла обзора по вертикали
Ygol_po_Gorizontali = Opredelenie_Max_Ygla_Obzora(Visota, Image.Width,
Vertical_Liniya_B);//Определение угла обзора по горизонтали
//Вычисляем погрешность угла по горизонтали
double KK = 3;
double a = 1;
double F = 1;
double N = Image.Width+1;
double V = Vertical_Liniya_B.Length - 1; double L = Visota;
//Погрешность угла обзора по горизонтали
double Pogreshnost_ygla_po_gorizontali = (2 * Math.Atan((2 * (KK - a - F) * V + 2 * L * V / N)
/ (4 * L * (L + KK - a - F) + V * (V - 2 * V / N)))) * 180 / Math.PI;
//Вычисляем погрешность угла по вертикали
KK = 3;
a = 1;
F = 1;
N = Image.Height + 1;
V = Gorizont_Liniya_B.Length - 1; L = Visota;
//Погрешность угла обзора по вертикали
double Pogreshnost_ygla_po_vertikali = (2 * Math.Atan((2 * (KK - a - F) * V + 2 * L * V / N) /
(4 * L * (L + KK - a - F) + V * (V - 2 * V / N)))) * 180 / Math.PI;
Zapis(Ygol_po_Gorizontali, Ygol_po_Vertikali, Pogreshnost_ygla_po_gorizontali,
Pogreshnost_ygla_po_vertikali);//Записываем углы в файл
Ygol_po_Gorizontali = Math.Round(Ygol_po_Gorizontali, 3);//Округляем угол обзора до 3-х
знаков после запятой
Ygol_po_Vertikali = Math.Round(Ygol_po_Vertikali, 3);//Округляем угол обзора до 3-х знаков после запятой
Pogreshnost_ygla_po_vertikali = Math.Round(Pogreshnost_ygla_po_vertikali, 5);//Округляем
погрешность угла обзора до 5-ти знаков после запятой
Pogreshnost_ygla_po_gorizontali = Math.Round(Pogreshnost_ygla_po_gorizontali,
5);//Округляем погрешность угла обзора до 5-ти знаков после запятой
//Выводим значение углов обзора и их погрешностей на экран
label1.Text = "Угол обзора по горизонтали = " + Ygol_po_Gorizontali + "";
label2.Text = "Угол обзора по вертикали = " + Ygol_po_Vertikali + "";
label5.Text = "Погрешность угла обзора по горизонтали = " +
Pogreshnost_ygla_po_gorizontali + "";
label4.Text = "Погрешность угла обзора по вертикали = " + Pogreshnost_ygla_po_vertikali +
""; }
else
{
MessageBox.Show("Введите высоту камеры");
}
}
193
private double Opredelenie_Max_Ygla_Obzora(double Visota, double Width_or_Height, double[]
Liniya_B)//Определение углов обзора
{
double alpha = (2 * Math.Atan((Liniya_B.Length - 1) / (2 * Visota)));//Вспомогательные
операции
double H = (Math.Abs(Liniya_B[Liniya_B.Length - 1] - Liniya_B[0])) / (2 * Math.Tan(alpha /
2));//Вспомогательные операции
double Angle = (2 * Math.Atan(Width_or_Height / (2 * H))) * 180 / Math.PI;//Вычисление угла
обзора return Angle;//Возвращаем значение угла
}
private void Zapis(double Ygol_po_Gorizontali, double Ygol_po_Vertikali,double Pogr_1, double
Pogr_2)//Модуль записи
{
File.WriteAllText("Ygol_Gorizont.txt", Convert.ToString(Ygol_po_Gorizontali));//Записываем
угол обзора по горизонтали
File.WriteAllText("Ygol_Vertikal.txt", Convert.ToString(Ygol_po_Vertikali));//Записываем угол
обзора по вертикали
File.WriteAllText("Pogresh_Ygol_Gorizont.txt", Convert.ToString(Pogr_1));//Записываем
погрешность угла обзора по горизонтали
File.WriteAllText("Pogresh_Ygol_Vertikal.txt", Convert.ToString(Pogr_2));//Записываем погрешность угла обзора по вертикали
}
}
}
Программа определения положения камеры в пространстве
using System;
using System.Collections.Generic; using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace Координаты_камеры
{ public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Введите смещение");
}
double def(double[,] a) //находим определитель {
double def;
def = a[1,1]*a[2,2]*a[3,3] + a[1,2]*a[2,3]*a[3,1] + a[2,1]*a[3,2]*a[1,3] - a[1,3]*a[2,2]*a[3,1] -
a[1,2]*a[2,1]*a[3,3] - a[1,1]*a[2,3]*a[3,2];
return def;
}
194
private void Opredelenie_Koordinat_Kameri(int Width, int Height, double[] Gorizont_Liniya_B,
double[] Gorizont_Liniya_K, double[] Vertical_Liniya_B, double[] Vertical_Liniya_K, double
Ygol_po_Gorizontali, double Raznica_po_X, double Raznica_po_Y)
{
Ygol_po_Gorizontali = Ygol_po_Gorizontali * Math.PI / 180;//Переводим угол обзора в радианы
//устанавливаем точки А, B, C, D, E
int Ic = 640;
int Jc = 360; int Ia = 40;
int Ja = 560;
int Ib = 940;
int Jb = 260;
int Id = 140;
int Jd = 60;
int Ie = 890;
int Je = 510;
double Xa, Ya, Xb, Yb, Xc, Yc, Xd, Yd, Xe, Ye;
//double Xc = 34.1, Yc = 23, Xa = 2.89, Ya = 36.3, Xb = 51.2, Yb = 15.2, Xd = 25.2, Yd = 58.7, Xe
= 37.5, Ye = 7.3; double Za = 0; double Zb = 0; double Zd = 0; double Ze = 0;
//Определяем координаты точек
Vich_Koord(out Xc, out Yc, Ic, Jc, Gorizont_Liniya_B, Gorizont_Liniya_K, Vertical_Liniya_B,
Vertical_Liniya_K);
Vich_Koord(out Xa, out Ya, Ia, Ja, Gorizont_Liniya_B, Gorizont_Liniya_K, Vertical_Liniya_B,
Vertical_Liniya_K);
Vich_Koord(out Xb, out Yb, Ib, Jb, Gorizont_Liniya_B, Gorizont_Liniya_K, Vertical_Liniya_B,
Vertical_Liniya_K);
Vich_Koord(out Xd, out Yd, Id, Jd, Gorizont_Liniya_B, Gorizont_Liniya_K, Vertical_Liniya_B,
Vertical_Liniya_K);
Vich_Koord(out Xe, out Ye, Ie, Je, Gorizont_Liniya_B, Gorizont_Liniya_K, Vertical_Liniya_B, Vertical_Liniya_K);
Xa = Xa + Raznica_po_X;
Xb = Xb + Raznica_po_X;
Xc = Xc + Raznica_po_X;
Xd = Xd + Raznica_po_X;
Xe = Xe + Raznica_po_X;
Ya = Ya + Raznica_po_Y;
Yb = Yb + Raznica_po_Y;
Yc = Yc + Raznica_po_Y;
Yd = Yd + Raznica_po_Y; Ye = Ye + Raznica_po_Y;
//Определение длин отрезков
double AC = Math.Sqrt((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc));
double BC = Math.Sqrt((Xb - Xc) * (Xb - Xc) + (Yb - Yc) * (Yb - Yc));
double EC = Math.Sqrt((Xe - Xc) * (Xe - Xc) + (Ye - Yc) * (Ye - Yc));
double DC = Math.Sqrt((Xd - Xc) * (Xd - Xc) + (Yd - Yc) * (Yd - Yc));
//Определение углов
double alpha = Math.Atan((Math.Sqrt((Ic - Ia) * (Ic - Ia) + (Jc - Ja) * (Jc - Ja)) * 2 *
Math.Tan(Ygol_po_Gorizontali / 2)) / Width);
double betta = Math.Atan((Math.Sqrt((Ic - Ib) * (Ic - Ib) + (Jc - Jb) * (Jc - Jb)) * 2 *
Math.Tan(Ygol_po_Gorizontali / 2)) / Width);
double alpha1 = Math.Atan((Math.Sqrt((Ic - Id) * (Ic - Id) + (Jc - Jd) * (Jc - Jd)) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / Width);
double betta1 = Math.Atan((Math.Sqrt((Ic - Ie) * (Ic - Ie) + (Jc - Je) * (Jc - Je)) * 2 *
Math.Tan(Ygol_po_Gorizontali / 2)) / Width);
//Решение треугольника 1
double gamma = Math.Atan(Math.Sin(alpha + betta) / ((AC * Math.Sin(betta)) / (BC *
Math.Sin(alpha)) - Math.Cos(alpha + betta)));
195
double AK = AC * Math.Sin(alpha + gamma) / Math.Sin(alpha);//длины отрезков
double BK = (AC + BC) * Math.Sin(gamma) / Math.Sin(alpha + betta);
//Решение треугольника 2
double gamma1 = Math.Atan(Math.Sin(alpha1 + betta1) / ((DC / Math.Sin(alpha1)) / (EC /
Math.Sin(betta1)) - Math.Cos(alpha1 + betta1)));
double DK = DC * Math.Sin(alpha1 + gamma1) / Math.Sin(alpha1); //длины отрезков
double EK = (DC + EC) * Math.Sin(gamma1) / Math.Sin(alpha1 + betta1);
//Определение координат камеры с учетом всех найденных значений
double Xa1, Ya1, Za1, Xb1, Yb1, Zb1, Xd1, Yd1, Zd1, Xe1, Ye1, Ze1; double alphaA = Math.Atan(((Ia - Ic) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
double bettaA = Math.Atan(((Jc - Ja) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
Za1 = -AK / Math.Sqrt(Math.Tan(alphaA) * Math.Tan(alphaA) + Math.Tan(bettaA) *
Math.Tan(bettaA) + 1);
Xa1 = Math.Abs(Za1) * Math.Tan(alphaA);
Ya1 = Math.Abs(Za1) * Math.Tan(bettaA);
double alphaB = Math.Atan(((Ib - Ic) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
double bettaB = Math.Atan(((Jc - Jb) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
Zb1 = -BK / Math.Sqrt(Math.Tan(alphaB) * Math.Tan(alphaB) + Math.Tan(bettaB) *
Math.Tan(bettaB) + 1);
Xb1 = Math.Abs(Zb1) * Math.Tan(alphaB);
Yb1 = Math.Abs(Zb1) * Math.Tan(bettaB);
double alphaD = Math.Atan(((Id - Ic) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
double bettaD = Math.Atan(((Jc - Jd) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
Zd1 = -DK / Math.Sqrt(Math.Tan(alphaD) * Math.Tan(alphaD) + Math.Tan(bettaD) *
Math.Tan(bettaD) + 1);
Xd1 = Math.Abs(Zd1) * Math.Tan(alphaD);
Yd1 = Math.Abs(Zd1) * Math.Tan(bettaD);
double alphaE = Math.Atan(((Ie - Ic) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
double bettaE = Math.Atan(((Jc - Je) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (Width - 1));
Ze1 = -EK / Math.Sqrt(Math.Tan(alphaE) * Math.Tan(alphaE) + Math.Tan(bettaE) * Math.Tan(bettaE) + 1);
Xe1 = Math.Abs(Ze1) * Math.Tan(alphaE);
Ye1 = Math.Abs(Ze1) * Math.Tan(bettaE);
double a = Ya1 * (Zb1 - Ze1) + Yb1 * (Ze1 - Za1) + Ye1 * (Za1 - Zb1);
double b = Za1 * (Xb1 - Xe1) + Zb1 * (Xe1 - Xa1) + Ze1 * (Xa1 - Xb1);
double c = Xa1 * (Yb1 - Ye1) + Xb1 * (Ye1 - Ya1) + Xe1 * (Ya1 - Yb1);
double d = Xa1 * (Ye1 * Zb1 - Yb1 * Ze1) + Xb1 * (Ya1 * Ze1 - Ye1 * Za1) + Xe1 * (Yb1 * Za1 -
Ya1 * Zb1);
//richTextBox1.Text = "A = " + a + "\nB = " + b + "\nC = " + c + "\nD = " + d + "\nXo = " + Xa1 +
"\nYo = " + Ya1 + "\nZo = " + Za1 + "\nX1 = " + Xb1 + "\nY1 = " + Yb1 + "\nZ1 = " + Zb1 + "\nX2 = " + Xd1 +
"\nY2 = " + Yd1 + "\nZ2 = " + Zd1; double Zk = Math.Abs(d / Math.Sqrt(a * a + b * b + c * c));
double RadiusA = Math.Sqrt(AK * AK - Zk * Zk);
double RadiusB = Math.Sqrt(BK * BK - Zk * Zk);
double RadiusD = Math.Sqrt(DK * DK - Zk * Zk);
double RadiusE = Math.Sqrt(EK * EK - Zk * Zk);
double X1 = 0;
double X2 = 0;
double X3 = 0;
double X4 = 0;
double Y1 = 0;
double Y2 = 0;
double Y3 = 0; double Y4 = 0;
int KolvoPeresechenii1;
int KolvoPeresechenii2;
PeresechenieOkrujnostei(Xa, Ya, RadiusA, Xb, Yb, RadiusB, out X1, out Y1, out X2, out Y2, out
KolvoPeresechenii1);
PeresechenieOkrujnostei(Xa, Ya, RadiusA, Xe, Ye, RadiusE, out X3, out Y3, out X4, out Y4, out
KolvoPeresechenii2);
196
double Xk = 0;
double Yk = 0;
if (KolvoPeresechenii1 == 0 || KolvoPeresechenii2 == 0)
{
MessageBox.Show("Окружности не пересекаются");
}
if (KolvoPeresechenii1 == 1 && KolvoPeresechenii2 == 1) {
Xk = (X1 + X3) / 2;
Yk = (Y1 + Y3) / 2;
}
if (KolvoPeresechenii1 == 1 && KolvoPeresechenii2 == 2)
{
double Rast1 = Math.Sqrt((X1 - X3) * (X1 - X3) + (Y1 - Y3) * (Y1 - Y3));
double Rast2 = Math.Sqrt((X1 - X4) * (X1 - X4) + (Y1 - Y4) * (Y1 - Y4));
if (Rast1 < Rast2)
{
Xk = (X1 + X3) / 2;
Yk = (Y1 + Y3) / 2; }
else
{
Xk = (X1 + X4) / 2;
Yk = (Y1 + Y4) / 2;
}
}
if (KolvoPeresechenii1 == 2 && KolvoPeresechenii2 == 2)
{
double Rast1 = Math.Sqrt((X1 - X3) * (X1 - X3) + (Y1 - Y3) * (Y1 - Y3));
double Rast2 = Math.Sqrt((X1 - X4) * (X1 - X4) + (Y1 - Y4) * (Y1 - Y4)); double Rast3 = Math.Sqrt((X2 - X3) * (X2 - X3) + (Y2 - Y3) * (Y2 - Y3));
double Rast4 = Math.Sqrt((X2 - X4) * (X2 - X4) + (Y2 - Y4) * (Y2 - Y4));
if (Rast1 < Rast2 && Rast1 < Rast3 && Rast1 < Rast4)
{
Xk = (X1 + X3) / 2;
Yk = (Y1 + Y3) / 2;
}
if (Rast2 < Rast1 && Rast2 < Rast3 && Rast2 < Rast4)
{
Xk = (X1 + X4) / 2;
Yk = (Y1 + Y4) / 2; }
if (Rast3 < Rast2 && Rast3 < Rast1 && Rast3 < Rast4)
{
Xk = (X2 + X3) / 2;
Yk = (Y2 + Y3) / 2;
}
if (Rast4 < Rast2 && Rast4 < Rast3 && Rast4 < Rast1)
{
Xk = (X2 + X4) / 2;
Yk = (Y2 + Y4) / 2;
}
} //Методом крамера
double a11, a12, a13, a21, a22, a23, a31, a32, a33;
Kramer(Xa1, Ya1, Za1, Xb1, Yb1, Zb1, Xd1, Yd1, Zd1, (Xa - Xk), (Xb - Xk), (Xd - Xk), out a11,
out a21, out a31);
Kramer(Xa1, Ya1, Za1, Xb1, Yb1, Zb1, Xd1, Yd1, Zd1, (Ya - Yk), (Yb - Yk), (Yd - Yk), out a12,
out a22, out a32);
Kramer(Xa1, Ya1, Za1, Xb1, Yb1, Zb1, Xd1, Yd1, Zd1, -Zk, -Zk, -Zk, out a13, out a23, out a33);
197
double Tetta = Math.Acos(a33);
double Fi = Math.Acos(a23 / Math.Sin(Tetta));
double Psi = Math.Asin(a31 / Math.Sin(Tetta));
Zapis(Xk, Yk, Zk, a11, a12, a13, a21, a22, a23, a31, a32, a33);
}
static void Kramer(double a11, double a12, double a13, double a21, double a22, double a23, double
a31, double a32, double a33, double b1, double b2, double b3, out double x, out double y, out double z)
{
double[,] A = new double[4, 4];
A[1, 1] = a11;
A[1, 2] = a12;
A[1, 3] = a13;
A[2, 1] = a21;
A[2, 2] = a22;
A[2, 3] = a23;
A[3, 1] = a31;
A[3, 2] = a32; A[3, 3] = a33;
double D = det(A);
double[,] a = new double[4, 4];
a[1, 1] = b1;
a[1, 2] = a12;
a[1, 3] = a13;
a[2, 1] = b2;
a[2, 2] = a22;
a[2, 3] = a23; a[3, 1] = b3;
a[3, 2] = a32;
a[3, 3] = a33;
double Dx = det(a);
double[,] b = new double[4, 4];
b[1, 1] = a11;
b[1, 2] = b1;
b[1, 3] = a13;
b[2, 1] = a21;
b[2, 2] = b2; b[2, 3] = a23;
b[3, 1] = a31;
b[3, 2] = b3;
b[3, 3] = a33;
double Dy = det(b);
double[,] c = new double[4, 4];
c[1, 1] = a11;
c[1, 2] = a12;
c[1, 3] = b1;
c[2, 1] = a21;
c[2, 2] = a22; c[2, 3] = b2;
c[3, 1] = a31;
c[3, 2] = a32;
c[3, 3] = b3;
double Dz = det(c);
x = Dx / D;
198
y = Dy / D;
z = Dz / D;
}
static double det(double[,] a) //находим определитель
{
double def;
def = a[1, 1] * a[2, 2] * a[3, 3] + a[1, 2] * a[2, 3] * a[3, 1] + a[2, 1] * a[3, 2] * a[1, 3] - a[1, 3] * a[2,
2] * a[3, 1] - a[1, 2] * a[2, 1] * a[3, 3] - a[1, 1] * a[2, 3] * a[3, 2]; return def;
}
static void PeresechenieOkrujnostei(double X1, double Y1, double R1, double X2, double Y2, double
R2, out double Peresech1_X, out double Peresech1_Y, out double Peresech2_X, out double Peresech2_Y, out int
KolvoPeresech)
{
Peresech1_X = 0;
Peresech1_Y = 0;
Peresech2_X = 0;
Peresech2_Y = 0;
KolvoPeresech = 0;
double XP2 = X2 - X1; double YP2 = Y2 - Y1;
double C = (R2 * R2 - R1 * R1 - XP2 * XP2 - YP2 * YP2) / (-2);
double a = YP2 * YP2 + XP2 * XP2;
double b = -2 * YP2 * C;
double e = C * C - R1 * R1 * XP2 * XP2;
double D = b * b - 4 * a * e;
if (D < 0)
{
KolvoPeresech = 0;
}
if (D == 0) {
KolvoPeresech = 1;
Peresech1_Y = (Math.Sqrt(D) - b) / (2 * a);
Peresech1_X = (C - Peresech1_Y * YP2) / XP2;
Peresech1_X = Peresech1_X + X1;
Peresech1_Y = Peresech1_Y + Y1;
}
if (D > 0)
{
KolvoPeresech = 2;
Peresech1_Y = (Math.Sqrt(D) - b) / (2 * a); Peresech1_X = (C - Peresech1_Y * YP2) / XP2;
Peresech2_Y = (-Math.Sqrt(D) - b) / (2 * a);
Peresech2_X = (C - Peresech2_Y * YP2) / XP2;
Peresech1_X = Peresech1_X + X1;
Peresech1_Y = Peresech1_Y + Y1;
Peresech2_X = Peresech2_X + X1;
Peresech2_Y = Peresech2_Y + Y1;
}
}
private void Zapis(double Xcam, double Ycam, double Zcam, double a11, double a12, double a13,
double a21, double a22, double a23, double a31, double a32, double a33) {
//Запись в файл
string[] lines = new string[12];
lines[0] = Convert.ToString(Xcam);
lines[1] = Convert.ToString(Ycam);
lines[2] = Convert.ToString(Zcam);
lines[3] = Convert.ToString(a11);
199
lines[4] = Convert.ToString(a12);
lines[5] = Convert.ToString(a13);
lines[6] = Convert.ToString(a21);
lines[7] = Convert.ToString(a22);
lines[8] = Convert.ToString(a23);
lines[9] = Convert.ToString(a31);
lines[10] = Convert.ToString(a32);
lines[11] = Convert.ToString(a33);
File.WriteAllLines("Polojenie_Kameri.txt", lines);
//label3.Text = label3.Text + Convert.ToString(Xcam);
// label4.Text = label4.Text + Convert.ToString(Ycam);
//label5.Text = label5.Text + Convert.ToString(Zcam);
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" && textBox2.Text != "")
{
int Width;
int Height;
double[] Gorizont_Liniya_B; double[] Gorizont_Liniya_K;
double[] Vertical_Liniya_B;
double[] Vertical_Liniya_K;
double Ygol_po_Gorizontali = 0;
double Raznica_po_X;
double Raznica_po_Y;
Raznica_po_X = Convert.ToDouble(textBox1.Text);
Raznica_po_Y = Convert.ToDouble(textBox2.Text);
Bitmap Image = new Bitmap("Исходное.jpg", true);//Записываем выбранный файл в
переменную
Width = Image.Width; Height = Image.Height;
int Count_Gor = System.IO.File.ReadAllLines("Gorizont_B.txt").Length;
//Записываем горизонтальные линии
Gorizont_Liniya_B = new double[Count_Gor];
StreamReader ReadFile = new StreamReader("Gorizont_B.txt", Encoding.Default);
string Input = null;
int i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{
Gorizont_Liniya_B[i] = Convert.ToDouble(Input); i++;
}
Count_Gor = System.IO.File.ReadAllLines("Gorizont_K.txt").Length;
Gorizont_Liniya_K = new double[Count_Gor];
ReadFile = new StreamReader("Gorizont_K.txt", Encoding.Default);
Input = null;
i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{
Gorizont_Liniya_K[i] = Convert.ToDouble(Input);
i++; }
//Записываем вертикальные линии
int Count_Vert = System.IO.File.ReadAllLines("Vertikal_B.txt").Length;
Vertical_Liniya_B = new double[Count_Vert];
ReadFile = new StreamReader("Vertikal_B.txt", Encoding.Default);
Input = null;
200
i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{
Vertical_Liniya_B[i] = Convert.ToDouble(Input);
i++;
}
Count_Vert = System.IO.File.ReadAllLines("Vertikal_K.txt").Length;
Vertical_Liniya_K = new double[Count_Vert];
ReadFile = new StreamReader("Vertikal_K.txt", Encoding.Default); Input = null;
i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{
Vertical_Liniya_K[i] = Convert.ToDouble(Input);
i++;
}
//Записываем угол
ReadFile = new StreamReader("Ygol_Gorizont.txt", Encoding.Default);
Input = null;
while ((Input = ReadFile.ReadLine()) != null)
{ Ygol_po_Gorizontali = Convert.ToDouble(Input);
}
Opredelenie_Koordinat_Kameri(Width, Height, Gorizont_Liniya_B, Gorizont_Liniya_K,
Vertical_Liniya_B, Vertical_Liniya_K, Ygol_po_Gorizontali, Raznica_po_X, Raznica_po_Y);
}
else
{
MessageBox.Show("Введите смещение");
}
}
private void Vich_Koord(out double X, out double Y, int I, int J, double[] Gorizont_Liniya_B, double[] Gorizont_Liniya_K, double[] Vertical_Liniya_B, double[] Vertical_Liniya_K)//Вычисление координат
точки заданной в пикселях по сетке
{
X = 0;//Координата Х
Y = 0; //Координата Y
int kol_vo_X = 0;//Целая часть Х
int kol_vo_Y = Gorizont_Liniya_B.Length - 2;//Целая часть Y
double drob_X = 0;//Дробная часть Х
double drob_Y = 0;//Дробная часть Y
double left = 0;//Для подсчета дробной части Х
double niz = 0;//Для подсчета дробной части Y double obshaya_X = 0;//Для подсчета дробной части Х
double obshaya_Y = 0;//Для подсчета дробной части Y
//Вычисляем координату по x
for (int i = 1; i < Vertical_Liniya_B.Length; i++)//Проходи по линиям и если не пересекаем
точку то прибавляем
{
if (I < (J * Vertical_Liniya_K[i] + Vertical_Liniya_B[i]))//Если точка пересечена вычисляем
дробную часть
{
obshaya_X = (J * Vertical_Liniya_K[i] + Vertical_Liniya_B[i]) - (J * Vertical_Liniya_K[i - 1]
+ Vertical_Liniya_B[i - 1]);
left = I - (J * Vertical_Liniya_K[i - 1] + Vertical_Liniya_B[i - 1]); drob_X = (left / obshaya_X);
X = kol_vo_X + drob_X;//Складываем целую и дробную части
break;
}
else
{
kol_vo_X++;
201
}
}
//Вычисляем координату по Y
for (int i = 1; i < Gorizont_Liniya_B.Length; i++)//Проходи по линиям и если не пересекаем
точку то вычитаем
{
if ((I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) < J)
{
kol_vo_Y--; }
else//Если точка пересечена вычисляем дробную часть
{
niz = (I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) - J;
obshaya_Y = (I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) - (I * Gorizont_Liniya_K[i -
1] + Gorizont_Liniya_B[i - 1]);
drob_Y = niz / obshaya_Y;
Y = kol_vo_Y + drob_Y;//Складываем целую и дробную части
break;
}
}
}
}
}
Программа поиска объекта на изображении
using System;
using System.Collections.Generic;
using System.ComponentModel; using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace Diplom
{
public partial class Form2 : Form
{ public Form2()
{
InitializeComponent();
}
//Создаем переменные для изображения
private Bitmap BGR_image;
private Bitmap Source;
private Bitmap Source_Copy;
private Bitmap Source_Copy2;
private Bitmap Mat_Ojidanie; private Bitmap Dispersiya;
//Переменные для количества блоков (вводятся на форме)
private int Kolvo_blokov_po_X = 0;
private int Kolvo_blokov_po_Y = 0;
//Номера пикселей по x и по y
private int x, y;
//Количество пикселей в блоке
private int hx = 0;
private int hy = 0;
202
//Номера граничных блоков
private double[] Nomer_po_X;
private double[] Nomer_po_Y;
//Координаты точек
double[] Koordinati_Tochek_X;
double[] Koordinati_Tochek_Y;
int NNN = 0;
//Для апроксимации
private double[] result; private double[,] xyTable, matrix;
//Нажатие кнопки запуска
private void button1_Click(object sender, EventArgs e)
{
//Проверка на введенность данных
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("Введите количество блоков!!!");
}
else
{
//Выбираем файл для загрузки изображений вручную if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
//Записываем выбранный файл в переменные
Source = new Bitmap(openFileDialog1.FileName);
BGR_image = new Bitmap(openFileDialog1.FileName);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message); }
}
//Kонвертируем в черно белое выбранное изображение
MakeGray(Source);
//Нормализуем изображение
Normalize(Source);
Source_Copy = (Bitmap)Source.Clone();
Source_Copy2 = (Bitmap)Source.Clone();
//Создаем новые экземляры
Mat_Ojidanie = new Bitmap(Source.Width, Source.Height); Dispersiya = new Bitmap(Source.Width, Source.Height);
//Считываем значения параметров из textBox
Kolvo_blokov_po_X = Convert.ToInt16(textBox1.Text);
Kolvo_blokov_po_Y = Convert.ToInt16(textBox2.Text);
//Создание массива битовой матрицы
double[,] result = new double[Source.Height, Source.Width];
//Запись битовой матрицы в массив result[y,x]
for (y = 0; y < Source.Height; y++) { //считывание по высоте битовой матрицы
for (x = 0; x < Source.Width; x++)
{ //считывание по ширине битовой матрицы
Color srcPixel = Source.GetPixel(x, y);//читаем по одному пикселу из битовой матрицы
result[y, x] = srcPixel.GetBrightness();//записываем результат в массив
}
}
203
int i; //номер блока по x
int j; //номер блока по y
hx = Source.Width / Kolvo_blokov_po_X; //количество пикселей в блоке по x
hy = Source.Height / Kolvo_blokov_po_Y; //количество пикселей в блоке по y
int[] gx = new int[Kolvo_blokov_po_X + 1]; //массив для хранения границ номеров
пикселей каждого блока по x
int[] gy = new int[Kolvo_blokov_po_Y + 1]; //массив для хранения границ номеров пикселей каждого блока по y
double[,] M = new double[Kolvo_blokov_po_X, Kolvo_blokov_po_Y];//матрица оценок
мат.ожиданий
double[,] D = new double[Kolvo_blokov_po_X, Kolvo_blokov_po_Y];//матрица оценок
дисперсий
//Определяем границы блоков на изображении
for (gx[0] = 0, i = 0; i < Kolvo_blokov_po_X; i++)
{
gx[i + 1] = gx[i] + hx; //определение номеров пикселей для каждого блока
}
for (gy[0] = 0, j = 0; j < Kolvo_blokov_po_Y; j++) {
gy[j + 1] = gy[j] + hy; //определение номеров пикселей для каждого блока
}
//Находим оценку мат.ожидания яркости
Mat_Oshidan(M, result, gx, gy);
//Выводим изображение оценки мат. ожидания от 0 до 1
Vivod1(M, gx, gy);
//Находим нормированную от 0 до 1 оценку дисперсии яркости
Dispersia(D, M, result, gx, gy);
//Выводим изображение нормированной от 0 до 1 оценки дисперсии
Vivod2(D, gx, gy); //Произведем кластеризацию
Klasterizaciya(M);
//Вывод на экран
pictureBox1.Image = Mat_Ojidanie;
pictureBox2.Image = Dispersiya;
pictureBox3.Image = Source_Copy;
pictureBox4.Image = Source;
}
}
//Перевод изобрежения в черно белое
private void MakeGray(Bitmap bmp)
{
// Задаём формат Пикселя.
PixelFormat pxf = PixelFormat.Format24bppRgb;
// Получаем данные картинки.
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
//Блокируем набор данных изображения в памяти
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf);
// Получаем адрес первой линии. IntPtr ptr = bmpData.Scan0;
// Задаём массив из Byte и помещаем в него надор данных.
// int numBytes = bmp.Width * bmp.Height * 3;
//На 3 умножаем - поскольку RGB цвет кодируется 3-мя байтами
//Либо используем вместо Width - Stride
int numBytes = bmpData.Stride * bmp.Height;
204
int widthBytes = bmpData.Stride;
byte[] rgbValues = new byte[numBytes];
// Копируем значения в массив.
Marshal.Copy(ptr, rgbValues, 0, numBytes);
// Перебираем пикселы по 3 байта на каждый и меняем значения
for (int counter = 0; counter < rgbValues.Length; counter += 3)
{ int value = rgbValues[counter] + rgbValues[counter + 1] + rgbValues[counter + 2];
byte color_b = 0;
color_b = Convert.ToByte(value / 3);
rgbValues[counter] = color_b;
rgbValues[counter + 1] = color_b;
rgbValues[counter + 2] = color_b;
}
// Копируем набор данных обратно в изображение
Marshal.Copy(rgbValues, 0, ptr, numBytes);
// Разблокируем набор данных изображения в памяти.
bmp.UnlockBits(bmpData);
}
//Нормализация изображения
private void Normalize(Bitmap bmp)
{
double MinBrightness = 999999;
double MaxBrightness = 0;
double Brightness;
double Koeficent_Normalizacii; //считываем яркость пикселей изображения
for (int y = 0; y < bmp.Height; y++)
{ //считывание по высоте битовой матрицы
for (int x = 0; x < bmp.Width; x++)
{ //считывание по ширине битовой матрицы
Color srcPixel = bmp.GetPixel(x, y);//читаем по одному пикселу из битовой матрицы
Brightness = srcPixel.GetBrightness();//записываем результат
if (MinBrightness > Brightness)//ищем минимальную яркость изображения
{
MinBrightness = Brightness; }
if (MaxBrightness < Brightness)//ищем максимальную яркость изображения
{
MaxBrightness = Brightness;
}
}
}
Koeficent_Normalizacii = 1 / (MaxBrightness - MinBrightness);//вычисляем коэфициент
нормальзации
//производим нормализацию
for (int y = 0; y < bmp.Height; y++) { //считывание по высоте битовой матрицы
for (int x = 0; x < bmp.Width; x++)
{ //считывание по ширине битовой матрицы
Color srcPixel = bmp.GetPixel(x, y);//читаем по одному пикселу из битовой матрицы
Brightness = srcPixel.GetBrightness();//записываем результат
Brightness = (Brightness - MinBrightness) * Koeficent_Normalizacii;//находим
нормальзованную яркость
205
int C = Convert.ToInt16(Brightness * 255);//переодим яркость в диапазон от 0 до 255
if (C > 255)
{
C = 255;
}
bmp.SetPixel(x, y, Color.FromArgb(C, C, C));//устанавливаем нормализованную яркость
на изображении
}
} }
private void Mat_Oshidan(double[,] M, double[,] result, int[] gx, int[] gy)
{
int i, j;
int q; //Количество пикселей в блоке
for (i = 0; i < Kolvo_blokov_po_X; i++)//Вычисление мат.ожидания для всех блоков
for (j = 0; j < Kolvo_blokov_po_Y; j++)
{
M[i, j] = 0;
for (x = gx[i]; x < gx[i + 1]; x++)//Вычисление мат.ожидания для пикселей
for (y = gy[j]; y < gy[j + 1]; y++) //текущего блока M[i, j] = M[i, j] + result[y, x];//Суммируем яркость пикселей
q = (gx[i + 1] - gx[i]) * (gy[j + 1] - gy[j]); //Количество пикселей в блоке
M[i, j] = M[i, j] / q;//Итоговое мат.ожидание блока
}
}
private void Vivod1(double[,] C, int[] gx, int[] gy)
{
int c;
int i, j;
for (i = 0; i < Kolvo_blokov_po_X; i++)//Выводим яркость мат. ожидания //Для
for (j = 0; j < Kolvo_blokov_po_Y; j++)//для всех блоков
{
c = (int)(C[i, j] * (float)255); //Вычисляем цвет
for (x = gx[i]; x < gx[i + 1]; x++) //Выводим яркость
for (y = gy[j]; y < gy[j + 1]; y++) //для пикселей текущего блока
Mat_Ojidanie.SetPixel(x, y, Color.FromArgb(c, c, c)); //устанавливаем цвет пикселя
}
Mat_Ojidanie.Save("Мат_Оидание.jpg");
}
private void Dispersia(double[,] D, double[,] M, double[,] result, int[] gx, int[] gy)
{
double max = 0;//максимум дисперсии текущего блока
double min = 0;//минимум дисперсии
double K;//дисперсия блока
int i, j;
int q; //Количество пикселей в блоке
//вычисление дисперсии для всех блоков
for (i = 0; i < Kolvo_blokov_po_X; i++)
for (j = 0; j < Kolvo_blokov_po_Y; j++)
{
K = 0; //Дисперсия блока //Вычисление дисперсии блока
for (x = gx[i]; x < gx[i + 1]; x++) //изменяем номер пикселя x блока
for (y = gy[j]; y < gy[j + 1]; y++)//изменяем номер пикселя y блока
K = K + ((result[y, x] - M[i, j]) * (result[y, x] - M[i, j]));
q = (gx[i + 1] - gx[i]) * (gy[j + 1] - gy[j]); //Количество пикселей в блоке
K = K / (q - 1); //Не смещенная оценка дисперсии
//Нахождение максимальной и минимальной дисперсии в изображении
206
if (i == 0 && j == 0)
{
min = K;
max = K;
}
if (K > max) max = K;
if (K < min) min = K;
D[i, j] = K;
} //Нормирование дисперсии от 0 до 1
for (i = 0; i < Kolvo_blokov_po_X; i++)
for (j = 0; j < Kolvo_blokov_po_Y; j++)
if ((max - min) != 0)
D[i, j] = (D[i, j] - min) / (max - min);
else
D[i, j] = 0;
}
private void Vivod2(double[,] C, int[] gx, int[] gy)
{
int c; int i, j;
for (i = 0; i < Kolvo_blokov_po_X; i++)//Выводим яркость мат. ожидания
//Для
for (j = 0; j < Kolvo_blokov_po_Y; j++)//для всех блоков
{
c = (int)(C[i, j] * (float)255); //Вычисляем цвет
for (x = gx[i]; x < gx[i + 1]; x++) //Выводим яркость
for (y = gy[j]; y < gy[j + 1]; y++) //для пикселей текущего блока
Dispersiya.SetPixel(x, y, Color.FromArgb(c, c, c)); //устанавливаем цвет пикселя
}
Dispersiya.Save("Дисперсия.jpg"); }
private void Klasterizaciya(double[,] M)
{
int Kol_vo = 0;
//переменные для записи номеров подходящих под параметр блоков
double[] Nomer_Bloka_Po_X = new double[Kolvo_blokov_po_X * Kolvo_blokov_po_Y];
double[] Nomer_Bloka_Po_Y = new double[Kolvo_blokov_po_X * Kolvo_blokov_po_Y];
double min = 1;
double max = 0;
//Вычисление минимального мат.ожидания для всех блоков
for (int i = 0; i < Kolvo_blokov_po_X; i++) for (int j = 0; j < Kolvo_blokov_po_Y; j++)
{
if (min > M[i, j])
{
min = M[i, j];
Nomer_Bloka_Po_X[Kol_vo] = Convert.ToDouble(i);
Nomer_Bloka_Po_Y[Kol_vo] = Convert.ToDouble(j);
}
}
//Вычисление максимального мат.ожидания для всех блоков
for (int i = 0; i < Kolvo_blokov_po_X; i++)
for (int j = 0; j < Kolvo_blokov_po_Y; j++) {
if (max < M[i, j])
{
max = M[i, j];
}
}
int Pred_kol_vo = 0;
207
bool Zavershenie = false;
int[] Sosednie_Bloki_X = new int[] { -1, 1, -1, -1, 0, 1, 0, 1 };
int[] Sosednie_Bloki_Y = new int[] { -1, -1, 1, 0, -1, 0, 1, 1 };
Kol_vo++;
while (Zavershenie != true)
{
Pred_kol_vo = Kol_vo;
//Отбор блоков
for (int i = 0; i < Kolvo_blokov_po_X; i++) for (int j = 0; j < Kolvo_blokov_po_Y; j++)
{
if ((M[i, j] - min) < (max - M[i, j]) * 0.5)
{
int pokazatel = 0;
for (int nom = 0; nom < Kol_vo; nom++)
{
for (int index = 0; index < 8; index++)
{
if (i == (Nomer_Bloka_Po_X[nom] + Sosednie_Bloki_X[index]) && j ==
(Nomer_Bloka_Po_Y[nom] + Sosednie_Bloki_Y[index]))
{ pokazatel++;
}
}
}
if (pokazatel > 0)
{
M[i, j] = 1;
Nomer_Bloka_Po_X[Kol_vo] = Convert.ToDouble(i);
Nomer_Bloka_Po_Y[Kol_vo] = Convert.ToDouble(j);
Kol_vo++;
} }
}
if (Kol_vo == Pred_kol_vo)
{
Zavershenie = true;
}
}
//Переписывание блоков
double[] Nomer_Bloka_Po_X_Konech = new double[Kol_vo];
double[] Nomer_Bloka_Po_Y_Konech = new double[Kol_vo]; for (int nomer = 0; nomer < Kol_vo; nomer++)
{
Nomer_Bloka_Po_X_Konech[nomer] = Nomer_Bloka_Po_X[nomer];
Nomer_Bloka_Po_Y_Konech[nomer] = Nomer_Bloka_Po_Y[nomer];
}
Vivod_Blokov(Nomer_Bloka_Po_X_Konech, Nomer_Bloka_Po_Y_Konech, Color.White);
//Сохраняeм изображение в debug
Source.Save("Кластеризация.jpg");
Poisk_Granichnix_Blokov(Nomer_Bloka_Po_X_Konech, Nomer_Bloka_Po_Y_Konech, Kol_vo);
} private void Poisk_Granichnix_Blokov(double[] Nomer_Bloka_Po_X, double[] Nomer_Bloka_Po_Y,
int k)
{
bool[] Left_Top = new bool[k];
bool[] Right_Top = new bool[k];
bool[] Left_Bottom = new bool[k];
bool[] Right_Bottom = new bool[k];
208
double[] Nomer_X = new double[k];
double[] Nomer_Y = new double[k];
int schet = 0;
//Отбор блоков границы объекта
for (int i = 0; i < k; i++)
{
int flag = 0;
int[] Sosednie_Bloki_X = new int[] { -1, 1, 1, -1, -1, 0, 1, 0 };
int[] Sosednie_Bloki_Y = new int[] { -1, -1, 1, 1, 0, -1, 0, 1 }; for (int j = 0; j < k; j++)
{
for (int index = 0; index < 8; index++)
{
if (Nomer_Bloka_Po_X[j] == (Nomer_Bloka_Po_X[i] + Sosednie_Bloki_X[index]) &&
Nomer_Bloka_Po_Y[j] == (Nomer_Bloka_Po_Y[i] + Sosednie_Bloki_Y[index]))
{
flag++;
}
}
}
if (flag < 8) {
for (int j = 0; j < k; j++)
{
for (int index = 0; index < 4; index++)
{
if (Nomer_Bloka_Po_X[j] == (Nomer_Bloka_Po_X[i] + Sosednie_Bloki_X[index]) &&
Nomer_Bloka_Po_Y[j] == (Nomer_Bloka_Po_Y[i] + Sosednie_Bloki_Y[index]))
{
if (index == 0)
{
Left_Top[schet] = true; }
if (index == 1)
{
Right_Top[schet] = true;
}
if (index == 2)
{
Right_Bottom[schet] = true;
}
if (index == 3)
{ Left_Bottom[schet] = true;
}
}
}
}
Nomer_X[schet] = Nomer_Bloka_Po_X[i];
Nomer_Y[schet] = Nomer_Bloka_Po_Y[i];
schet++;
}
}
//переписывание блоков
Nomer_po_X = new double[schet]; Nomer_po_Y = new double[schet];
for (int i = 0; i < schet; i++)
{
Nomer_po_X[i] = Nomer_X[i];
Nomer_po_Y[i] = Nomer_Y[i];
}
Vivod_Blokov(Nomer_po_X, Nomer_po_Y, Color.OliveDrab);
209
//Сохраняем изображение в debug
Source.Save("Граничные блоки.jpg");
Zapis_Tochek_Granichnix_Blokov(Nomer_po_X, Nomer_po_Y, Left_Top, Right_Top,
Left_Bottom, Right_Bottom);
}
private void Zapis_Tochek_Granichnix_Blokov(double[] Nomer_X, double[] Nomer_Y, bool[]
Left_Top, bool[] Right_Top, bool[] Left_Bottom, bool[] Right_Bottom) {
double[] Koord_Tochek_X = new double[4 * Nomer_X.Length];
double[] Koord_Tochek_Y = new double[4 * Nomer_Y.Length];
int Realnoe_Kol_vo_Tochek = 0;
for (int i = 0; i < Nomer_X.Length; i++)
{
if (Left_Top[i] != true)
{
Koord_Tochek_X[Realnoe_Kol_vo_Tochek] = Nomer_X[i] * hx;
Koord_Tochek_Y[Realnoe_Kol_vo_Tochek] = Nomer_Y[i] * hy;
Realnoe_Kol_vo_Tochek++; }
if (Right_Bottom[i] != true)
{
Koord_Tochek_X[Realnoe_Kol_vo_Tochek] = Nomer_X[i] * hx + hx;
Koord_Tochek_Y[Realnoe_Kol_vo_Tochek] = Nomer_Y[i] * hy + hy;
Realnoe_Kol_vo_Tochek++;
}
if (Left_Bottom[i] != true)
{
Koord_Tochek_X[Realnoe_Kol_vo_Tochek] = Nomer_X[i] * hx;
Koord_Tochek_Y[Realnoe_Kol_vo_Tochek] = Nomer_Y[i] * hy + hy; Realnoe_Kol_vo_Tochek++;
}
if (Right_Top[i] != true)
{
Koord_Tochek_X[Realnoe_Kol_vo_Tochek] = Nomer_X[i] * hx + hx;
Koord_Tochek_Y[Realnoe_Kol_vo_Tochek] = Nomer_Y[i] * hy;
Realnoe_Kol_vo_Tochek++;
}
}
int Tekushee_Kol_vo = Realnoe_Kol_vo_Tochek;
//Устраняем дублирование точек for (int c = 0; c < Tekushee_Kol_vo; c++)
{
for (int d = 0; d < Tekushee_Kol_vo; d++)
{
if (c != d)
{
if (Koord_Tochek_X[c] == Koord_Tochek_X[d] && Koord_Tochek_Y[c] ==
Koord_Tochek_Y[d])
{
Koord_Tochek_X[c] = 999999;
Koord_Tochek_Y[c] = 999999;
Realnoe_Kol_vo_Tochek--; }
}
}
}
double[] Koord_Tochek_X1 = new double[Realnoe_Kol_vo_Tochek];
double[] Koord_Tochek_Y1 = new double[Realnoe_Kol_vo_Tochek];
int r = 0;
210
for (int i = 0; i < Tekushee_Kol_vo; i++)
{
if (Koord_Tochek_Y[i] != 999999 && Koord_Tochek_X[i] != 999999)
{
Koord_Tochek_X1[r] = Koord_Tochek_X[i];
Koord_Tochek_Y1[r] = Koord_Tochek_Y[i];
r++;
}
}
//Переписываем точки по порядку
Koordinati_Tochek_X = new double[Realnoe_Kol_vo_Tochek];
Koordinati_Tochek_Y = new double[Realnoe_Kol_vo_Tochek];
int Tekushii_Nomer = 0;
int Dublirovannaya_Tochka = 0;
for (int n = 0; n < Realnoe_Kol_vo_Tochek; n++)
{
Koordinati_Tochek_X[n] = Koord_Tochek_X1[Tekushii_Nomer];
Koordinati_Tochek_Y[n] = Koord_Tochek_Y1[Tekushii_Nomer];
Koord_Tochek_X1[Tekushii_Nomer] = 999999;
Koord_Tochek_Y1[Tekushii_Nomer] = 999999; double min = 999999999;
double Znachenie_Dublirovannoi_Tochki = 999999999;
for (int t = 0; t < Realnoe_Kol_vo_Tochek; t++)
{
double teku_znach = Math.Sqrt((Koordinati_Tochek_X[n] - Koord_Tochek_X1[t]) *
(Koordinati_Tochek_X[n] - Koord_Tochek_X1[t]) + (Koordinati_Tochek_Y[n] - Koord_Tochek_Y1[t]) *
(Koordinati_Tochek_Y[n] - Koord_Tochek_Y1[t]));
if (min >= teku_znach)
{
if (min == teku_znach)
{ Znachenie_Dublirovannoi_Tochki = teku_znach;
Dublirovannaya_Tochka = Tekushii_Nomer;
}
min = teku_znach;
Tekushii_Nomer = t;
}
}
if (Znachenie_Dublirovannoi_Tochki == min && Koord_Tochek_X1[Dublirovannaya_Tochka]
!= 999999 && n > 1)
{
int dubl_schet = 0; int tekush_schet = 0;
for (int i = 0; i < Nomer_X.Length; i++)
{
if (Koord_Tochek_X1[Dublirovannaya_Tochka] == Nomer_X[i] * hx &&
Koord_Tochek_Y1[Dublirovannaya_Tochka] == Nomer_Y[i] * hy)
{
dubl_schet++;
}
if ((Koord_Tochek_X1[Dublirovannaya_Tochka] == (Nomer_X[i] * hx + hx)) &&
(Koord_Tochek_Y1[Dublirovannaya_Tochka] == Nomer_Y[i] * hy))
{ dubl_schet++;
}
if ((Koord_Tochek_X1[Dublirovannaya_Tochka] == Nomer_X[i] * hx) &&
(Koord_Tochek_Y1[Dublirovannaya_Tochka] == (Nomer_Y[i] * hy + hy)))
{
dubl_schet++;
}
211
if ((Koord_Tochek_X1[Dublirovannaya_Tochka] == (Nomer_X[i] * hx + hx)) &&
(Koord_Tochek_Y1[Dublirovannaya_Tochka] == (Nomer_Y[i] * hy + hy)))
{
dubl_schet++;
}
if (Koord_Tochek_X1[Tekushii_Nomer] == Nomer_X[i] * hx &&
Koord_Tochek_Y1[Tekushii_Nomer] == Nomer_Y[i] * hy)
{ tekush_schet++;
}
if ((Koord_Tochek_X1[Tekushii_Nomer] == (Nomer_X[i] * hx + hx)) &&
(Koord_Tochek_Y1[Tekushii_Nomer] == Nomer_Y[i] * hy))
{
tekush_schet++;
}
if ((Koord_Tochek_X1[Tekushii_Nomer] == Nomer_X[i] * hx) &&
(Koord_Tochek_Y1[Tekushii_Nomer] == (Nomer_Y[i] * hy + hy)))
{
tekush_schet++;
} if ((Koord_Tochek_X1[Tekushii_Nomer] == (Nomer_X[i] * hx + hx)) &&
(Koord_Tochek_Y1[Tekushii_Nomer] == (Nomer_Y[i] * hy + hy)))
{
tekush_schet++;
}
}
if (dubl_schet < tekush_schet)
{
Tekushii_Nomer = Dublirovannaya_Tochka;
}
} }
//Создаем массивы точек замкнутый (Добавляем точки вперед и назад)
double[] Zamkn_Tochka_X = new double[Koordinati_Tochek_X.Length + 6];
double[] Zamkn_Tochka_Y = new double[Koordinati_Tochek_Y.Length + 6];
Zamkn_Tochka_X[0] = Koordinati_Tochek_X[Koordinati_Tochek_X.Length - 3];
Zamkn_Tochka_Y[0] = Koordinati_Tochek_Y[Koordinati_Tochek_Y.Length - 3];
Zamkn_Tochka_X[1] = Koordinati_Tochek_X[Koordinati_Tochek_X.Length - 2];
Zamkn_Tochka_Y[1] = Koordinati_Tochek_Y[Koordinati_Tochek_Y.Length - 2];
Zamkn_Tochka_X[2] = Koordinati_Tochek_X[Koordinati_Tochek_X.Length - 1];
Zamkn_Tochka_Y[2] = Koordinati_Tochek_Y[Koordinati_Tochek_Y.Length - 1]; for (int h = 0; h < Koordinati_Tochek_X.Length; h++)
{
Zamkn_Tochka_X[h + 3] = Koordinati_Tochek_X[h];
Zamkn_Tochka_Y[h + 3] = Koordinati_Tochek_Y[h];
}
Zamkn_Tochka_X[Zamkn_Tochka_X.Length - 3] = Koordinati_Tochek_X[0];
Zamkn_Tochka_Y[Zamkn_Tochka_Y.Length - 3] = Koordinati_Tochek_Y[0];
Zamkn_Tochka_X[Zamkn_Tochka_X.Length - 2] = Koordinati_Tochek_X[1];
Zamkn_Tochka_Y[Zamkn_Tochka_Y.Length - 2] = Koordinati_Tochek_Y[1];
Zamkn_Tochka_X[Zamkn_Tochka_X.Length - 1] = Koordinati_Tochek_X[2];
Zamkn_Tochka_Y[Zamkn_Tochka_Y.Length - 1] = Koordinati_Tochek_Y[2];
// Viravnivanie_Tochek(Zamkn_Tochka_X, Zamkn_Tochka_Y);
Vivod_Linii(Zamkn_Tochka_X, Zamkn_Tochka_Y);
Vivod_Tochek(Zamkn_Tochka_X, Zamkn_Tochka_Y, Color.Red);
//Peregib(Zamkn_Tochka_X, Zamkn_Tochka_Y);
// Naimen_Kvadrati(Zamkn_Tochka_X, Zamkn_Tochka_Y);
Cepnoi_Kod(Zamkn_Tochka_X, Zamkn_Tochka_Y);
212
Source_Copy2.Save("Точки.jpg");
}
private void Vivod_Blokov(double[] Nomer_po_X, double[] Nomer_po_Y, Color color)
{
//Выделение найденных блоков белым цветом
for (int n = 0; n < Nomer_po_X.Length; n++)
{ for (int z = 0; z < (Source.Width / Kolvo_blokov_po_X); z++)//прохождение всех пикселей
блока по горизонтали
{
int x = Convert.ToInt16(Nomer_po_X[n] * Source.Width / Kolvo_blokov_po_X + z);
for (int m = 0; m < (Source.Height / Kolvo_blokov_po_Y); m++)//прохождение всех
пикселей блока по вертикали
{
int y = Convert.ToInt16(Nomer_po_Y[n] * Source.Height / Kolvo_blokov_po_Y + m);
Source.SetPixel(x, y, color);//установка цвета пикселя
}
}
} }
private void Vivod_Tochek(double[] nomer_pixel_in_X, double[] nomer_pixel_in_Y, Color color)
{
//Вывод точек
Graphics gr = Graphics.FromImage(Source_Copy2);
Pen pen = new Pen(color, 2);//Задаем цвет
for (int r = 0; r < nomer_pixel_in_X.Length - 1; r++)//Для точек внутри
{
gr.DrawEllipse(pen, Convert.ToInt16(nomer_pixel_in_X[r]),
Convert.ToInt16(nomer_pixel_in_Y[r]), 1, 1);//Рисуем красные точки
} Source_Copy2.Save("Точки.jpg");
}
private void Vivod_Linii(double[] nomer_pixel_in_X, double[] nomer_pixel_in_Y)
{
//Вывод линий
Graphics gr = Graphics.FromImage(Source_Copy2);
Pen pen = new Pen(Color.Blue, 2);//Задаем цвет
for (int r = 0; r < nomer_pixel_in_X.Length - 1; r++)//Для точек внутри
{
gr.DrawLine(pen, Convert.ToInt16(nomer_pixel_in_X[r]), Convert.ToInt16(nomer_pixel_in_Y[r]), Convert.ToInt16(nomer_pixel_in_X[r + 1]),
Convert.ToInt16(nomer_pixel_in_Y[r + 1]));//Рисуем красные точки
}
Source_Copy2.Save("Точки.jpg");
}
private void Peregib(double[] Zamkn_Tochka_X, double[] Zamkn_Tochka_Y)
{
double[] Peregib = new double[Koordinati_Tochek_X.Length];
for (int i = 6; i < Zamkn_Tochka_X.Length-6; i++)
{
//Вычисляем угол слева
double a_left = Math.Abs(Zamkn_Tochka_X[i]-Zamkn_Tochka_X[i-6]); double b_left = Math.Abs(Zamkn_Tochka_Y[i]-Zamkn_Tochka_Y[i-6]);
double Angle_Left;
if (a_left == 0 || b_left == 0)
{
Angle_Left = 0;
}
else
213
{
Angle_Left = Math.Atan(b_left / a_left) * 180 / Math.PI;
}
//Вычисляе угол справа
double a_right = Math.Abs(Zamkn_Tochka_X[i] - Zamkn_Tochka_X[i + 6]);
double b_right = Math.Abs(Zamkn_Tochka_Y[i] - Zamkn_Tochka_Y[i + 6]);
double Angle_Right;
if (a_right == 0 || b_right == 0)
{ Angle_Right = 0;
}
else
{
Angle_Right = Math.Atan(b_right / a_right) * 180 / Math.PI;
}
Peregib[i-6] = Math.Abs(Angle_Left - Angle_Right);
//Вывод точек
Graphics gr = Graphics.FromImage(Source_Copy2);
Pen pen = new Pen(Color.YellowGreen, 4);//Задаем цвет
gr.DrawEllipse(pen, Convert.ToInt16(Zamkn_Tochka_X[i]),
Convert.ToInt16(Zamkn_Tochka_Y[i]), 2, 2);//Рисуем красные точки Source_Copy2.Save("Точки.jpg");
}
for (int j = 0; j < Peregib.Length; j++)
{
double MAX = 0;
int Nomer = 0;
for (int k = 0; k < Peregib.Length; k++)
{
if (MAX < Peregib[k])
{ MAX = Peregib[k];
Nomer = k;
}
}
Peregib[Nomer] = 0;
//Вывод точек
Graphics gr = Graphics.FromImage(Source_Copy2);
Pen pen = new Pen(Color.Red, 2);//Задаем цвет
gr.DrawEllipse(pen, Convert.ToInt16(Koordinati_Tochek_X[Nomer]),
Convert.ToInt16(Koordinati_Tochek_Y[Nomer]), 1, 1);//Рисуем красные точки
Source_Copy2.Save("Точки.jpg");
}
}
private void Cepnoi_Kod(double[] Zamkn_Tochka_X, double[] Zamkn_Tochka_Y)
{
double [] Cepnoi_Kod = new double[Zamkn_Tochka_X.Length-1];
double[] Vipuklost = new double[Cepnoi_Kod.Length];
double[,] Summa = new double[3,Vipuklost.Length-6];
double[] Konech_Summa = new double[Vipuklost.Length - 6];
for (int i = 0; i < Cepnoi_Kod.Length; i++)
{ if (Zamkn_Tochka_X[i + 1] == Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] <
Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 0;
}
if (Zamkn_Tochka_X[i + 1] > Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] <
Zamkn_Tochka_Y[i])
214
{
Cepnoi_Kod[i] = 1;
}
if (Zamkn_Tochka_X[i + 1] > Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] ==
Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 2;
}
if (Zamkn_Tochka_X[i + 1] > Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] > Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 3;
}
if (Zamkn_Tochka_X[i + 1] == Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] >
Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 4;
}
if (Zamkn_Tochka_X[i + 1] < Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] >
Zamkn_Tochka_Y[i])
{ Cepnoi_Kod[i] = 5;
}
if (Zamkn_Tochka_X[i + 1] < Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] ==
Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 6;
}
if (Zamkn_Tochka_X[i + 1] < Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i + 1] <
Zamkn_Tochka_Y[i])
{
Cepnoi_Kod[i] = 7; }
}
for (int j = 0; j < Vipuklost.Length-1; j++)
{
Vipuklost[j] = -1;
if (Cepnoi_Kod[j] == 0 && (Cepnoi_Kod[j + 1] == 2||Cepnoi_Kod[j + 1] == 6))
{
Vipuklost[j] = 1;
}
if (Cepnoi_Kod[j] == 2 && Cepnoi_Kod[j + 1] == 4)
{ Vipuklost[j] = 1;
}
if (Cepnoi_Kod[j] == 6 && Cepnoi_Kod[j + 1] == 4)
{
Vipuklost[j] = 1;
}
if(Cepnoi_Kod[j]==Cepnoi_Kod[j+1])
{
Vipuklost[j] = 0;
}
}
for (int j = 3; j < Vipuklost.Length - 3; j++) {
Summa[0,j-3] = Vipuklost[j - 3] + Vipuklost[j - 2] + Vipuklost[j - 1] + Vipuklost[j] + Vipuklost[j
+ 1] + Vipuklost[j + 2] + Vipuklost[j + 3];
}
for (int j = 3; j < Vipuklost.Length - 3; j++)
{
215
Summa[1, j-3] = Vipuklost[j - 2] + Vipuklost[j - 1] + Vipuklost[j] + Vipuklost[j + 1] +
Vipuklost[j + 2];
}
for (int j = 3; j < Vipuklost.Length - 3; j++)
{
Summa[2, j-3] = Vipuklost[j - 1] + Vipuklost[j] + Vipuklost[j + 1];
}
for (int i = 0; i < Konech_Summa.Length; i++)
{ Konech_Summa[i] = Summa[0, i] + Summa[1, i] + Summa[2, i];
if (Math.Abs(Konech_Summa[i]) > 1)
{
//Вывод точек
Graphics gr = Graphics.FromImage(Source_Copy2);
Pen pen = new Pen(Color.YellowGreen, 4);//Задаем цвет
gr.DrawEllipse(pen, Convert.ToInt16(Koordinati_Tochek_X[i]),
Convert.ToInt16(Koordinati_Tochek_Y[i]), 1, 1);//Рисуем красные точки
}
}
Source_Copy2.Save("Точки.jpg");
}
private void Viravnivanie_Tochek(double[] Zamkn_Tochka_X, double[] Zamkn_Tochka_Y)
{
double[] Tochka_X = new double[Zamkn_Tochka_X.Length];
double[] Tochka_Y = new double[Zamkn_Tochka_Y.Length];
double[] Tochka_X_1 = new double[Zamkn_Tochka_X.Length];
double[] Tochka_Y_1 = new double[Zamkn_Tochka_Y.Length];
double[] Tochka_X_2 = new double[Zamkn_Tochka_X.Length]; double[] Tochka_Y_2 = new double[Zamkn_Tochka_Y.Length];
for (int i = 1; i < Zamkn_Tochka_X.Length-1; i++)
{
if (Zamkn_Tochka_Y[i + 1] != Zamkn_Tochka_Y[i] && Zamkn_Tochka_X[i] !=
Zamkn_Tochka_X[i - 1])
{
if (Zamkn_Tochka_Y[i + 1] > Zamkn_Tochka_Y[i])
{
Tochka_Y_1[i] = Zamkn_Tochka_Y[i] + (Zamkn_Tochka_Y[i + 1] - Zamkn_Tochka_Y[i]) / 4;
} else
{
Tochka_Y_1[i] = Zamkn_Tochka_Y[i + 1] + (Zamkn_Tochka_Y[i] - Zamkn_Tochka_Y[i + 1]) / 4;
}
if (Zamkn_Tochka_X[i - 1] > Zamkn_Tochka_X[i])
{
Tochka_X_1[i] = Zamkn_Tochka_X[i] + (Zamkn_Tochka_X[i - 1] - Zamkn_Tochka_X[i]) / 4;
}
else
{
Tochka_X_1[i] = Zamkn_Tochka_X[i - 1] + (Zamkn_Tochka_X[i] - Zamkn_Tochka_X[i - 1]) / 4;
}
}
else
{
Tochka_X_1[i] = Zamkn_Tochka_X[i];
216
Tochka_Y_1[i] = Zamkn_Tochka_Y[i];
}
if (Zamkn_Tochka_X[i + 1] != Zamkn_Tochka_X[i] && Zamkn_Tochka_Y[i] !=
Zamkn_Tochka_Y[i - 1])
{
if (Zamkn_Tochka_X[i + 1] > Zamkn_Tochka_X[i])
{
Tochka_X_2[i] = Zamkn_Tochka_X[i] + (Zamkn_Tochka_X[i + 1] - Zamkn_Tochka_X[i])
/ 4; }
else
{
Tochka_X_2[i] = Zamkn_Tochka_X[i + 1] + (Zamkn_Tochka_X[i] - Zamkn_Tochka_X[i +
1]) / 4;
}
if (Zamkn_Tochka_Y[i - 1] > Zamkn_Tochka_Y[i])
{
Tochka_Y_2[i] = Zamkn_Tochka_Y[i] + (Zamkn_Tochka_Y[i - 1] - Zamkn_Tochka_Y[i]) /
4;
} else
{
Tochka_Y_2[i] = Zamkn_Tochka_Y[i - 1] + (Zamkn_Tochka_Y[i] - Zamkn_Tochka_Y[i -
1]) / 4;
}
}
else
{
Tochka_X_2[i] = Zamkn_Tochka_X[i];
Tochka_Y_2[i] = Zamkn_Tochka_Y[i];
} }
for (int j = 0; j < Tochka_X.Length - 1; j++)
{
Tochka_X[j] = (Tochka_X_1[j] + Tochka_X_2[j]) / 2;
Tochka_Y[j] = (Tochka_Y_1[j] + Tochka_Y_2[j]) / 2;
}
Tochka_X[0] = Tochka_X[Tochka_X.Length - 12];
Tochka_Y[0] = Tochka_Y[Tochka_Y.Length - 12];
Tochka_X[Tochka_X.Length - 1] = Tochka_X[11]; Tochka_Y[Tochka_Y.Length - 1] = Tochka_Y[11];
Vivod_Linii(Tochka_X, Tochka_Y);
Vivod_Tochek(Tochka_X, Tochka_Y, Color.Red);
// Peregib(Tochka_X, Tochka_Y);
Cepnoi_Kod(Tochka_X, Tochka_Y);
// Naimen_Kvadrati(Tochka_X, Tochka_Y);
}
private double[] Gauss(double[,] matrix, int rowCount, int colCount)
{
int i;
217
int[] mask = new int[colCount - 1];
for (i = 0; i < colCount - 1; i++) mask[i] = i;
if (GaussDirectPass(ref matrix, ref mask, colCount, rowCount))
{
double[] answer = GaussReversePass(ref matrix, mask, colCount, rowCount);
return answer;
}
else return null;
}
private bool GaussDirectPass(ref double[,] matrix, ref int[] mask,
int colCount, int rowCount)
{
int i, j, k, maxId, tmpInt;
double maxVal, tempDouble;
for (i = 0; i < rowCount; i++)
{
maxId = i;
maxVal = matrix[i, i];
for (j = i + 1; j < colCount - 1; j++)
if (Math.Abs(maxVal) < Math.Abs(matrix[i, j])) {
maxVal = matrix[i, j];
maxId = j;
}
if (maxVal == 0) return false;
if (i != maxId)
{
for (j = 0; j < rowCount; j++)
{
tempDouble = matrix[j, i];
matrix[j, i] = matrix[j, maxId]; matrix[j, maxId] = tempDouble;
}
tmpInt = mask[i];
mask[i] = mask[maxId];
mask[maxId] = tmpInt;
}
for (j = 0; j < colCount; j++) matrix[i, j] /= maxVal;
for (j = i + 1; j < rowCount; j++)
{
double tempMn = matrix[j, i];
for (k = 0; k < colCount; k++) matrix[j, k] -= matrix[i, k] * tempMn;
}
}
return true;
}
private double[] GaussReversePass(ref double[,] matrix, int[] mask,
int colCount, int rowCount)
{
int i, j, k;
for (i = rowCount - 1; i >= 0; i--)
for (j = i - 1; j >= 0; j--)
{ double tempMn = matrix[j, i];
for (k = 0; k < colCount; k++)
matrix[j, k] -= matrix[i, k] * tempMn;
}
double[] answer = new double[rowCount];
for (i = 0; i < rowCount; i++) answer[mask[i]] = matrix[i, colCount - 1];
return answer;
218
}
private double[,] MakeSystem(double[,] xyTable, int basis)
{
double[,] matrix = new double[basis, basis + 1];
for (int i = 0; i < basis; i++)
{
for (int j = 0; j < basis; j++)
{ matrix[i, j] = 0;
}
}
for (int i = 0; i < basis; i++)
{
for (int j = 0; j < basis; j++)
{
double sumA = 0, sumB = 0;
for (int k = 0; k < xyTable.Length / 2; k++)
{
sumA += Math.Pow(xyTable[0, k], i) * Math.Pow(xyTable[0, k], j);
sumB += xyTable[1, k] * Math.Pow(xyTable[0, k], i); }
matrix[i, j] = sumA;
matrix[i, basis] = sumB;
}
}
return matrix;
}
private void Naimen_Kvadrati(double[] Tochka_X, double[] Tochka_Y)
{
double[] Angle = new double[Tochka_X.Length - 4]; double[] K = new double[Tochka_X.Length - 4];
double[] Krivizna = new double[Tochka_X.Length - 4];
NNN = 2;
while (NNN != Tochka_X.Length-2)
{
xyTable = new double[2, 5];
int basis = 2;
double[] C = new double[basis];
//Записываем 5 точек
xyTable[0, 0] = Tochka_X[NNN - 2]; xyTable[0, 1] = Tochka_X[NNN - 1];
xyTable[0, 2] = Tochka_X[NNN];
xyTable[0, 3] = Tochka_X[NNN + 1];
xyTable[0, 4] = Tochka_X[NNN + 2];
xyTable[1, 0] = Tochka_Y[NNN - 2];
xyTable[1, 1] = Tochka_Y[NNN - 1];
xyTable[1, 2] = Tochka_Y[NNN];
xyTable[1, 3] = Tochka_Y[NNN + 1];
xyTable[1, 4] = Tochka_Y[NNN + 2];
//Проверяем на равенство X-ов
if (Tochka_X[NNN - 2] == Tochka_X[NNN - 1] && Tochka_X[NNN - 1] == Tochka_X[NNN] & Tochka_X[NNN] == Tochka_X[NNN + 1] & Tochka_X[NNN + 1] == Tochka_X[NNN + 2])
{
Krivizna[NNN - 2] = 99999;
}
else
{
//Определяем угол наклона через коэфициент К
219
matrix = MakeSystem(xyTable, basis);
result = Gauss(matrix, basis, basis + 1);
for (int n = 0; n < Source_Copy2.Width; n++)
{
int k = Convert.ToInt16(n * result[1] + result[0]);
if (k > 0 && k < Source_Copy2.Height)
{
// Source_Copy2.SetPixel(n, k, Color.Red);
} }
for (int i = 0; i < basis; i++)
{
C[i] = result[i];
}
K[NNN - 2] = C[1];
Angle[NNN - 2] = - Math.Atan(K[NNN - 2]);
double Xo = 0;
double Yo = 0;
//Поворот вокруг точки //Точка
Xo = 0;
Yo = C[0];
//Поворот
xyTable[0, 0] = Xo + (Tochka_X[NNN - 2] - Xo) * Math.Cos(Angle[NNN - 2]) -
(Tochka_Y[NNN - 2] - Yo) * Math.Sin(Angle[NNN - 2]);
xyTable[0, 1] = Xo + (Tochka_X[NNN - 1] - Xo) * Math.Cos(Angle[NNN - 2]) -
(Tochka_Y[NNN - 1] - Yo) * Math.Sin(Angle[NNN - 2]);
xyTable[0, 2] = Xo + (Tochka_X[NNN] - Xo) * Math.Cos(Angle[NNN - 2]) -
(Tochka_Y[NNN] - Yo) * Math.Sin(Angle[NNN - 2]);
xyTable[0, 3] = Xo + (Tochka_X[NNN + 1] - Xo) * Math.Cos(Angle[NNN - 2]) - (Tochka_Y[NNN + 1] - Yo) * Math.Sin(Angle[NNN - 2]);
xyTable[0, 4] = Xo + (Tochka_X[NNN + 2] - Xo) * Math.Cos(Angle[NNN - 2]) -
(Tochka_Y[NNN + 2] - Yo) * Math.Sin(Angle[NNN - 2]);
xyTable[1, 0] = Yo + (Tochka_Y[NNN - 2] - Yo) * Math.Cos(Angle[NNN - 2]) +
(Tochka_X[NNN - 2] - Xo) * Math.Sin(Angle[NNN - 2]);
xyTable[1, 1] = Yo + (Tochka_Y[NNN - 1] - Yo) * Math.Cos(Angle[NNN - 2]) +
(Tochka_X[NNN - 1] - Xo) * Math.Sin(Angle[NNN - 2]);
xyTable[1, 2] = Yo + (Tochka_Y[NNN] - Yo) * Math.Cos(Angle[NNN - 2]) +
(Tochka_X[NNN] - Xo) * Math.Sin(Angle[NNN - 2]); xyTable[1, 3] = Yo + (Tochka_Y[NNN + 1] - Yo) * Math.Cos(Angle[NNN - 2]) +
(Tochka_X[NNN + 1] - Xo) * Math.Sin(Angle[NNN - 2]);
xyTable[1, 4] = Yo + (Tochka_Y[NNN + 2] - Yo) * Math.Cos(Angle[NNN - 2]) +
(Tochka_X[NNN + 2] - Xo) * Math.Sin(Angle[NNN - 2]);
matrix = MakeSystem(xyTable, basis);
result = Gauss(matrix, basis, basis + 1);
for (int n = 0; n < Source_Copy2.Width; n++)
{
int k = Convert.ToInt16(n * result[1] + result[0]);
if (k > 0 && k < Source_Copy2.Height)
{ Source_Copy2.SetPixel(n, k, Color.Red);
}
}
// Source_Copy2.Save("Точки.jpg");
//Ищем крайнюю левую и крайнюю правую точку
double Left = 99999;
double Right = 0;
220
for (int i = 0; i < 5; i++)
{
if (Left > xyTable[0, i])
{
Left = xyTable[0, i];
}
if (Right < xyTable[0, i])
{
Right = xyTable[0, i]; }
}
//Определяем ширину размаха
double Shirina_Po_X = Right - Left;
//Определяем ширину шага
double Shag = Shirina_Po_X / 6;
//Определяем значение 5-ти равноотстающих точек
double[,] XY = new double[2, 5];
XY[0, 0] = xyTable[0, 2] - Shag * 2; XY[0, 1] = xyTable[0, 2] - Shag;
XY[0, 2] = xyTable[0, 2];
XY[0, 3] = xyTable[0, 2] + Shag;
XY[0, 4] = xyTable[0, 2] + Shag * 2;
if (Left == xyTable[0, 0])
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{ if (XY[0, i] >= xyTable[0, j] && XY[0, i] <= xyTable[0, j+1])
{
XY[1, i] = (XY[0, i] - xyTable[0, j]) * (xyTable[1, j + 1] - xyTable[1, j]) /
(xyTable[0, j + 1] - xyTable[0, j]) + xyTable[1, j];
}
}
}
}
else
{
for (int i = 0; i < 5; i++) {
for (int j = 4; j > 0; j--)
{
if (XY[0, i] >= xyTable[0, j] && XY[0, i] <= xyTable[0, j - 1])
{
XY[1, i] = (XY[0, i] - xyTable[0, j]) * (xyTable[1, j - 1] - xyTable[1, j]) /
(xyTable[0, j - 1] - xyTable[0, j]) + xyTable[1, j];
}
}
}
}
double Pervaya_Proizvodnaya = (XY[1, 0] - 8 * XY[1, 1] + 8 * XY[1, 3] - XY[1, 4]) / (12 *
Shag);
double Vtoraya_Proizvodnaya = (-XY[1, 0] + 16 * XY[1, 1] - 30 * XY[1, 2] + 16 * XY[1, 3] -
XY[1, 4]) / (12 * Shag * Shag);
Krivizna[NNN - 2] = Math.Abs(Vtoraya_Proizvodnaya) / (Math.Pow((1 +
Pervaya_Proizvodnaya * Pervaya_Proizvodnaya), (1.5)));
}
221
NNN++;
}
}
}
}
Программа обучения нейронной сети
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; using System.IO;
using AForge.Neuro;
using AForge.Neuro.Learning;
namespace Neiroset
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} Network network;
static double[,] Data(string Put)
{
int Kol_vo = 1;
StreamReader f = new StreamReader(Put);//чтение файла (массив в который будем вносить)
string s;//промежуточный стринг для чтения
double[,] data = new double[0, 0];
string[] buf;//стринг с неконвертированными цифрами
double t = 0;
int i = 0;
//Определяем размер выборки s = f.ReadLine();
buf = s.Split('\t');
while ((s = f.ReadLine()) != null)
{
Kol_vo++;
}
f = new StreamReader(Put);//чтение файла (массив в который будем вносить)
data = new double[Kol_vo, buf.Length];
while ((s = f.ReadLine()) != null)
{
buf = s.Split('\t'); for (int j = 0; j < buf.Length; j++)
{
t = Convert.ToDouble(buf[j]);
data[i, j] = t;
}
i++;
}
return data;
}
private void button1_Click(object sender, EventArgs e)
222
{
// Создаем сеть с сигмодиной активацонной функцией и 3 слоями (с 9,8,2 нейронами в
каждом слое, соответственно)
ActivationNetwork net = new ActivationNetwork((IActivationFunction)new SigmoidFunction(), 4,
3, 2);
// Обучение - алгоритм с обратным распространением ошибки
BackPropagationLearning trainer = new BackPropagationLearning(net);
double[,] data = Data("Input_Obuch.txt");
// Формируем множество входных векторов double[][] input = new double[data.GetLength(0)][];
for (int i = 0; i < data.GetLength(0); i++)
{
input[i] = new double[data.GetLength(1)];
for (int j = 0; j < data.GetLength(1); j++)
{
input[i][j] = data[i, j];
}
}
data = Data("Output_Obuch.txt");
// Формируем множество желаемых выходных векторов double[][] output = new double[data.GetLength(0)][];
for (int i = 0; i < data.GetLength(0); i++)
{
output[i] = new double[data.GetLength(1)];
for (int j = 0; j < data.GetLength(1); j++)
{
output[i][j] = data[i, j];
}
}
// Переменная, сохраняющая значение ошибки сети на предыдущем шаге
double prErr = 10000000; // Ошибка сети
double error = 100;
// Сначала скорость обучения должна быть высока
trainer.LearningRate = 1;
// Обучаем сеть пока ошибка сети станет небольшой
while (error > 0.0015)
{
// Получаем ошибку сети
error = trainer.RunEpoch(input, output);
// Если ошибка сети изменилась на небольшое значения, в сравнении ошибкой
предыдущей эпохи if (Math.Abs(error - prErr) < 0.00000001)
{
// Уменьшаем коэффициент скорости обучения на 2
trainer.LearningRate /= 2;
if (trainer.LearningRate < 0.001)
{
trainer.LearningRate = 0.001;
}
}
//
prErr = error;
} net.Save("Network");
MessageBox.Show("" + error);
}
private void button2_Click(object sender, EventArgs e)
{
network = Network.Load("Network");
223
}
private void button3_Click(object sender, EventArgs e)
{
double[,] data = Data("Input_Test.txt");
// Формируем множество входных векторов
double[][] input = new double[data.GetLength(0)][];
for (int i = 0; i < data.GetLength(0); i++)
{ input[i] = new double[data.GetLength(1)];
for (int j = 0; j < data.GetLength(1); j++)
{
input[i][j] = data[i, j];
}
}
data = Data("Output_Test.txt");
double[] Oshibka_X = new double[input.Length];
double[] Oshibka_Y = new double[input.Length];
double[] result;
string[] lines1 = new string[input.Length];
for (int i = 0; i < input.Length; i++) {
result = network.Compute(input[i]);
lines1[i] = Convert.ToString(Math.Round((result[0]*(65.11388-0.64749)+0.64749),3)) + "\t" +
Convert.ToString(Math.Round((result[1]*(35.91052-0.21052)+0.21052),3));
Oshibka_X[i] = (result[0] - data[i, 0]) * (65.11388 - 0.64749) + 0.64749;
Oshibka_Y[i] = (result[1] - data[i, 1]) * (35.91052 - 0.21052) + 0.21052;
}
string[] lines = new string[input.Length];
for (int i = 0; i < input.Length; i++)
{
lines[i] = Convert.ToString(Math.Abs(Math.Round(Oshibka_X[i],3))) + "\t" + Convert.ToString(Math.Abs(Math.Round(Oshibka_Y[i],3)));
}
File.WriteAllLines("Oshibka.txt", lines);
File.WriteAllLines("Result.txt", lines1);
}
}
}
Программа Определения координат проекции точки на предметную
плоскость
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; using System.Diagnostics;
using System.IO;
using System.Threading;
namespace Координаты_точки
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
224
}
double[] Gorizont_Liniya_B;
double[] Gorizont_Liniya_K;
double[] Vertical_Liniya_B;
double[] Vertical_Liniya_K;
double Xcam, Ycam, Zcam, a11, a12, a13, a21, a22, a23, a31, a32, a33;
double Ygol_po_Gorizontali;
int W; int H;
private void Form1_Load(object sender, EventArgs e)
{
double[] PolojenieKameri;
int Count_Gor = System.IO.File.ReadAllLines("Gorizont_B.txt").Length;
//Записываем горизонтальные линии
Gorizont_Liniya_B = new double[Count_Gor];
StreamReader ReadFile = new StreamReader("Gorizont_B.txt", Encoding.Default);
string Input = null;
int i = 0; while ((Input = ReadFile.ReadLine()) != null)
{
Gorizont_Liniya_B[i] = Convert.ToDouble(Input);
i++;
}
Count_Gor = System.IO.File.ReadAllLines("Gorizont_K.txt").Length;
Gorizont_Liniya_K = new double[Count_Gor];
ReadFile = new StreamReader("Gorizont_K.txt", Encoding.Default);
Input = null;
i = 0; while ((Input = ReadFile.ReadLine()) != null)
{
Gorizont_Liniya_K[i] = Convert.ToDouble(Input);
i++;
}
//Записываем вертикальные линии
int Count_Vert = System.IO.File.ReadAllLines("Vertikal_B.txt").Length;
Vertical_Liniya_B = new double[Count_Vert];
ReadFile = new StreamReader("Vertikal_B.txt", Encoding.Default);
Input = null;
i = 0; while ((Input = ReadFile.ReadLine()) != null)
{
Vertical_Liniya_B[i] = Convert.ToDouble(Input);
i++;
}
Count_Vert = System.IO.File.ReadAllLines("Vertikal_K.txt").Length;
Vertical_Liniya_K = new double[Count_Vert];
ReadFile = new StreamReader("Vertikal_K.txt", Encoding.Default);
Input = null;
i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{ Vertical_Liniya_K[i] = Convert.ToDouble(Input);
i++;
}
Bitmap Image = new Bitmap("Исходное.jpg", true);//Записываем выбранный файл в переменную
W = Image.Width;
H = Image.Height;
int Count = System.IO.File.ReadAllLines("Polojenie_Kameri.txt").Length;
225
PolojenieKameri = new double [Count];
ReadFile = new StreamReader("Polojenie_Kameri.txt", Encoding.Default);
Input = null;
i = 0;
while ((Input = ReadFile.ReadLine()) != null)
{
PolojenieKameri[i] = Convert.ToDouble(Input);
i++; }
//Записываем угол
ReadFile = new StreamReader("Ygol_Gorizont.txt", Encoding.Default);
Input = null;
while ((Input = ReadFile.ReadLine()) != null)
{
Ygol_po_Gorizontali = Convert.ToDouble(Input);
}
Ygol_po_Gorizontali = Ygol_po_Gorizontali / 180 * Math.PI;
Xcam = PolojenieKameri[0];
Ycam = PolojenieKameri[1];
Zcam = PolojenieKameri[2]; a11 = PolojenieKameri[3];
a12 = PolojenieKameri[4];
a13 = PolojenieKameri[5];
a21 = PolojenieKameri[6];
a22 = PolojenieKameri[7];
a23 = PolojenieKameri[8];
a31 = PolojenieKameri[9];
a32 = PolojenieKameri[10];
a33 = PolojenieKameri[11];
}
private void button1_Click(object sender, EventArgs e)
{
FormirovanieViborki();
MessageBox.Show("Завершено");
}
private void FormirovanieViborki()
{
int KolElementViborki = 0; for (int i = 30; i < (W-30); i = i + 20)
{
for (int j = 30; j < H; j = j + 15)
{
KolElementViborki++;
}
}
double[] Xist = new double[KolElementViborki];
double[] Yist = new double[KolElementViborki];
double[] Xana = new double[KolElementViborki];
double[] Yana = new double[KolElementViborki];
double[] I = new double[KolElementViborki]; double[] J = new double[KolElementViborki];
int nomer = 0;
for (int i = 30; i < (W-30); i = i + 20)
{
for (int j = 30; j < H; j = j + 15)
{
Vich_Koord(out Xist[nomer], out Yist[nomer], i, j);
226
OpredKoord(out Xana[nomer], out Yana[nomer], i, j);
I[nomer] = i;
J[nomer] = j;
nomer++;
}
}
double Max_Xist = 0;
double Min_Xist = 9999; double Max_Xana = 0;
double Min_Xana = 9999;
double Max_I = 0;
double Min_I = 9999;
double Max_Yist = 0;
double Min_Yist = 9999;
double Max_Yana = 0;
double Min_Yana = 9999;
double Max_J = 0;
double Min_J = 9999;
for (int i = 0; i < KolElementViborki; i++) {
//Истинные
if (Max_Xist < Xist[i])
{
Max_Xist = Xist[i];
}
if (Min_Xist > Xist[i])
{
Min_Xist = Xist[i];
}
if (Max_Yist < Yist[i])
{
Max_Yist = Yist[i];
}
if (Min_Yist > Yist[i])
{
Min_Yist = Yist[i];
}
//Аналитические
if (Max_Xana < Xana[i]) {
Max_Xana = Xana[i];
}
if (Min_Xana > Xana[i])
{
Min_Xana = Xana[i];
}
if (Max_Yana < Yana[i])
{
Max_Yana = Yana[i];
} if (Min_Yana > Yana[i])
{
Min_Yana = Yana[i];
}
//I и J
if (Max_I < I[i])
227
{
Max_I = I[i];
}
if (Min_I > I[i])
{
Min_I = I[i];
}
if (Max_J < J[i]) {
Max_J = J[i];
}
if (Min_J > J[i])
{
Min_J = J[i];
}
}
// ZapisTest(Xist, Yist, Xana, Yana, I, J, KolElementViborki);
//Нормирование
for (int i = 0; i < KolElementViborki; i++)
{ Xist[i] = (Xist[i] - Min_Xist) / (Max_Xist - Min_Xist);
Yist[i] = (Yist[i] - Min_Yist) / (Max_Yist - Min_Yist);
Xana[i] = (Xana[i] - Min_Xana) / (Max_Xana - Min_Xana);
Yana[i] = (Yana[i] - Min_Yana) / (Max_Yana - Min_Yana);
I[i] = (I[i] - Min_I) / (Max_I - Min_I);
J[i] = (J[i] - Min_J) / (Max_J - Min_J);
}
ZapisTest(Xist, Yist, Xana, Yana, I, J, KolElementViborki);
int KolObuchViborki = 0;
for (int i = 0; i < KolElementViborki; i++)
{
if (I[i] > ((300 - Min_I) / (Max_I - Min_I)) && I[i] < (((W - 300) - Min_I) / (Max_I - Min_I)) && J[i] >
((150 - Min_J) / (Max_J - Min_J)) && J[i] < (((H - 150) - Min_J) / (Max_J - Min_J)))
{
KolObuchViborki++;
}
}
double[] Xist1 = new double[KolObuchViborki];
double[] Yist1 = new double[KolObuchViborki]; double[] Xana1 = new double[KolObuchViborki];
double[] Yana1 = new double[KolObuchViborki];
double[] I1 = new double[KolObuchViborki];
double[] J1 = new double[KolObuchViborki];
KolObuchViborki = 0;
for (int i = 0; i < KolElementViborki; i++)
{
if (I[i] > ((300 - Min_I) / (Max_I - Min_I)) && I[i] < (((W - 300) - Min_I) / (Max_I - Min_I)) && J[i] >
((150 - Min_J) / (Max_J - Min_J)) && J[i] < (((H - 150) - Min_J) / (Max_J - Min_J)))
{
Xist1[KolObuchViborki] = Xist[i];
Yist1[KolObuchViborki] = Yist[i]; Xana1[KolObuchViborki] = Xana[i];
Yana1[KolObuchViborki] = Yana[i];
I1[KolObuchViborki] = I[i];
J1[KolObuchViborki] = J[i];
KolObuchViborki++;
}
}
228
ZapisObuch(Xist1, Yist1, Xana1, Yana1, I1, J1, KolObuchViborki);
}
private void ZapisObuch(double[] Xist, double[] Yist, double[] Xana, double[] Yana, double[] I, double[] J,int
Kol_vo)
{
string[] lines = new string[Kol_vo]; for (int i = 0; i < Kol_vo; i++)
{
lines[i] = Convert.ToString(Yana[i]) + "\t" + Convert.ToString(Xana[i]) + "\t" + Convert.ToString(J[i]) +
"\t" + Convert.ToString(I[i]);
}
File.WriteAllLines("Input_Obuch.txt", lines);
string[] lines1 = new string[Kol_vo];
for (int i = 0; i < Kol_vo; i++)
{
lines1[i] = Convert.ToString(Yist[i]) + "\t" + Convert.ToString(Xist[i]);
}
File.WriteAllLines("Output_Obuch.txt", lines1); }
private void ZapisTest(double[] Xist, double[] Yist, double[] Xana, double[] Yana, double[] I, double[] J, int
Kol_vo)
{
string[] lines = new string[Kol_vo];
for (int i = 0; i < Kol_vo; i++)
{
lines[i] = Convert.ToString(Yana[i]) + "\t" + Convert.ToString(Xana[i]) + "\t" + Convert.ToString(J[i]) +
"\t" + Convert.ToString(I[i]);
}
File.WriteAllLines("Input_Test.txt", lines); string[] lines1 = new string[Kol_vo];
for (int i = 0; i < Kol_vo; i++)
{
lines1[i] = Convert.ToString(Yist[i]) + "\t" + Convert.ToString(Xist[i]);
}
File.WriteAllLines("Output_Test.txt", lines1);
}
private void OpredKoord(out double X, out double Y, int I, int J)
{ double Xo1, Yo1, Zo1;
double Ic, Jc;
Ic = W / 2;
Jc = H / 2;
double alpha = Math.Atan(((I - Ic) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (W - 1));
double betta = Math.Atan(((Jc - J) * 2 * Math.Tan(Ygol_po_Gorizontali / 2)) / (W - 1));
Zo1 = -Zcam / (a13 * Math.Tan(alpha) + a23 * Math.Tan(betta) + a33);
Xo1 = Math.Abs(Zo1) * Math.Tan(alpha);
Yo1 = Math.Abs(Zo1) * Math.Tan(betta);
X = Xcam + Xo1 * a11 + Yo1 * a21 + Zo1 * a31;
Y = Ycam + Xo1 * a12 + Yo1 * a22 + Zo1 * a32;
// Z = Zcam + Xo1 * a13 + Yo1 * a23 + Zo1 * a33; }
private void Vich_Koord(out double X, out double Y, int I, int J)//Вычисление координат точки заданной в
пикселях по сетке
{
X = 0;//Координата Х
Y = 0; //Координата Y
int kol_vo_X = 0;//Целая часть Х
229
int kol_vo_Y = Gorizont_Liniya_B.Length - 2;//Целая часть Y
double drob_X = 0;//Дробная часть Х
double drob_Y = 0;//Дробная часть Y
double left = 0;//Для подсчета дробной части Х
double niz = 0;//Для подсчета дробной части Y
double obshaya_X = 0;//Для подсчета дробной части Х
double obshaya_Y = 0;//Для подсчета дробной части Y
//Вычисляем координату по x
for (int i = 1; i < Vertical_Liniya_B.Length; i++)//Проходи по линиям и если не пересекаем точку то прибавляем
{
if (I < (J * Vertical_Liniya_K[i] + Vertical_Liniya_B[i]))//Если точка пересечена вычисляем дробную
часть
{
obshaya_X = (J * Vertical_Liniya_K[i] + Vertical_Liniya_B[i]) - (J * Vertical_Liniya_K[i - 1] +
Vertical_Liniya_B[i - 1]);
left = I - (J * Vertical_Liniya_K[i - 1] + Vertical_Liniya_B[i - 1]);
drob_X = (left / obshaya_X);
X = kol_vo_X + drob_X;//Складываем целую и дробную части
break;
} else
{
kol_vo_X++;
}
}
//Вычисляем координату по Y
for (int i = 1; i < Gorizont_Liniya_B.Length; i++)//Проходи по линиям и если не пересекаем точку то
вычитаем
{
if ((I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) < J)
{ kol_vo_Y--;
}
else//Если точка пересечена вычисляем дробную часть
{
niz = (I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) - J;
obshaya_Y = (I * Gorizont_Liniya_K[i] + Gorizont_Liniya_B[i]) - (I * Gorizont_Liniya_K[i - 1] +
Gorizont_Liniya_B[i - 1]);
drob_Y = niz / obshaya_Y;
Y = kol_vo_Y + drob_Y;//Складываем целую и дробную части
break;
} }
}
}
}