Диссертация

229
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Казанский национальный исследовательский технический университет им. А. Н. Туполева КАИ Кафедра автоматизированных систем обработки информации и управления На правах рукописи Чумарин Руслан Ленарович НАВИГАЦИЯ МОБИЛЬНОГО ОБЪЕКТА НА ОСНОВЕ ДАННЫХ ВИДЕОНАБЛЮДЕНИЯ Направление 230100.68 «Информатика и вычислительная техника» Диссертация на соискание степени (квалификации) магистра техники и технологии Научный руководитель: доцент Суздальцев В.А. Зав. Кафедрой АСОИУ д.т.н., профессор Шарнин Л.М. Казань 2015

Upload: ruslan

Post on 12-Apr-2016

42 views

Category:

Documents


7 download

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

3

4

5

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;

} }

}

}

}