close

Вход

Забыли?

вход по аккаунту

Власов Виктор Викторович. Разработка геоинформационной системы для решения задач точного земледелия

код для вставки
АННОТАЦИЯ
ВКР 109 с., 28 рис., 6 табл., 50 источников, 1 прил.
ГЕОИНФОРМАЦИОННАЯ
СИСТЕМА,
СШИВКА
ИЗОБРАЖЕНИЙ,
ТОЧНОЕ ЗЕМЛЕДЕЛИЕ, МАШИННОЕ ОБУЧЕНИЕ.
Выпускная
квалификационная
работа
посвящена
разработке
геоинформационной системы для решения задач точного земледелия.
В первой главе проводится анализ предметной области и обоснование
актуальности разработки геоинформационной системы для решения задач
точного земледелия, рассматриваются задачи, функции и понятия построения
фотопланов местности, а также описываются существующие методы и средства
для построения фотопланов местности.
Во второй главе осуществляется разработка методов и алгоритмов для
построения
фотопланов
местности,
а
также
приводится
структура
разрабатываемой системы.
В третьей главе проводится проектирование геоинформационной системы
для решения задач точного земледелия.
4
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
6
1 ТЕОРЕТИЧЕСКИЕ И ТЕХНОЛОГИЧЕСКИЕ АСПЕКТЫ СБОРА И
ОБРАБОТКИ
МАТЕРИАЛОВ
АЭРОФОТОСЪЕМКИ
ДЛЯ
МОНИТОРИНГА
9
1.1 Анализ возможностей применения беспилотных летательных аппаратов
для проведения аэрофотосъёмки
9
1.2 Актуальность задачи оперативного обновления планов и карт
11
1.3 Технология создания ортофотопланов
15
1.4 Разработка подхода к автоматизированному построению фотоплана
местности
31
2 РАЗРАБОТКА АЛГОРИТМА И МЕТОДИКИ КЛАССИФИКАЦИИ
ИЗОБРАЖЕНИЙ ПО ХАРАКТЕРУ РЕЛЬЕФА МЕСТНОСТИ
43
2.1 Анализ существующих методов и подходов классификации
43
3.2 Классификация изображений по визуальным признакам
45
3.3 Методика применения математической морфологии для классификации
изображений
50
3.4 Проведение экспериментов по классификации изображений
57
3 ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЁННОЙ СИСТЕМЫ ДЛЯ ДОСТУПА
К МАТЕРИАЛАМ АЭРОФОТОСЪЁМКИ ПОСРЕДСТВОМ
ВЕБ-ПОРТАЛОВ
62
3.1 Обратный прокси-сервер и его роль в системе
68
3.2 Анализ и выбор протоколов взаимодействия распределенных
компонентов подсистемы разграничения доступа в сети корпоративных
порталов
71
3.3 Проектирование схемы БД
73
ЗАКЛЮЧЕНИЕ
77
СПИСОК ЛИТЕРАТУРЫ
80
5
ПРИЛОЖЕНИЕ А​​(ОБЯЗАТЕЛЬНОЕ)​​
ЛИСТИНГ КОДА
УДОСТОВЕРЯЮЩИЙ ЛИСТ
86
107
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА​​
ДОКУМЕНТА
НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
108
6
ВВЕДЕНИЕ
В настоящее время существенно возросло использование беспилотных
летательных аппаратов (БПЛА) для осуществления аэрофотосъемки территорий,
что ведет к возникновению потребности в автоматизированной обработке
результатов аэрофотосъемки. Одна из распространенных задач обработки – это
автоматическое нахождение области перекрытия и совмещение отдельных
изображений, т.н. сшивка изображений в единый фотоплан местности.
Полученная в результате сшивки информация об области перекрытия и взаимном
расположении фотографий может быть использована для построения точных и
актуальных планов местности, анализа каких-либо событий или изменений на
местности. Применение космических средств дистанционного зондирования и
традиционных методов аэрофотосъемки для решения подобных задач не всегда
возможно и эффективно из-за недостаточности во многих случаях разрешения
получаемых
недостаточной
фотоснимков,
оперативности
чувствительности
при
проведении
к
погодным
условиям,
мониторинга
местности,
сложности построения 3D-моделей местности, недостаточной гибкости при
определении маршрутов полетного задания, довольно высокой стоимости работ.
Эти недостатки значительно в меньшей степени проявляются при применении для
целей дистанционного зондирования БПЛА.
Проблемой проведения и интеллектуальной обработки фотоснимков
занимались многие ученые, среди которых Родионов Б.Н., Быков Л.В.,
Гельман Р.Н., Антипов А.В., Архипов О.П., Волков А.А. которые в том числе
обосновывали возможность практического использования аэрофотосъемки для
решения задач мониторинга и картографирования территорий. Усилиями
известных ученых, таких как Трунин Ю.М., Смирнов С.А., Бобир Н.Я.,
Калантаров Е.И. и др. разработаны методы проективной фотограмметрии. Они
подготовили теоретическую основу методов и предложили алгоритмы обработки
7
изображений, полученных в результате аэрофотосъемки. Среди зарубежных
ученых большой вклад внесли Пацифичи Ф., Шекелфорд А.К., Чжан И., Хуан Х.,
которые занимались проблемой классификации пространственных данных по
типу рельефа местности.
Под местностью в контексте исследования понимаются территории
городской и сельской застройки, коммуникации (дороги, ЛЭП, трубопроводы и
др.),
и
иные
территории
с
наблюдаемыми
признаками
хозяйственной
деятельности человека.
Процесс построения фотопланов местности начинается с выделения
ключевых точек на изображениях, благодаря чему становятся возможными поиск
и сопоставление изображений, имеющих перекрытие. До настоящего времени
полностью не решена проблема выбора типа, параметров и опциональных
возможностей алгоритма детектирования ключевых точек, т.е. его профиля. В
большинстве систем, используемых для построения фотоплана местности,
используется
один,
задаваемый
на
этапе
проектирования,
профиль
детектирования ключевых точек для всего множества изображений вне
зависимости от их параметров. Однако данный профиль может быть не
предпочтительным даже на множестве изображений одного типа и назначения.
Также существуют системы с возможностью выбора профиля детектирования из
множества нескольких возможных. При этом данная задача целиком возлагается
на пользователя, обычно не являющегося специалистом в области построения
фотопланов местности из множества фотоснимков, полученных в результате
проведения аэрофотосъемки, и, следовательно, не обладающего достаточной
компетенцией для выбора предпочтительного профиля, т. е. обеспечивающего
наилучший результат. Таким образом, оба вышеуказанных подхода, в общем
случае, не позволяют выбирать предпочтительный профиль детектирования.
Следовательно, научная задача разработки подходов и алгоритмов,
обеспечивающих
выбор
профиля
сшивки
для
каждого
конкретного
8
аэрофотоснимка, независимо от опыта и интуиции, как разработчика, так и
пользователя системы картографирования является актуальной.
Объектом исследования являются фотоснимки территорий хозяйств,
полученные в ходе проведения аэрофотосъемки с помощью беспилотного
летательного аппарата, для которых осуществляется процесс детектирования
ключевых точек.
Предметом исследования является процесс получения и обработки
фотоснимков
территорий
хозяйств,
полученных
в
ходе
проведения
аэрофотосъемки с помощью беспилотного летательного аппарата
Целью исследования является повышение качества фотоплана местности
хозяйств за счёт выбора предпочтительного профиля детектирования ключевых
точек для каждого конкретного множества изображений, полученных в результате
выполнения аэрофотосъёмки территорий с помощью беспилотного летательного
аппарата.
Для достижения сформулированной цели были поставлены и решены
следующие задачи:
1. Обзор и сравнительный анализ основных известных алгоритмов
детектирования ключевых точек на изображениях.
2.
Разработка
алгоритма
классификации
изображений
исследуемой
местности для выбора предпочтительного профиля детектирования ключевых
точек.
3.
Разработка
методики
получения
аэрофотоснимков
строительных
территорий с помощью БПЛА​.
4.
Разработка
архитектуры
и
программного
обеспечения
автоматизированной системы построения фотопланов местности с помощью
БПЛА в ходе проведения автоматической аэрофотосъемки строительных
территорий.
9
Методы исследования. В качестве основных средств теоретических
исследований использовались методы линейной алгебры, математической
морфологии, классификации изображений посредством машинного обучения,
анализа и цифровой обработки изображений.
10
1 ТЕОРЕТИЧЕСКИЕ И ТЕХНОЛОГИЧЕСКИЕ АСПЕКТЫ СБОРА И
ОБРАБОТКИ МАТЕРИАЛОВ АЭРОФОТОСЪЕМКИ ДЛЯ
МОНИТОРИНГА
1.1 Анализ возможностей применения беспилотных летательных
аппаратов для проведения аэрофотосъёмки
Беспилотные летательные аппараты, находящие применение до недавнего
времени в основном в военной сфере, находят своё место в гражданских областях.
С помощью БПЛА становится возможным оперативное проведение работ по
мониторингу объектов, а также аэрофотосъёмке исследуемой территории.
В настоящее время существенно возросло использование беспилотных
летательных аппаратов (БПЛА) для осуществления аэрофотосъёмки местности. В
результате возникает потребность в автоматизированной обработке результатов
съёмки. Одна из распространённых задач обработки — это автоматическое
нахождение области перекрытия и совмещение отдельных изображений (сшивка
изображений). Данная задача возникает не только при аэрофотосъёмке (АФС), но
и при микросъемке медицинских препаратов или микросъемке длинной детали.
Полученная в результате сшивки информация об области перекрытия и взаимном
расположении фотографий может быть использована для построения точных и
актуальных планов местности, анализа каких-либо событий или изменений на
местности. Данная задача принадлежит к задачам компьютерного зрения, которые
в
настоящее
время
является
одной из быстроразвивающихся отраслей
информационных технологий.
Аэрофотосъемочный беспилотный летательный аппарат запускается,
взлетает и совершает посадку в полуавтоматическом режиме, так называемый
автопилот, по загруженному предварительно маршруту и, пролетая по заранее
спланированному в ГИС маршруту, выполняет цифровую съемку местности,
результатом
которой
являются
снимки
высокого
разрешения
на
11
запрограммированных точках по глобальным географическим координатам.
Выполнив аэрофотосъемочный маршрут, БПЛА приземляется в точку взлёта и
передаёт полученные данные в ходе аэрофотосъёмки на наземную станцию. Для
каждого
снимка
получается
полный
набор
цифровой
информации
-
географические координаты центральной точки снимка, высота съемки, полный
набор телеметрических данных для переноса и использования в общепринятых
ГИС системах, таких как ArcView и MapInfo. Таким образом, все фотографии
являются геопривязанными с помощью одно- или двухчастотного ГНСС
приёмника
и
появляется
возможность
сшивки
фотоснимков
в единый
ортофотоплан местности. Аэрофотосъемка с БПЛА может заменить спутниковые
снимки высокого разрешения. Контроль "с воздуха" с использованием снимков
может внести качественные изменения в мониторинг объектов, поможет
предотвратить несвоевременное принятие решений в виду недостаточной
информационной базы или несвоевременного получения данных для экспертного
анализа.
Применение БПЛА дает возможность:
− создания электронных карт местности;
− оценить объем работ и контролировать их выполнение;
− вести оперативный мониторинг состояния строительных объектов и
территорий (БПЛА позволяет быстро и эффективно строить карты местности);
− определить индекс NDVI (Normalized Difference Vegetation Index нормализованный вегетационный индекс), который позволит получить оценку
качества почвенного покрова исследуемой территории;
− проверить качество выполнения земельных работ.
Научный и технический прогресс позволяет сегодня широко использовать
современные технологии во время планирования и выполнения работ. Такими
технологиями, несомненно, являются беспилотные летательные аппараты. Точное
12
земледелие включает в себя большое количество элементов, которые делятся на
три основных этапа:
1. Сбор информации о строительных объектах и исследуемой территории.
2. Анализ информации и принятие решения.
3. Выполнение решений – проведение строительных операций.
Перед тем, как приступить к полевым работам, необходимо провести
мониторинг территории, чтобы составить точный план затрат на обрабатываемые
площади и получить данные о состоянии почвенного покрова и рельефа
местности. В результате измерений составляется электронная карта исследуемой
местности.
Преимущества электронной карты поля заключаются в:
−
возможности ведения учета и контроля всех строительных операций
за счёт базирования на точных данных: площади территории и её рельефе,
расстоянии дорог, населенных пунктов и т.д;
−
помощи проведения полного анализа условий, влияющих на рост
растительности на данном поле;
−
оптимизировании
процесса
производства
с
целью
получения
максимального дохода, а также рационального использования ресурсов;
−
учёте и анализе последствий при различных неблагоприятных
погодных условиях и других показателей посредством беспилотной авиации;
−
формировании статистических справок и отчетов.
После
получения
электронной
карты
поля
возможно
проводить
обследование исследуемой территории "с земли" и вносить дополнительную
информацию (например, карты путей водоснабжения, карты содержания
основных элементов N, P, K, Ca, Mg, S, Ph в почве) о местности в существующую
базу данных.
13
1.2 Актуальность задачи оперативного обновления планов и карт
Для целей рационального управления территориями, предназначенными
под строительство, необходимо иметь полную и достоверную информацию о
состоянии природного и хозяйственного комплекса страны в целом, субъекта
Федерации или муниципалитета. Информацию о состоянии территорий получают
путем отслеживания изменений и отражения их в текущих документах, базах
данных и на картографических материалах. В последнее время этот процесс
называют мониторингом тех или иных явлений, объектов, процессов. Особое
значение имеет мониторинг земель, который находит отражение в создании и
ведении государственного земельного кадастра.
Земельный кадастр является информационной основой государственного
управления
земельными
ресурсами,
экономического
и
юридического
регулирования земельных отношений [1, 2]. Государственный земельный кадастр
представляет собой систематизированный свод документированных сведений о
местоположении, целевом назначении и правовом положении земель Российской
Федерации, сведений о территориальных зонах, наличии расположенных на
земельных участках и прочно связанных с ними объектов недвижимости [3]. В
государственный земельный кадастр включается информация о субъектах и видах
права на земельные участки.
Земельный кадастр состоит из комплекса различных юридических,
экономических, технических, организационных процессов, объединенных целью
информационного обеспечения земельных отношений.
В процессе хозяйственного использования земельных ресурсов постоянно
происходят изменения в составе, качестве и продуктивности земель, а также
изменения собственников земли и границ землепользовании. Поэтому, возникает
необходимость ведения текущего земельного кадастра, главной задачей которого
является
своевременное
выявление
и
внесение
в земельно-кадастровую
14
документацию всех законных изменений в распределении и использовании
земель, а также выявление и устранение ранее допущенных ошибок.
Для поддержания данных земельного кадастра на уровне современных
требований такие изменения должны быть оперативно внесены не только в
земельно-кадастровую документацию, но и отображены на кадастровых планах и
картах. Таким образом, возникает потребность в поддержании картографических
кадастровых материалов в актуальном состоянии, а задача совершенствования
методики мониторинга земель является актуальной.
В
практике
топографо-геодезического
производства
решение
о
необходимости обновления принимается в зависимости от количества изменений,
происшедших на местности с момента создания карты, а также в зависимости от
важности районов. Считается, что период обновления составляет: в наиболее
важных обжитых районах 5-7 лет; на прочих территориях 10-15 лет. За это время
на местности происходят существенные изменения, которые приходится
оценивать не только количественно. Необходимо учитывать важность изменений,
и существенность связанных с этими изменениями событий. При ведении
земельного кадастра, например, требуется удостоверить целостность границ
земельного участка [4] при любом изменении учетной информации, будь то
изменение собственника, правоустанавливающих документов или разрешенного
использования. При этом нет необходимости в обновлении планов и карт всей
территории. Обновлению подлежат только локальные участки, в границах
которых произошли существенные изменения.
Обновление крупномасштабных планово-картографических материалов
эффективно выполняется по материалам аэрофотосъемки. Дальнейшее развитие
дежурного картографирования и ведения локального мониторинга территорий по
аэрофотоснимкам сдерживает излишняя централизация аэрофотогеодезических
работ. Специализированные авиаотряды, оснащенные самолетами класса не ниже
АН-30, не приспособлены для оперативных съемок локальных участков
15
местности. Выход просматривается в децентрализации выполнения аэросъемки на
основе малой авиации с использованием современных цифровых съемочных
систем и децентрализации обработки фотограмметрической информации в целях
создания ортофотопланов на базе современных цифровых фотограмметрических
комплексов.
Для выборочного обновления планов и карт предлагается использовать
материалы
оперативной
аэрофотосъемки
(ABC),
которая
может
занять
промежуточное положение между наземной инструментальной съемкой и
космической съемкой местности при решении задач картографирования.
Аэрофотосъемка
обладает
рядом достоинств. Такая съемка не требует
профессиональной подготовки пилота и экипажа летательного аппарата. ABC
выполняется
практически
пилотируемых
самолетов
с
любых
и
летательных
вертолетов
и
аппаратов,
заканчивая
начиная
с
беспилотными
авиамоделями. Невысокая стоимость аппаратуры и аренды малых летательных
аппаратов делает аэрофотосъемку доступной для многих неспециализированных
предприятий.
Вопросам применения видеосъемки для картографирования территорий
посвящено
большое
количество
теоретических
и
экспериментальных
исследований. В научных работах [9, 10, 15] обосновывается принципиальная
возможность
корректной
фотограмметрической
обработки
материалов
аэрофотосъемки.
Первые работы по телерепортажной съемке сельскохозяйственныхи
строительных территорий были выполнены под руководством проф. Родионова
Б.Н. [5]. В своих работах ученые Родионов Б.Н., Быков Л.В., Гельман Р.Н.,
Антипов А.В. [5, 6, 7, 8, 9, 10, 11] и другие обосновывают возможность
практического использования аэрофотосъемки для решения задач мониторинга и
картографирования территорий. Известны публикации по экологическому
16
мониторингу с использованием аэрофотосъемки [9]. Ряд работ посвящен
методике создания ортофотопланов по материалам аэрофотосъемки [6, 7, 8, 11].
Элементы внутреннего ориентирования видеокамеры неизвестны и могут
произвольно изменяться в процессе съемки. Усилиями известных ученых, таких
как Трунин Ю.М., Смирнов С.А., Бобир Н.Я., Калантаров Е.И. [15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28] и др. разработаны методы проективной
фотограмметрии. Они подготовили теоретическую основу методов и предложили
алгоритмы обработки неметрических изображений. Обработка аэрофотоснимков
выполняется с использованием алгоритмов проективной фотограмметрии,
инвариантных относительно элементов внутреннего ориентирования снимков.
1.3 Технология создания ортофотопланов
В данном разделе приведены основные методы работы по сшиванию
ортофотопланов строительной местности. Сшивание или склейка изображений,
представляет собой одну из часто используемых форм монтажа аэрофотоснимков;
особенно широко она применима при создании панорамных изображений.
Склейка применяется при интерактивном панорамном просмотре изображений,
интерпретации объектов архитектуры и в других ситуациях, связанных с
трехмерным моделированием окружающей среды с использованием изображений
реального мира.
Панорама – это изображение, созданное путем комбинирования серии
фотографий в одну широкоформатную картинку. Путем соединения нескольких
фотографий обеспечивается полноценный обзор области или конкретного
местоположения,
который
невозможен
с
одним
фотоснимком.
Склейка
панорамного изображения – это процесс, направленный на создание панорамного
снимка путем наложения нескольких изображений меньшего размера.
17
На первом шаге к созданию такого изображения необходимо определить
место и получить изображения, заранее определив, изображения какого вида
должны быть получены. В зависимости от этого выбирают один из методов
получения изображения. Перед дальнейшей обработкой должны быть исправлены
все искажения, вызванные объективом камеры, и потому к полученным
изображениям иногда необходимо применять определенные корректирующие
процедуры. В области обработки изображений не существует общепринятого
термина для ключевых точек, имеющих ненулевую площадь. В данной работе
используется понятие «регион», являющееся одним из вариантов перевода
англоязычного термина region.
Обычно процесс склейки изображений делят на два этапа: сравнение и
блендинг. На первом этапе сравниваются сегменты смежных изображений и
ищутся сдвиги, необходимые для выравнивания картинки. После сравнения
наложенные изображения должны быть присоединены друг к другу таким
образом, чтобы сформировать единое панорамное изображение. Процесс
сравнения при этом должен производиться таким образом, чтобы переход между
смежными изображениями был визуально незаметным. Наконец, путем склейки
всех изображений создается панорамное изображение. Для его получения
изображения могут быть получены с использованием относительно недорогих
камер и углов обзора, определенных пользователем. «Сшитое» изображение - это
панорамное изображение с большим разрешением.
В зависимости от необходимого типа и пригодности оборудования, для
получения входных изображений могут применяться разные методы. Состав
оборудования для создания панорамного изображения, детально описанный ниже,
является случаем, в котором камера помещена на аппарат, плавно двигающийся
параллельно поверхности земли. На изображениях, полученных камерой во время
движения (захват снимка производится при смещении камеры), содержится вид
земли с высоты полета.
18
Захват
изображений,
производимый
через
каждые
5
секунд,
осуществляется двумя камерами, установленными на борт БПЛА, который
двигается с почти постоянной скоростью по относительно горизонтальной
траектории.
На рисунке 1 приведена координатная система камеры, где ось Z
направлена на исследуемый объект, ось Y совпадает с оптической осью камеры, а
ось Х параллельна поверхности Земли.
Рисунок 1 - Координатная система камеры
Углы обзора камеры в горизонтальном и вертикальном направлении
определяют охват каждого изображения по горизонтали и вертикали. Углы обзора
отображены на рисунке 2, где углы α и β соответствуют углам камеры по
вертикали и горизонтали.
Рисунок 2 - Горизонтальные и вертикальные углы обзора
19
При таком методе захвата изображений камера двигается в направлении,
параллельном плоскости изображения. Предполагается, что расстояние между
БПЛА и землей существенно не изменяется.
Камеру направляют на исследуемый объект (земную поверхность) и с
каждым сдвигом камеры делают новые снимки до тех пор, пока не будет получена
серия изображений, охватывающая всю желаемую область. На рисунке 3 показана
схема указанного подхода. Камера находится на линии, по которой движется
БПЛА. При этом аппарат двигается таким образом, чтобы находиться
параллельно поверхности изображения для наилучшего расположения камеры.
Рисунок 3- Геометрия получения изображения при движении камеры
С заданным сдвигом камеры ​
t​, расстоянием от объекта до камеры d и
горизонтальным углом обзора ​ʋ,​ где ​
L является шириной захваченного
изображения, а ​l – шириной наложения между смежными изображениями.
1
L
,
отношение между областью наложения для целого изображения, может
вычислено так, как отражено в формуле 1:
1
L
=1−
t
2d tan( 2ʋ )
(1)
Формула 1 - это отношение между областью наложения для целого
изображения. Однако фактическая величина области наложения между двумя
следующими друг за другом изображениями определяется точностью настроек
20
камеры. При получении изображений в ходе сдвига важно быть уверенным в том,
что плоскости изображения параллельны направлению движения камеры. В
противном случае в ходе движения камеры будут меняться размеры объектов на
изображении, что неизбежно вызовет проблемы при их склейке. Недостаток
данного метода проявляется в том, что необходимость сдвига ​
t увеличивает
расстояние от камеры до исследуемого объекта, если съемка производится для
одной и той же области. Следовательно, получение изображений, на которых
исследуемый объект удален от камеры, намного сложнее из-за числа
необходимых сдвигов.
Фотоснимки высокого разрешения, полученные в ходе проведения
аэрофотосъемки, могут быть использованы для построения ортофотоплана и
топографический карты, а также для реконструкции 3D-модели местности.
Существуют два основных подхода для решения данных задач: прямая и обратная
геопривязка. В случае прямой привязки задействованы бортовые датчики БПЛА
для задания внешней ориентации фотоснимка, но с другой стороны, методика
обратной геопривязки основана на так называемых контрольных реперных точках
(GCP, ground control point), позиции которых заранее известны и определены.
Безусловно, преимущество прямой геопривязки заключается в том, что является
необязательным
взаимодействие
исследуемой
территорией,
что
является
полезным в случае ограниченного доступа к области или при опасных условиях
для жизни и здоровья человека.
На данный момент существует множество разновидностей БПЛА, но в
данной работе представлены результаты, полученные с так называемых «дронов»,
т.е. мультироторных БПЛА. Данные аппараты способны размещать на борту
различные датчики в зависимости от типа миссии. Большинство сегодняших
БПЛА управляются удаленно оператором, но значительный интерес для
построения фотопланов исследуемой местности является “полет по миссии”, в
21
ходе которого маршрут заранее определяется пользователем в специальном
программном обеспечении.
Рисунок 4 – МР БПЛА, используемый для получения фотоснимков
Малые
БПЛА
картографирования
в
состоянии
небольших
эффективно
территорий.
МР
БПЛА
применяться
являются
для
более
подходящими для построения локальных карт городских территорий до 10 км в
длину. Карта двумерной размерности как правило содержат серию фотоснимков,
полученных
с
определенной
высоты
полета,
которая
откалибрована
в
координатную систему WGS-84, используя бортовой ГНСС-приемник или за счет
точек GCP в процессе постобработки. GCP представляют собой физические
маркеры (искусственные или натуральные), распределенные в исследуемой
области, позиция которых заранее установлены. В целях обеспечения точной
оценки существуют маркеры, называемые CP (check point) и TP (test point),
которые не задействованы в процессе калибровки. Откалиброванные фотографии
затем соединяются вместе подобно мозаике (см рис. 5) и могут быть
использованы для построения ортофотоплана или топографической карты в
геоинформационной системе ГИС.
22
Рисунок 5 – Пример построенного ортофотоплана из набора фотоснимков
Фотограмметрия имеет дело с реконструкцией форм и измерением размера
и позиции объектов, видимых на фотоснимке. Иными словами, фотограмметрия
представляет собой ответвление науки, объектом исследования которой является
процесс обработки информации, извлеченной из фотоснимка, используя при этом
данные, полученные в результате космической либо аэросъемки, а также
наземных
данных.
Стерео
фотограмметрия
основывается
на
таком
геометрическом методе как триангуляция, используемом для измерения
расстояния и пространственных координат объектов. Принцип данного метода
представлен на ниже приведенном рисунке 8.
Если известны высота треугольника ​
d и его углы ​
α и ​
β,​ то расстояние ​е
между точками ​Fa​ и ​F​b (фокальные
точки) может быть рассчитано следующим
​
образом:
e = eA+ eB =
d
tgα
+
d
tgβ
(2)
23
Рисунок 6 – Базовый принцип триангуляции на плоскости
Главным образом, решена обратная задача, когда высота треугольника
неизвестна, но известно расстояние между фокальными точками или их
положение в пространстве. В данном случае используется следующее равенство:
1
d
=
1
e
(
1
tgα
+
1
tgβ
)=
sin(α+β)
e sinα sinβ
(3)
Этот метод в прошлом широко использовался для измерения положения
таких важных элементов топографического пейзажа как холмы, башни и т.д.. В то
время, когда еще не было глобальной навигационной спутниковой системы
данный подход подходил более всего для измерения углов и в меньшей степени
для расстояния, однако, на данный момент является возможным измерение
пространственного положения объектов с высокой степенью точности, размещая
приемные GNSS-антенны, но необходимо бесконтактное измерение расстояний.
24
Рисунок 7 – Процесс получения фотоснимков с различных позиций БПЛА
В соответствии с формулой (2) должны быть измерены два угла и
расстояние между фокальными точками. Измерение углов происходит за счет
использования бортовой камеры, где угол рассчитывается на основании
положения объекта на фотоснимке. Приведем необходимые формулы:
a
px
α = 90 + tg −1 ( ppmm
),
l
f
β
px
β = 90 − tg −1 ( ppmm
),
l
f
(4)
(5)
где ​CCD​S​- тип матрицы камеры;
CCD​R​- разрешение матрицы;
l​f​- фокальная длина объектива;
ppmm​- отношение ​CCD​R​и ​
CCDS;​
apx
​ ​, b​px - представляют положение объекта в пикселях относительно центра
сенсора камеры.
Данные параметры являются константными величинами и могут быть
получены согласно технической документации фотокамеры или в ходе
проведения калибровки.
Позиция точки ​С​рассчитывается следующим образом:
C F (x, z ) = (
A
esinαsinβ
sinα+β
tgα
, esinαsinβ
).
sinα+β
(6)
На практике применяется одна фотокамера, которая получает фотоснимки
из различных положений БПЛА с разной ориентацией в пространстве и разных
промежутках времени. Стоит отметить, что ситуация, представленная на рисунке
8, является достоверной в случае того, что высота полета является постоянной
величиной и ось съемки перпендикулярна поверхности исследуемой местности.
При этом позиция измеряемого объекта не должна меняться, т.е. объект должен
быть статическим.
25
Так как камера прикреплена к корпусу БПЛА, то ее положение и
ориентацию
в
ГНСС-приемник
пространстве
и
можно
инерциальный
вычислить,
блок
IMU.
используя
Напомним,
что
бортовой
подход
фотограмметрии, использующий внешние датчики для установления положения
объектов, называется прямой геопривязкой. Преимуществом данного решения
является то, что нет необходимости во взаимодействии с исследуемой области,
т.е. бесконтактный способ.
Камеры, используемые на большинстве БПЛА, представляют собой
малогабаритные устройства, не предназначенные для измерений, следовательно
некоторые
параметры
данных
камер
являются
заранее
известными
и
неизменяемыми. Например, ошибка фокальной длины может значительно
повлиять на точность определения позиции. Для большинства таких камер
присущ смещенный оптический центр и широкий угол объектива, что ведет к
значительной радиальной дисторсии. Данные параметры могут быть определены
и компенсированы.
Одна из наиболее часто встречающихся проблем в захвате изображений –
разница освещенности соседних изображений. В идеале, область или объект
должны иметь ту же освещенность, что и смежные изображения. Тем не менее, в
силу изменений интенсивности света, а также угла между камерой и источником
света, значения освещенности для одного и того же участка или области в
соседних изображениях различаются. Также различия в интенсивности между
контрастными изображениями могут быть выявлены в ходе разработки или
сканирования (обработки) фотографий; в обоих случаях проблема может быть
решена напрямую с использованием цифровой камеры. Еще одна проблема,
связанная с освещением, - это свет, отраженный от таких участков, как, например,
стекла или блестящий металл.
На рисунке 8 представлен процесс получения изображений в ходе
проведения аэрофотосъемки.
26
В течение времени, необходимого для адаптации оборудования к
следующему положению после захвата изображения, объекты, находящиеся в
пределах снимка, могут переместиться относительно их предыдущей позиции.
Таким образом, это необходимо учитывать, когда в последовательность
снимков включены движущиеся объекты. На деле получить правильное
изображение очень сложно, если объект на нем сместился со своей начальной
точки. Также изображения «страдают» от искажений объектива в зависимости от
конкретного используемого объектива. Такие искажения можно скорректировать,
сняв тем же объективом снимок опорной сетки. Используя известные параметры
опорной сетки, можно найти преобразование, исказившее оригинальное
изображение. Это преобразование можно применить к каждому из имеющихся
изображений для корректирования искажений.
Рисунок 8 – Процесс построения панорамного снимка
В частном случае фотографии, снятые с борта БПЛА, могут быть сняты в
условиях сильной вибрации винтомоторной группы, что также вызывает
искажения кадра. Во избежание этого группа необходимо использовать
демпфирующие площадки, уменьшающие резонанс аппарата в местах, где
установлена камера.
27
В этом разделе описываются основные методы для сравнения изображений,
приведенные в [7]. Перед применением алгоритма, представленного далее в
работе, изображения должны быть преобразованы.
Реализованное решение заключалось в конвертации изображения из RGB
цветовой схемы в снимок с градациями серого. Это позволяет работать в
дальнейшем с меньшим количеством информации, так как RGB-изображение есть
трехмерная матрица, а изображение с градациями серого – одномерная матрица.
Следующий шаг – применить оператор детектор границ Кэнни. Этот фильтр
возвращает границы изображения, используя вариационное исчисление (рис. 16).
[13]
Рисунок 9 - а) RGB-изображение б) Изображение в градации серого в)
Изображение, подвергнутое оператору Кэнни г) Бинарное изображение
На последнем этапе необходимо вернуть результирующий снимок в
бинарное изображение. Это значит, что область значений пикселя, определенная
ранее в пределах от 0 до 255, теперь приобретает значения из диапазона от 0 до 1.
Очевидно, что преобразование к бинарному изображению, показанное на
рисунке 16, ведет к потере информации, но проведение таких предварительных
изменений необходимо для повышения скорости работы алгоритма.
Для
формирования
большого
изображения
из
серии
частично
перекрывающихся снимков, необходимо определить сдвиги, необходимые для их
28
выравнивания. Предполагается, что в процессе склейки изображений ищутся
сдвиги, необходимые для того, чтобы выровнять два или более перекрывающихся
изображений таким образом, чтобы проекция пикселей оставалась неизменной
для любого положения. Необходимые шаги приведены в схеме на рисунке 14.
Исходя из предполагаемого отношения зоны перекрытия определяется
окно, показанное на рисунке 17. Правая сторона левого изображения должна
занимать 50% от ширины и высоты входного изображения для того, чтобы быть
уверенным, что она находится в пределах входной зоны наложения. Наблюдение
за первым изображением по левой стороне означает, что зона наложения между
I k и I k+1 это I k по правой стороне и I k+1 по левой.
W k находится на правой части I k и вертикально сосредоточено в середине
изображения. Запомнив компоненты и свойства окна, далее детально описан
метод записи изображений.
Рисунок 10 - Блок-схема действий по сравнению изображений
I k – это изображение, полученное из средней интенсивности красного,
зеленого и голубого каналов k-того изображения последовательности входных
изображений, где k изменяется от 1 до числа изображений в серии.
29
W k определяется как окно размерами m*n в I k , чья левая верхняя точка
находится в (a,b) изображения I k , как показано на рисунке 18. Изображение
справа - I k+1 – преобразовано способом, выбранном в множестве поиска. Окно
W k+1 с теми же размерами, что и W k , определено в I k . Положение W k+1 в I k+1
получено путем применения к (a,b) преобразования, обратного ранее выбранному.
Рисунок 11 - W k - окно на I k в точке (a,b) с размерами m и n
Указанный метод сшивки изображений обычно состоит из четырех
основных компонент. Ими являются:
−
набор признаков, который определяет то, что нужно для сравнения
изображений;
−
степень сходства, с помощью которой оценивается мера подобия
изображений;
−
поисковые множества, то есть ряд возможных с изображениями
преобразований;
−
поисковая
стратегия,
которая
показывает,
каким
образом
осуществляется выбор следующего преобразования, основываясь на оценке
степени сходства.
Варьируя значения данных четырех компонент, можно построить
различные методы регистрации с различными поведениями.
Набор признаков есть совокупность признаков, используемых для
сравнения изображения, таких как значения интенсивности цвета, контуров,
текстур и т.д. Совокупность признаков должна быть выбрана для каждого метода
регистрации изображения. Характеристики, выбираемые в соответствии с
30
используемым алгоритмом, извлекаются из изображений и сравниваются в их
записи.
Степень сходства представляет собой функцию, возвращающую скалярное
значение,
означающее
степень
похожести
двух
признаков.
Сходство
характеристик есть не что иное, как сходство атрибутов положения, размера и
цвета. Значения интенсивности выбранных признаков изображений используются
для вычисления степени сходства и выбора преобразования для выравнивания
изображений.
Поисковое множество – множество возможных преобразований для
выравнивания
изображений.
Оно
содержит
такие
преобразования,
как
перемещения по горизонтали или вертикали, вращение, а также более сложные
преобразования, полученные путем комбинации указанных выше действий.
Изменения в поисковом множестве оцениваются по степени сходства для
того, чтобы выбрать наилучшее преобразование (то есть лучшее значение степени
сходства), необходимое для выравнивания заданных изображений.
Поисковая стратегия – это алгоритм, решающий, каким образом выбрать
следующее преобразование из поискового множества.
За последние годы было предложено большое число методов для записи
изображений.
Обычно
эти
методы
содержат
шаблон
для
определения
преобразования, необходимого для выравнивания изображений [16, 17, 18]. Также
следует заметить, что центр изображения обычно содержит больше информации,
и центральные области с меньшей вероятностью будут обладать однородными
значениями интенсивности. Таким образом, с помещением окна ближе к центру
изображения, степень сходства, вычисляемая исходя из содержимого окна,
обеспечивает более надежный признак сходства окон.
Степень сходства между двумя окнами – это сумма разницы абсолютных
значений двух окон.
31
m n
S k (u, v ) = ∑ ∑ | W k (i, j ) − W k+1,(u,v) (i, j ) | .
(10)
i=1 j=1
После вычисления степени сходства для всех возможных положений
оптимальная точка для сопоставления, обозначаемая как (u* , v * ) , выбирается
путем исследования значения величины в S k .
S k (u* , v * ) = min1≤i≤H−m, 1≤j≤L−n {S k (i, j )} .
Интуитивно
правильно
выбирать
в
качестве
(11)
лучшей
точки
для
сопоставления точку, в которой значение степени сходства минимально. Причина
проста – сумма различий абсолютных значений двух окон, используемая в
качестве степени сходства, а меньшее различие обычно подразумевает
наивысшую степень похожести между двумя окнами. Следовательно, выбирается
такое положение, в котором значение степени сходства наименьшее из всех
рассчитанных степеней сходства.
Следующим этапом в нахождении взаимного расположения полученных
изображений является сопоставление точек интереса (matching). Необходимо
установить, какие точки на разных изображениях соответствуют одной реальной
точке в трёхмерном пространстве. На основании этих соответствий задача
нахождения взаимного расположения камер сводится к решению системы
уравнений. Поиск близких друг к другу многомерных векторов является одним из
самых дорогостоящих с вычислительной точки зрения. На фотографии 0.5 Мп
находится в среднем около 6000 точек интереса, которые и нужно сопоставить с
примерно таким же числом точек на другой фотографии. По сути, задача сводится
к нахождению ближайшего вектора из не- которого множества к некоторому
вектору образцу. Рассматриваемое пространство многомерных векторов можно в
данном случае считать евклидовым. Эффективное решение, хорошо подходящее
для данной задачи, предлагает статья [7]. В данной статье описан быстрый способ
поиска приблизительно ближайшего соседа. Данный метод превосходит по
быстродействию линейный поиск. В основе метода лежит использование
32
k-​мерных деревьев, которые в классическом виде эффективны для малых
размерностей пространства. В случайных же ​
k​-мерных деревьях разбиение на
поддеревья происходит по измерению, которое выбирается случайно из D
измерений с наибольшей дисперсией. При этом будем использовать ​i-​арные
деревья, чтобы обеспечить большую гибкость алгоритма. При построении дерева
точки рекурсивно разбиваются на кластеры и размещаются в дереве, на каждом
шаге кластер делится на ​i новых кластеров. Данный алгоритм зависит от ряда
параметров: размерность и арность деревьев, искомая точность аппроксимации
ближайшего соседа.
Одним из важных вопросов в общем случае работы с детекторами точек
является
установление
пороговых
значений:
расстояний
между
векторами-дескрипторами, при котором пару точек на разных фотографиях
можно сопоставить одной точке в пространстве. Однако при аэрофотосъёмке этот
вопрос не столь актуален, так как дескрипторы точек интереса в данной задаче
получаются достаточно уникальными. Но при этом проявляется одна из проблем
детектора SURF: меньшая устойчивость его дескрипторов к смене угла обзора
(повороту изображения). В процессе работы детекторов возникает конфликт
«качества» работы алгоритма и его быстродействия. Выбор детектора зависит от
типа решаемой задачи. В критичных по времени задачах, таких как сшивка
изображений в реальном времени, SURF кажется более приоритетным вариантом.
В других задачах использование SIFT может избавить от ряда серьёзных проблем,
связанных с недостаточностью статистической выборки. Основным недостатком
SURF в данной задаче является плохая устойчивость к повороту изображения
(несмотря на то, что во многих источниках сказано обратное). Далее приведён
вычислительный эксперимент, подтверждающий это. В нем рассмотрены две
последовательных фотографии, полученные при АФС. При этом точки на
фотографиях будут сопоставляться двумя способами: непосредственно на двух
последовательных снимках и в случае, когда вторая фото- графия развёрнута на
33
90°. Далее построен график зависимости отношения количества сопоставленных
пар от пороговых значений в SIFT и SURF. При этом крайние на графиках
пороговые значения выбраны так, что число сопоставленных точек при них у
SIFT и SURF примерно равны на двух последовательных изображениях.
Очевидно, что чем ближе данный коэффициент к единице, тем устойчивей
полученные дескрипторы к повороту. SIFT значительно лучше SURF по этому
показателю.
Другой существенной проблемой является наличие различных шумов на
изображении. Чтобы теоретически решить задачу о взаимном расположении
камер, достаточно восьми пар точек [1]. Однако шум приводит к тому, что
решение, полученное в чистом виде по восьми точкам, может быть ошибочным.
Для решения этой проблемы приходится использовать статистические методы
обработки выбросов. Алгоритмы детекторов и сопоставления позволяют получить
достаточное число пар точек.
Было замечено большое время выполнения алгоритма, так как в нем
происходит последовательное сравнение пикселя с пикселем. В случае
изображения с большим разрешением тратится неприемлемо большое количество
времени.
Тем не менее, этот метод может вернуть неверные преобразования в силу
различных причин. Одна из них – в местоположении, где мера подобия для окон
обычно
минимальна,
предполагается
преобразования
для
оптимального
выравнивания изображений. В случае, если интенсивность между смежными
изображениями существенно отличается, абсолютные значения различий средней
интенсивности может не служить достаточным признаком для похожести
изображений.
Как результат, вышеописанная методология не привела к значительным
результатам в опыте, при котором съемка изображений производилась с
мультироторного БПЛА. Однако, существует альтернативный алгоритм, который
34
может быть использован и принесет хорошие результаты с достаточной
точностью, но его задержка влияет на производительность системы.
1.4 Разработка подхода к автоматизированному построению
фотоплана местности
Сшивка
панорамного
изображения
широко
представлена
в
исследовательской литературе и коммерческом применении [11]. Методы
автоматического выравнивания и монтажа аэрофотоснимков обычно разделяются
на два типа: прямые и основанные на свойствах. Прямые методы направлены на
многократную оценку параметров камеры путем минимизации функции ошибок,
основанной на разнице интенсивности в области наложения. Их преимущество
заключается в использовании всех доступных данных изображения, и потому они
предоставляют достаточно аккуратные записи, но требуют, как уже было
отмечено, весьма тщательной инициализации.
Базовая геометрия достаточно понятна и включает оценку матрицы камеры
3×3 (гомография) для каждого изображения. Данный процесс требует оценку
инициализации, обычно вводимую пользователем, для грубого выравнивания или
упорядочения
изображений.
Например,
для
некоторого
программного
обеспечения необходимо горизонтальное или вертикальное сканирование,
квадратная матрица изображений или пользовательский интерфейс для получения
приблизительного местоположения изображений с мышью, используемой для
автоматического сравнения (comparation).
Для
сшивки
изображений
использовался
фреймворкAccord.NET,
расширенный вариант фреймворкаAForge.NET (фреймворк на С# с открытым
исходным кодом, созданный для разработчиков и исследователей в области
компьютерного зрения и искусственного интеллекта – обработка изображений,
35
нейронные сети, генетические алгоритмы, нечеткая логика, машинное обучение,
робототехника и т.д.).
Accord.NET реализует инструменты и возможности, недоступные в
AForge.NET: среди прочего, для разработки программ по автоматической склейки
изображений и для автоматического создания панорам.
В приведенных ниже примерах будет наглядно продемонстрировано, как
использовать возможности Accord.NET для склейки двух изображений и создания
небольшой и несложной панорамы.
Методы,
соответствия
основанные
между
вхождениями.
на
точками,
Местные
признаках,
линиями
инвариантные
начинаются
или
другими
особенности
с
установления
геометрическими
используются
для
нахождения совпадений между всеми изображениями. Последнее делает работу
невосприимчивой:
порядок, ориентация, масштаб и освещение входных
изображений, а также невосприимчивость к шумам изображения, не являющимся
частью ландшафта. Также существует возможность распознания многочисленных
панорам из множества неупорядоченных изображений.
Выделение характерных точек на изображении может привести к
получению различных результатов, зависящих от используемых методов.
Принимая во внимание скорость и точность нахождения указанных точек, можно
выделить большое число различных алгоритмов, каждый из которых обладает
своими достоинствами и недостатками. В дальнейшем опишем три алгоритма,
примененных
для выделения характерных точек. Реализация некоторых
алгоритмов инвариантна к масштабу, вращению или смене освещенности;
последнее
предполагает
улучшенный
выбор
характерных
точек,
и,
соответственно, большие возможности достичь подходящего смешивания.
Обнаружение корректных характерных точек играет важную роль для
правильной склейки. Это самый первый шаг, таким образом, крайне важно
выбрать правильный детектор таких точек. В качестве примера рассмотрим
36
угловой детектор Харриса, который был изобретен Крисом Харрисом и Майком
Стивенсом в 1988 г. [10]; это была только фаза обработки, направленная на анализ
окружающей робота среды, представленной изображениями.
Детектор Харриса ищет в соседних областях точки с большими
изменениями интенсивности. Отличительная черта этого алгоритма ведет к
нахождению в большинстве случаев углов и границ. Целью является выявление
признаков углов и использование нормированной взаимной корреляции значений
локальной интенсивности в конкретных точках для поиска соответствий.
Прототип детектора Харриса был разработан Моравеком; позднее Харрис и
Стивенс усовершенствовали его, предположив, что дифференциал угла наиболее
полезен, в отличие от непосредственного направления движения.
Для создания панорамы, имея уже определенные значения исследуемых
точек между двумя изображениями, одно изображение проецируется поверх
другого. Для получения более детальной информации о виде указанных
характерных точек Вы можете изучить исходный код для детектора углов
Харриса, разработанный Сезаром Де Суза.
Ниже, на рисунке 12, представлен реальный пример характерных точек,
полученный с помощью детектора углов Харриса. Здесь использованы два
изображения различного размера, на которых изображен вид земли сверху.
Рисунок 12 - Изображения, на которых не отмечены исследуемые точки
Данный алгоритм достаточно быстр (0.28 секунд на обнаружение
приблизительно
2500
исследуемых
точек),
что
является
отличительной
особенностью данного алгоритма. Данным атрибутом не стоит пренебрегать,
37
особенно в случае с системами реального времени, где существуют жесткие
ограничения на время отклика. Однако поразительное быстродействие алгоритма
не может сравнено с его надежностью; на деле данный детектор может вернуть
различные результаты в зависимости от ориентации и размера изображения.
Программный код был реализован с использованием С# фреймворка
Accord.NET – расширением отличного фреймворка AForge.NET.
Работа с проблемой полностью автоматического смешения многократных
изображений, содержащих вид сверху, рассматриваются в отчете профессора
Дэвида Г.Лоу из Британского Колумбического университета (Ванкувер, Канада).
Лоу в своей публикации описал особенность алгоритма масштабно-инвариантной
трансформации признаков [19], используемого в машинном зрении для
обнаружения локальных особенностей по изображениям.
Основанный на признаках метод начинается с установления соответствия
между точками, линиями или другими геометрическими объектами.
Они не требуют инициализации, однако традиционные методы (такие как
корреляция частей изображений по углам Харриса) не обладают инвариантными
свойствами, необходимыми для достоверного соответствия произвольной
последовательности панорамных изображений. Подход масштабно-инвариантной
трансформации признаков (SIFT) основан на инвариантных особенностях [20] для
достижения «стыка» полностью автоматического панорамного изображения. По
сравнению с предыдущим подходом он обладает несколькими преимуществами:
- использование инвариантных особенностей позволяет провести надежное
соответствие последовательностей изображения и панорам, несмотря на
вращение,
изменение
масштаба
и
изменение
освещения
на
входных
изображениях.
- рассматривая склейку изображений как проблему совмещения нескольких
изображений, является возможным автоматически обнаруживать отношения
38
соответствия
между
изображениями
и
распознанными
ландшафтами
в
неупорядоченном множестве данных.
- алгоритм может привести к получению высококачественных результатов с
использованием многополосного сопряжения для отображения бесшовных
панорам.
Алгоритм SIFT обнаруживает большее число характерных точек, чем
детектор Харриса, который сокращает вероятность ошибки локальных вариаций
средних ошибок среди всех ошибок совпадения признаков. Лоу был необходим
метод для отождествления объектов с изображениями, и, даже в случае, если
данный объект частично перекрыт другим объектом, его алгоритм достаточно
мощен для того, чтобы распознать искомый объект.
Также алгоритм SIFT обладает недостатком, вытекающим из преимущества.
Стоимость поиска нескольких характерных точек такова, что оказывает влияние
на время, потраченное на выполнение алгоритма, что является большим
компромиссом между качеством характерных точек и быстродействием системы.
Представленный Гербертом Беем в 2006 году [12], алгоритм ускоренного
обнаружения устойчивых признаков (SURF) является дескриптором и детектором
характерных точек, инвариантных к повороту и масштабированию, используемым
в работах по машинному зрению, таких как трехмерная реконструкция и
распознавание объектов. Также он является улучшением алгоритма SIFT,
гарантирующее лучшую эффективность.
Реализация алгоритмаSURF во много раз быстрее, чем SIFT, и, являя собой
улучшение последнего, демонстрирует большую устойчивость к различным
преобразованиям изображения, чем SIFT.
Для обнаружения признаков рассматривают величину, являющуюся суммой
откликов Хаара Вейвлета [21], применяемую многократно вокруг точек.
У каждой исследуемой точки имеется окружение, для которого вычисляется
дескриптор. Область должна иметь форму квадрата и разделяется на несколько
39
подобластей. Число таких дескрипторов также влияет на число производимых
вычислений. В самом простом случае, нормированный по масштабу детерминант
Гессианы, вычисленный из волн Хаара, используется в качестве базисного
оператора для исследуемой точки в дескрипторе SURF. Гессиана является
важным фактором; на практике точка становится характерной только в случае,
если значение гессианы больше порогового. Далее представлен скриншот,
полученный с помощью алгоритма SURF, на котором извлечены только
характерные точки с гессианой, превосходящей 500 и базисными дескрипторами
(по 64 элемента каждый).
Для проведения сравнения с детектором Харриса использовался для обоих
методов одинаковые изображения, и, в данном конкретном случае, число
полученных характерных точек отличалось несущественно. Сразу стало ясно, что
время, затраченное на выявление исследуемых точек в два раза больше, чем по
методу Харрису. Это приемлемо, так как найденные характерные точки
устойчивы к шуму, и, как уже было отмечено выше, инварианты к
масштабированию и повороту.
После получения характерных точек методами, описанными выше,
необходимо проанализировать их для того, чтобы найти соответствующие друг
другу точки на двух различных изображениях. Цель – итерационно рассматривать
пиксели вокруг характерной точки первого изображения и коррелировать их с
пикселями вокруг всех остальных точек второго изображения.
Важно устанавливать однозначное соответствие между характерными
точками.
Взаимная
корреляция
[14]
сравнивает
локальное
окружение
исследуемых точек и возвращает величину меры подобия, вычисляемую как
N
C= ∑
N
∑
i=−N j=−N
(I (x − i, y − j ) − I) (I ′ (x − i, y − j ) − I ′) .
′
′
(12)
Данное значение является величиной корреляции между двумя точками
(x, y ) и (x′, y ′) , I и I ′ - значения интенсивности в данных точках, I и I′ - среднее
40
значение интенсивности рассматриваемой области, ​
N п
​ редставляет собой
величину данной области.
С помощью указанной формулы взаимная корреляция рассчитывается для
каждой
возможной
комбинации.
Наибольшее
значение
двунаправленной
корреляции означает, что пара точек согласована. Однако, существуют случаи,
когда множество точек были соотнесены неверно, и потому необходим механизм,
с помощью которого можно будет понять, какая пара точек была соотнесена
ошибочно. Число характерных точек, найденных на предыдущем шаге, влияет на
результаты данного метода. Для получения оптимального решения необязательно
иметь несколько характерных точек, однако только с несколькими точками число
ошибочных пар становится большей долей, и использование RANSAC4.3 может
скорректировать ложную связь между двумя точками.
RANSAC – аббревиатура от RANdom Sample Consensus. Данный метод
был
опубликован
Фишлером
и
Боллесом
в
1981
году
[8,9].
Это
недетерминированный алгоритм, так как он не гарантирует получение
приемлемых результатов, а вероятность успеха возрастает с числом проделанных
итераций.
RANSAC различает два типа данных – «инлайеры» и «аутлайеры».
«Инлайеры» - данные, сравненные с набором данных, следующие определенному
правилу, которое может быть представлено в виде математической модели.
«Аутлайеры» - ошибочные данные, которые не удовлетворяют данной модели и
статистическому критерию «инлайеров».
В нашем случае данный тип данных является следствием ошибочной
корреляции.
Проанализированные методом RANSAC данные являются гомографией
коррелируемых характерных точек. «Аутлайеры» - ошибки взаимной корреляции
интенсивности, а «инлайеры» - хорошая связь между исследуемыми точками.
41
RANSAC – алгоритм, который итеративно следуя по множеству
результатов измерений, оценивает параметры математической модели и пытается
найти «аутлайер» и разъединить их (исключить его).
RANSAC пытается отыскать наилучшую модель, тестируя различную
взаимосвязь между характерными точками; гомография, возвращающая самое
большое число корректных совпадений, выбирается в качестве решения.
Как видно из рисунка X «аутлайеры» - это диагональные линии, которые
не следуют статистическому направлению «инлайер». Эти неверные корреляции
могут вызвать затруднения на стадии сопряжения изображений, таким образом,
они должны быть удалены с RANSAC.
Рисунок 13 - Изображения с характерными коррелирующими точками,
отмеченными белым («инлайер» и «аутлайер»)
Рисунок 14 - Изображения после выполнения RANSAC (белым отмечены
только «инлайеры»)
Эффекты от RANSAC приведены на рисунке X, только верные совпадения
на изображениях не исчезают. Это происходит потому, что RANSAC
действительно находит матрицу гомографии, которая связывает большинство
42
точек, и отвергает неверные совпадения как «аутлайеры». Фреймворки
AForge.netи Accord.net предоставляют все инструменты для осуществления
алгоритма RANSAC.
Коррелирование характерных точек двух изображений дает возможность
определить модель, которая может преобразовать точки одного изображений к
другому. В данном разделе речь идет о матрице гомографии, которая включает в
себя много видов преобразований. Это дает возможность наложить два
изображения согласно положению коррелированных характерных точек. В
гомографии разрешается использовать проективные преобразования, которые
устанавливают
параллелизм).
соответствие
Применение
линий
матрицы
(при
этом
гомографии
необязательно
позволяет
сохраняет
использовать
аффинные преобразования, которые изменяют форму изображений, и дает
ощущение, что изменяется точка зрения наблюдателя. Аффинное преобразование
соблюдает прямоту линий и отношения сторон, таким образом, сохраняя принцип
параллельности. В основном для того, чтобы применить преобразование,
необходимо матричное умножение. Примерами аффинных преобразований
являются масштабирование, смещение и вращение. Проблема состоит в том, что
смещение не может быть представлено с помощью произведения матриц 2*2. Для
решения данной проблемы является возможным добавить дополнительную
координату k к каждой точке, таким образом, каждый пиксель изображения
характеризуется как P(x,y,k) вместо P(x,y), kв таком случае – гомогенная
координата, коэффициент масштабирования. Два набора гомогенных координат
обозначают одну и ту же точку, если они кратны друг другу. Например, P(3,2,5) и
P(6,4,10)представляют одну и ту же точку. Если k отлично от 0, Вы можете
разделить на него x и y и получить декартовские координаты точки (x/k, y/k, 1). С
k=0 точка называется бесконечно удаленной.
Размеры матрицы гомографии – матрица 3 на 3 с 8 степенями свободы, что
вызвано гомогенными координатами.
43
Гомогенные координаты важны, если Вы хотите использовать матрицу
преобразований для аффинных преобразований; это означает, что добавление
дальнейших координат расширяет двухмерную матрицу преобразований одним
рядом и одной строкой. Таким образом, любое линейное преобразование может
быть воспроизведено, как представлено на рисунке 4.4.1, общей матрицей
преобразования, назначением нулей всем значениям последней колонки и ряда, за
исключением нижнего правого угла. Значение данного элемента для упрощения
вычислений всегда равно 1.
{a b 0 d e 0 0 0 1 } .
(13)
Матрица гомографии, представленная должна быть итеративно множена на
характерные точки первого изображения для обнаружения лучшей взаимосвязи
между характерными точками другого изображения.
{a b с d e f g h 1 } .
(14)
В формуле (14) отображена общая матрица гомографии. Очевидно, что
гомогенные координаты характерной точки определяются кортежем <x,y,k>.
{a b с d e f g h 1 } × {x y k } = {x′ y ′ k ′ } .
(15)
Произведение матрицы гомографии и гомогенных координат характерной
точки определяет то, каким образом привести гомогенные координаты точки к ее
оригинальным Декартовским. Для этого необходимо просто разделить каждую
координату
на
масштабный
коэффициент
k,
а
затем,
после
деления,
проигнорировать последнюю координату и принять во внимание только первые
две компоненты.
〈x′,y ′,k ′〉
k′
y
y
= 〈 kx′′ , k′′ , kk′′ 〉 = 〈 kx′′ , k′′ , 1〉 .
y′
〈 kx′′ , k′ 〉 = P xy .
(16)
(17)
В формулах (16) и (17) отображен переход от гомогенных координат к
декартовым координатам
44
Благодаря матрице гомографии и извлечению точек по методу SURF, могут
быть соединены изображения, имеющую равную общую зону. Поскольку SURF
инвариантен к аффинным преобразованиям, чем пользуется матрица гомографии,
два данных изображения могут масштабироваться, сдвигаться и вращаться. В то
же время блендинг изображений должно проводиться в соответствии с матрицей
гомографии. Для этого может использовать линейный градиент альфа для того,
чтобы сопрягать зоны, перекрытые двумя изображениями. Градиент управляет
заключительным
изображением
согласно
положению
пикселя
с
учетом
средневзвешенной величины в соответствии с расстоянием от центров этих двух
изображений.
На рисунке 15 исследовано поведение всего метода склейки изображений с
использованием
изображения,
отличающегося
от
другого
70%-ным
масштабированием и допустимым сдвигом.
Рисунок 15 - Изображения, подвергнутые операциям масштабирования и
перемещения
Как видно из рисунка 15, склейка прошла успешно и с 70%-ным
масштабированием изображений алгоритм также справился. Преобразование
масштабирования соответствует изменению высоты БПЛА; но между двумя
изображениями, снятыми с разницей в 5 секунд, маловероятно существование
большего масштабирования.
45
Рисунок 16 - Финальное наложение двух смещенных и масштабированных
изображений
Теперь рассмотрим на рисунках 16 и 17 производительность системы со
смещением и сдвигом изображений, применен поворот на 10 градусов и 20%-ное
смещение.
Рисунок 17 - Финальное наложение двух смещенных и повернутых
изображений
Использование данного метода с углом вращения между двумя
изображениями больше чем 10 градусов ведет к неудовлетворительному качеству
заключительной картины. Это является следствием метода выделения признаков,
так как на практике SURF частично инвариантен к аффинным преобразованиям.
Это означает, что характерные точки, выделенные на различных изображениях,
могут не быть теми же самыми, если угол вращения и длина сдвига существенны.
Если выделенные точки различаются, тогда сшиваемое изображение
ошибочно. Это не огромная проблема, потому что директивы проекта должны
были присоединить изображения с более или менее одинаковым углом поворота и
небольшим сдвигом. Все это из-за пути автоматизированного пути БПЛА.
46
2 РАЗРАБОТКА АЛГОРИТМА И МЕТОДИКИ КЛАССИФИКАЦИИ
ИЗОБРАЖЕНИЙ ПО ХАРАКТЕРУ РЕЛЬЕФА МЕСТНОСТИ
2.1 Анализ существующих методов и подходов классификации
Классификация ​- это компьютерное дешифрирование снимков или процесс
автоматизированного подразделения всех пикселей снимка на группы (классы),
которые соответствуют разным объектам.
Преимущественно используются следующие виды классификаций:
−
Классификация с учителем;
−
Классификация без учителя.
Классификация с учителем -​это процесс, при котором происходит
сравнение значения яркости каждого пикселя с эталонами, в результате, каждый
пиксель относится к наиболее подходящему классу объектов. Классификацию с
учителем возможно применять при выполнении следующих условий:
−
заранее известно, какие объекты есть на снимке;
−
на снимке имеется небольшое количество (до 30) классов;
−
эти классы четко различаются на снимке.
Процесс классификации с учителем включает в себя несколько этапов.
−
определение
задач
обработки
снимка
и
выбор
способа
классификации;
−
выбор эталонных участков;
−
проведение классификации и оценка качества результатов.
В настоящей работе будет применяться подход обучения с учителем, т.к. в
данном контексте он более применим ввиду известного количества классов и их
расположения на снимках.
На рисунке 44 изображены этапы получения и обработки изображений,
полученных в ходе проведения аэрофотосъемки строительных объектов. Общая
47
концепция начинается с этапа определения задач обработки снимка и выбора
способа классификации, где на данном этапе обработки снимка нужно определить
список дешифрируемых объектов и оценить характер распределения значений
яркости этих объектов.
Рисунок 18 - Этапы получения и обработки изображений
Наиболее распространенные методы классификации без обучения:
1.
ISODATA;
2.
K-Средних.
Метод
классификации
без
обучения
ISODATA
(Итерационная
самоорганизующаяся методика анализа данных - Iterative Self-Organizing Data
Analysis Technique). ISODATA это процесс, который основан на кластерном
анализе. К одному классу относятся пикселы, значения яркости которых наиболее
близки в пространстве спектральных признаков.
Этапы классификации ISODATA:
48
−
расчет статистических параметров распределения яркостей всего
снимка в каждой спектральной зоне (минимальное, максимальное, среднее
значение, стандартное отклонение);
−
все пиксели снимка делятся на n равных диапазонов в пространстве
спектральных признаков, для каждого из них определяется среднее значение;
−
первая итерация кластеризации, то есть в пространстве спектральных
признаков для каждого пикселя рассчитывается спектральное расстояние до
средних значений, и каждый пиксель относят в определенный кластер. В один
кластер попадают те пиксели, между которыми меньше расстояния в
пространстве спектральных признаков;
−
расчет реальных средних значений для полученных классов;
−
следующая итерация с новыми значениями средних, и уточнение
границ классов, при этом число классов может меняться.
Процесс продолжается до тех пор, пока не будет достигнуто максимальное
(заранее установленное) количество итераций или достигнут максимальный
процент пикселей не изменивших свой класс во время последней итерации этот
параметр тоже задается заранее).
Метод классификации без обучения K-Средних Отличается от метода
ISODATA тем, что требует изначального задания некоторого количества средних
значений для формирования начальных классов, следовательно, этот метод
используют, когда объекты на снимке достаточно хорошо различаются.
3.2 Классификация изображений по визуальным признакам
Современные
предоставлять
датчики
ультравысокое
авионики
разрешение
и
платформы
данных,
БПЛА
получаемых
способны
в
ходе
дистанционного зондирования земли (вплоть до 30см точность снимков выборки).
Это является важным источником получения информации о плотности застройки
49
городской среды, однако, данный подход ещё недостаточно изучен. Масштабные
различия городских объектов и их спектральная изменчивость наряду с
перспективой
фотопланов
местности
вносят
большие
трудности
для
проектирования описательных характеристик.
В данной работе предлагается профиль двойной морфологии профиля
цилиндра, использующий морфологическое наращивание и эрозию с различной
степенью детализации. Вследствие высокого разрешения пространства признаков
предлагается взвешенная процедура отбора для понижения степени размерности
пространства в соответствии с обучающей выборкой. Данный подход получает
дополнительную информацию из изображений посредством DSM (цифровая
модель рельефа). Для иерархической классификации используется классификатор
случайный
лес.
Количественный результаты экспериментов получены с
использованием изображений ультравысокого разрешения. Данный метод в
результате экспериментов показал, что достигается эффективность 10% по
сравнению с хорошо известным дифференциальным морфологическим профилем.
Исходными
данными
для
таких
качественных
экспериментов
являются
изображения разрешения 20.000 х 20.000 пикселей. В ходе экспериментов также
установлено, что точность классификации возрастает с применением цифровой
модели рельефа. К примеру, точность классификации с использованием только
спектральной информации составила 69%, в то время, как предложенный метод
позволил поднять точность до 95%.
Классификация земной поверхности хорошо изученная задача, но сложная
проблема, которая играет важную роль в интерпретации данных о дистанционном
зондировании. Большинство предыдущих исследований сосредотачивалось на
изображениях невысокого разрешения для классификации на поверхностном
уровне, которые были широко используемы для изучения динамики роста городов
и составления карт лесных насаждений. Современные технологии и темпы
развития аэрокосмических датчиков подняли интерес в исследовании методов
50
получения
пространственных
особенностей
классификации
растительных
покровов. Некоторые методы достигли приемлемых результатов, используя
изображения ультравысокого разрешения для классификации на строительном
уровне, используя 2-мерные пространственные признаки.
Интерпретация такого вида данных очень важна для городского
управления объектом и моделирования, так как объекты, которые меньше, чем
строительные здания становятся лучше видимы и значительны по изображениям
ультравысокого разрешения, таким как автобусные станции и автомобили. Из-за
большой перспективы и высоких спектральных изменений, пространственных
особенностей изображений может не быть достаточно для классификации
изображений ультравысокого разрешения.
Существуют многочисленные работы, рассматривающие улучшение
классификатора и особенности представление для классификации. Милонас [10]
предложил улучшить пространственное представление, используя нечеткий метод
сегментации и принятую голосующую стратегию в пределах сегментов,
основанных на пиксельной классификации. Туиа и др. [11] предложили
мультиядерный подход, который объединял различные ядерные функции
векторной машины (SVM или метод опорных векторов) для обращения к
различным видам признаков.
Хестер
и
др.
[12]
применили
ISODATA
(повторяющийся
самоорганизующийся метод анализа данных) к диапазонам изображений VHR и
сообщили о полной точности в 89.0%. Однако, в их работах земля, здания, крыши
и дороги были все определены как непроницаемые объекты, чего в итоге было
недостаточно для городских геоинформационных приложений. Однако принимая
одну только спектральную информацию к различию этих объектов посредством
классификации, велика вероятность исхода с плохими результатами.
Недавнее исследование данного вопроса показало, что было принято
ученым Пацифичи и др. [6] для классификация изображений VHR через
51
нейронную
сеть,
приводящую к удовлетворительной точности, даже с
панхроматическими изображениями. LWEA был предложен Шэкелфордом и
Дэвисом [15], который извлек спектрально подобную область, окружающую
центральный пиксель, излучая поисковые линии от этого центрального пикселя и
описал пространственную особенность этого пикселя, используя самый длинный
и самый короткий диаметр для этой области. Чжан и др. [13] расширил это
представление, считая число пикселей на поисковой линии, приводящее к
упрощенной одномерной пространственной особенности, пиксельным индексом
формы (PSI).
3D-вейвлет анализ был принят как индикатор городской сложности,
поскольку описывает пространственное изменение в области небольшой волны.
Дальнейшее развитие от Хуана и Чжана [19] привело многомасштабному
подходу, изменяющему размер окна и уровень разложения для более надежного
пространственного
представления.
Рассматривая
проблемы
масштаба
изображений VHR и специальных характеристик особенностей вектора среднего
изменения [20], Цинь [21] предложил среднее изменение (MSVSF), основанное на
векторе,
форма
и
особенность
которого
стремилась
дифференцировать
пространственные образцы между бетонными крышами и дорогами.
О более высокой точности классификации, чем LWEA и PSI сообщили,
используя MSVSF на опытном наборе данных. Пезарези и Бенедиктссон [22]
вычислили ряд серой шкалы морфологической реконструкции, используя
изображения дистанционного зондирования и изменяя размер структурных
элементов, чтобы построить DMP, продемонстрировав тем самым эффективные
улучшения для классификации данных о дистанционном зондировании VHR [23].
Вышеупомянутые пространственные особенности были предложены в
2-мерном контексте, где 2-мерный пространственный образец изображений основной источник входных данных. Несколько исследователей сообщили о
возможности интеграции третьего измерения (информация о высоте), которая
52
могла значительно улучшить классификацию. [24,25]. Это обеспечило новый путь
исследования; однако, получение данных о точной высоте было дорогим. Идея
использовать Digital Surface Model (DSM/ЦМР) для интерпретации данных
дистанционного зондирования была недавно популяризирована развитием
плотного алгоритма соответствия, который произвел относительно надежный
DSM из фотограмметрических изображений.
Довольно много исследовательских работ были посвящены использованию
полученной из 3D-изображения информации для обнаружения объектов в
трёхмерном
пространстве
результаты,
однако,
[26–28],
интеграция
которая
DSM
для
обеспечила
более
классификации
надежные
данных
о
дистанционном зондировании не была полностью исследована. Только некоторые
работы непосредственно или косвенно коснулись данной проблемы. Цинь и др.
[29] объединил ортофотоплан и DSM для контролируемой классификации для
обнаружения изменения и сообщил о более чем 90% точности. Цинь [30],
работающий с другими, применил DSM для обнаружения строительных объектов,
и DSM временных рядов, использованных для улучшения точности обнаружения.
Недавняя работа от Гу и др. [31] предложила мультиядерную обучающую модель
для комбинирования спектральной, пространственной и информации о высоте, с
каждой функцией ядра согласно различным особенностям. Эти ядра были тогда
линейно объединены и оптимизированы с обычным SVM для оптимальной
работы. Большинство этих методов, главным образом, получает высоту
посредством устройства LiDAR и полученные из изображений DSM не были
полностью оценены.
В данной работе рассматривается проблема классификации земной
поверхности, используя цифровую модель рельефа. По сравнению с задачей
классификации данных высокого разрешения (VHR), данные ультравысокого
разрешения (UHR) более изменчивы, что приводит к большим вычислительным
53
затратам при классификации, основанной на пикселях, а также в данной ситуации
появляется двусмысленность спектральных данных городской среды.
Для решения данной проблемы предлагается двойной морфологический
профиль
цилиндра
(DMTHP),
позволяющий
извлекать
пространственные
особенности из ортофотопланов и цифровых моделей рельефов. Рассматривая
многомерное пространство признаков обычных морфологических профилей,
размеры структурных элементов оцениваются через обучающий набор данных,
что позволяет избежать сложных вычислений морфологии за счёт уменьшения
пространства признаков методом главных компонент PCA.
Метод сегментации ​Mean-shift применён для сегментации на основе
объектов, что позволяет использовать ортофотопланы и цифровые модели
рельефов.
В
данной работе основной задачей классификации является
использование дополнительной информации для более точного распознавания
типов поверхностей. По причине двусмысленности спектральных данных
ультравысокого разрешения и большого перспективного искажения слабо
рассматривается
классификация
таких
данных.
За
счёт
включения
3D-информации, полученной в результате построения цифровой модели рельефа,
возможно увеличение точности классификации земной поверхности .
3.3 Методика применения математической морфологии для
классификации изображений
Математическая
морфология
является
мощным
инструментом
для
обработки изображений. Изначально данный раздел математики применялся для
работы с бинарными изображениями, а затем сфера его применения расширилась
до изображений, представленных в градации серого. С помощью морфологий
возможно
описывать
пространственные
отношения
между
объектами
изображения, а также выделять контекстную информацию. Для решения
54
поставленной задачи является перспективным использование морфологической
реконструкции,
где
изображение
J может быть получено как ​Bj,i​ из
​
изображения-маркера ​I путём нахождения его максимумов. Изображение ​М
обычно получается в результате применения операции эрозии к изображению ​I с
использованием структурного элемента ​
e.​ По своей сути процесс восстановления
представляет собой итеративное применение операций морфологического
наращивания или эрозия. Итеративное применение операции эрозии обозначается
как ​
BJ​​,​ε(​J,e),​где ​ε​(J,e)​операция морфологической эрозии.
ε(J, e)(i, j)=min{J(p − a, q − b)|,e(a, b) = 1}.
(39)
Аналогичным образом можно представить операцию морфологического
наращивания.
d(J, e)(i, j) = max{J(p − a, q − b)|,e(a, b) = 1}.
(40)
Песареси и Бенедиктссон, объединив эти два типа морфологического
преобразования, предложили использовать набор структурных элементов с
различными
размерами
создаваемого
морфологического
профиля
(МП),
обладающего свойством многомасштабности.
MP​N​(J)={BJ,ε(J,e1)
​ ​,BJ,ε(J,e2)
​ ,…,B
​
,B
​
,…,B
​
​
J,ε(J,eN)
​ ​
d(J,e1),J​,Bd(J,e2),J
​
d(J,eN),J
​}.
(41)
где {​ei​} - множество структурных элементов разного масштаба.
Полученная форма называется дифференциальным морфологическим
профилем (ДМП), определённым как дифференциал профилей:
∆​n​=B​J,ε(J,en)−B
​
​​(J,en−1),J​.
​
J,ε(J,en−1)
​,∆'​
n​= B​
​(J,en),J−B
​
(42)
DMPN​(J)={∆
​,∆'
​}​ ​.
​
1​,∆
​ 2​,…,∆
​
N
​ ​
1​, ∆'​
2​,…,∆'N
(43)
Данный подход эффективен для понимания структурных различий
содержимого изображения на различных масштабах. Морфологические профили
и
дифференциальные
морфологические
профили
были
применены
Бенедиктссоном для классификации изображений городской среды высокого
разрешения. Туиа и другие исследователи применяли набор морфологических
55
операторов
для
классификации
панхроматических
изображений
и
демонстрировали эффективность морфологических профилей.
Морфологические цилиндрические профили определяются пиками на сетке
изображения, рассчитанными в результате морфологических операций. Цилиндры
могут детектировать пространственные скопления на изображении, где каждый
такой сгусток может быть использован успешно для представления городских
структур, таких как здания, автомобили и тени, отбрасываемые зданиями. Хуан и
Чжан
применили
разнонаправленные
морфологические
цилиндрические
преобразования для детектирования зданий и теней в панхроматических
изображениях. Они предположили, что зданиями в основном представлены
светлыми скоплениями, в то время как тени - тёмными. Цинь и Фан обнаружили,
что высота блобов (сгустки на изображении) является лучшим индексом для
представления
зданий.
Для
более
точного
детектирования зданий они
использовали комбинированный метод, включающий в себя так называемый
индекс NDVI (Normalized Difference Vegetation Index).
Успешное применение цилиндрических профилей для детектирования
сооружений
вдохновило
на
создание
цилиндрических
морфологических
профилей, чтобы было возможным иметь дело со зданиями разного масштаба. В
данной
работе
рассматриваются
два
типа
морфологических цилиндров,
цилиндрическая реконструкция THR и цилиндрическая эрозия THE, которые
могут быть представлены следующим образом.
THR(J,e)=J−BJ,ε(J,e).
(44)
THE(J,e)=J−ε(J,e) .
(45)
THR является эффективным в качестве детектора пиков изображения.
Однако, недостатком данного типа является то, что THR не может выделять
объекты переднего плана, расположенные на наклонной поверхности (например,
провода, мосты). Данную проблему можно решить, использовав построенный
индекс NDVI. Напротив, THE легко детектирует такие объекты.
56
На рисунке 45 показан пример, где THR и THE посчитаны с использованием
структурного элемента типа "диск". Как видно из рисунка 1, THR эффективно
детектирует объекты, находящиеся выше земной поверхности, различая такие
классы объектов как дороги и земля. ТНЕ способен выделять локальные
максимумы внутри области структурного элемента, но это приводит к ошибкам в
классификации объектов местности (например, дороги). На данном рисунке в
красном круге отмечено строение, которое соединено с примыкающей дорогой,
имеющими одинаковую высоту. THR пропускает часть строений, в то время как
ТНЕ успешно детектирует их часть.
Рисунок 19 - Результаты цилиндрического наращивания и эрозии на
цифровой модели рельефа. (a) Ортофотоплан; (b) DSM; (с) THR; (d) THE
Данные преобразования могут компенсировать друг друга. Предлагается
многомасштабный подход, т.к. объекты городской застройки отличаются между
собой по размерам. Множество структурных элементов {​
e​i​} с различными
масштабами используются для построения DMTHP:
DMTHP(J)​N​={THR(J,e​1​),THR(J,e​2​),…,THR(J,e​N​),THE(J,e1​),THE(J,e
​
2​),…,THE(J
​
,e​N​)} .
(46)
Многомасштабные структурные элементы эффективны при описании
пространственных различий объектов с различными размерами. Однако, как
обозначено Бенедиктссоном и др. [23], главный недостаток такой стратегии -
57
высокая вычислительная стоимость для классификации с особенностями высокой
размерности. Чтобы уменьшить многомерность, они только используют два
наиболее важных элемента (ярко выраженные) для обучения и классификации, но
вычисление морфологической реконструкции все еще должно быть сделано в
полном масштабе, который является значительно трудоемким. Кроме того,
морфологические
цилиндрические
преобразования
могут
содержать
избыточность, так как результаты тесно связаны с масштабом объектов.
Рисунок 2 показывает пример вычисления THR и THE профилей для
различных классов. Можно заметить, что профили для различных структурных
элементов показывают различные результаты, однако, большая избыточность
может наблюдаться в профилях THR и THE в последних трёх столбцах
гистограммы, т.к. значения THR и THE остаются подобными. В представленном
рисунке для автомобиля значения остаются подобными в независимости от
изменения масштаба структурного элемента. Это происходит вследствие того, что
масштабы различных классов городских объектов в пределах определенного
диапазона могут не способствовать эффективно выделять признаки для
классификации. Только признаки около неоднородностей (сгустки) полезны,
чтобы построить отличимые признаки, соответствуя масштабу различных
городских объектов. По мере того, как обучающая выборка отобрана для
представления городского объекта, необходимо оценить границы масштаба
различных городских классов, основанных на обучаемой выборке.
Возьмём обучающую выборку для ​
N классов ​
{C​1​}n1​,​ {C2​}n
​}n
​ 2​,​ ..., {CN
​ ​
N​, где
cmi ∈ {C m } - область изображения, относящая элемент выборки к классу ​C​m,​
рассчитаем его масштаб как:
φ (сmi ) =
√
2
2
Rx (cmi ) + Ry (cmi ) .
(47)
где ​Rx() и ​Ry() ​являются диапазоном участка изображения в направлении x и
y осей соответственно. Рассчитаем верхнюю границу весов в каждом классе как:
58
( )
U B (C m ) = max⁡{φ cmi , cmi ∈ {C m }} .
(48)
Итеративно вычисляется UB(∁m) для каждого класса, после чего веса,
между которыми расстояние меньше 80 пикселей объединяются в один кластер.
Окончательные веса обозначены как {​
r}​​
k​. Таким образом DMTHP можно
представить в другом виде, где для каждого элемента производится нормализация
всех признаков в диапазоне от 0 до 1.
DMTHP(J)k​={THR(J,e
​ ),THR(J,e
​r2​),…,THR(J,erk​),THE(J,e
​r1​),THE(J,e​r2​),…,THE(J,e​rk​)}.
​
r1
​
​
(49)
Фотоснимки ультравысокого разрешения имеют большой объём данных,
поэтому необходимо уменьшить вычислительную сложность при анализе
объектов.
Чтобы полностью использовать спектральную информацию и
информацию
о высоте, принимается предложенный метод сегментации,
изложенный в работе Цина и др. [29]. Данный метод сегментации представляет
собой по существу сегментацию ​
"сдвиг среднего" (MS) [20,37], и, в то же время,
ограничивающий границу сегмента использованием карты весов, вычисляя
вероятность каждого пикселя, являющегося границей объекта. В этом методе
карта весов определена как величина Кэнни [38] из метода DSM. На каждой
итерации сегментации происходит отслеживания от выхода процедуры за
пределы пикселей с высокой граничной вероятностью. В классической
сегментации MS есть два главных параметра: пространственная полоса
пропускания ​H​s и спектральная полоса пропускания ​
H​r,​ для которых характера
пространственная близость и спектральное подобие из метода сегментации [20]. В
дополнение к классической сегментации MS имеется другой параметр ​
β​, который
контролирует выход за край карты весов.
На рисунке 46 показан пример сегментации методом синергетического
сдвига-среднего. Как видно из рисунка на втором изображении внутри красного
круга отмечена область, которая из-за перепада высот местности может нарушить
правильное определение сегментов, поэтому для более точной сегментации и для
59
дальнейшего
обучения
классификатора
установим
значения
параметров
следующим образом: ​Hs​ = 7, Hr​ = 4 и β = 0.1.​ Из-за ограничений ЦМР, ​H​r = 4
устанавливается как относительно большое значение для уменьшения эффекта так
называемой пересегментации.
Рисунок 20 - Пример классической сегментации, синергетический MS и
карты граничной вероятности, полученной из ЦМР
Классификатор случайного леса (RF) [39] широко используется для
классификации объектов обучающей выборки, признаки которых представлены в
основном дискретными характеристиками. Цинь и др. в своей работе [29]
продемонстрировал, что RF выступает лучше, чем метод опорных векторов
(SVM), объединяя высоту и спектральную информацию для классификации, так
как они не являются линейно-зависимыми с финальным вектором. В данном
эксперименте RF применен, чтобы классифицировать векторы признаков,
составленные DMTHP и спектральными особенностями. RF - по существу метод
приобретения знаний ансамблем деревьев, усредняя результат классификации
каждого дерева решений. Преимущества этого метода - улучшенная точность
из-за голосующей стратегии множества деревьев решений.
Так как спектральная особенность - главная движущая сила для
классификации, принимается метод главных компонент (PCA) для уменьшения
размерности диапазона цветов, что даёт лучшую точность классификации [13].
Особенность DMTHP применена и к ортофотоплану и к ЦМР, поскольку
морфологические преобразования на обоих источниках данных возвращают
60
полезную информацию, как показано в работе Хуан и Чжан [35] и Цинь и Фан
[36]. Для ортофотоплана применяется DMTHP к ярким и тёмным изображениям,
определеным как первые компоненты PCA, что позволит осуществить
эффективное описание ярких и темных сгустков. Для получения информации о
высоте DMTHP непосредственно применен к DSM. В итоге, связывая эти
особенности в виде векторного стека, выполняется классификация посредством
ансамбля леса. Эта процедура выделения признаков описана на рисунке 4.
Рисунок 21 - Предложенный процесс классификации поверхности
местности.
3.4 Проведение экспериментов по классификации изображений
Данные эксперименты, главным образом, ориентированы на данные о
дистанционном зондировании земли с помощью БПЛА и цель экспериментов (1) это проверка предложенной пространственного различия городских объектов, и
61
эксперимент (2) оценивает точности. Эта секция содержит три эксперимент.
Первый эксперимент выполнен на маленькой зоне испытания от набора данных с
GSD на 9 см. Второй эксперимент выполнен на наборе данных, произведенном,
используя изображения БПЛА с GSD 5 см. Оба Эксперимента 1 и 2
количественно оценены против измельченной правды. Третий эксперимент
применяет предложенный поток классификации к целому набору данных, чтобы
качественно продемонстрировать масштабируемость процедуры классификации.
Классификатор RF используется для классификации земной поверхности,
используя
500
классификации
деревьев
решений
вычислено
как
обучения, а число переменных для
квадратный
корень
размерности вектора
признаков. В данном эксперименте размерность вектора равняется 12 и 15 для
экспериментов 1 и 2 соответственно. Значительная часть тестирующей выборки
отмечена
как
справочные
данные.
Для
гарантирования
статистической
надежности классификатора применяется 5-кратная кросс-валидация (CV). Размер
обучающей и тестирующей выборки представлен в Таблице 9.
Первая тестирующая выборка и получающаяся карта классификации
показана на рисунке 22.
Можно заметить, что сцена составлена из довольно сложных объектов со
зданиями,
варьирующимися
по
формам
и
размерам
и
автомобилям,
распределенным в различных областях с различными удельными весами.
Ортофотоплан и ЦМР получены из аэрофотоснимков.
62
Рисунок 22 - а) ортофотоплан, б) ЦМР, в) увеличенная область
изображения, г) справочные данные, д) карта классификации
На рисунке показаны объекты очень высокой детализации и ЦМР, на
которой нанесена цветная маркировка, показывает, что рельеф припаркованных
автомобилей хорошо различим. Спектральная информация и ЦМР представляют
собой довольно информативные источники, чтобы классифицировать сложную
сцен.
Таблица 1 показывает статистику классификации в сравнении с оценкой
учителя. Предложенный метод достиг 93%-й полной точности. Здания и дороги
хорошо отличают друг от друга и имеют более чем 90%-ю точность
классификации. Больше чем 80% автомобилей правильно классифицированы на
карте классификации.
Результаты двух экспериментов и их интегральный анализ представлены в
таблицах 10, 11, 12.
Для второго эксперимента получены данные в результате облёта другой
территории. Ортофотоплан и ЦМР получены с помощью автоматической миссии
БПЛА по методике, как описано в работах [9,40], с точностью 5 см.
63
Таблица 1 - Результаты экспериментов
Обуча
ющий
набор
для
каждо
го
класс
а
Классы
Строение
Дорога
Дерево
Автомобиль
Трава
Земля
Тень
Вода
Всего обучающих
примеров
Всего
тестовых
примеров
Всего сегментов
Процент(%)
Эксперимент 1
51
72
51
53
52
53
53
-
Эксперимент 2
101
103
101
110
103
118
385
636
10,312
32,947
41,465
0,93
46,867
1,35
Таблица 2 - Результат классификации (Р - результат метода, U – средний
результат оценки пользователей)
Строение Дорога Дерево Автомобиль
P
94,77
95,97
96,22
83,04
U
98,66
75,87
98,37
98,88
Трава
99,33
96,90
Земля
72,20
93,15
Тень
99,23
85,51
Немного увеличенное разрешение фотоснимков обучающей выборки
приносит некоторые проблемы. Основная проблема этого набора данных состоит
в том что цвета крыши и земли очень похожи друг на друга, а также на дороги,
непосредственно связанные с парковкой. Поэтому, в этом эксперименте дороги и
земля рассматриваются как одинаковые классы объектов. Кроме того, крыши
занимают значительную часть области изображения, что создаёт потенциальные
проблемы из-за несбалансированности признаков выборки.
64
Рисунок 23 и Таблица 3 показывают получающуюся карту классификации
и связанную с ней статистику. В результате, достигнута более чем 94% точность.
Более чем 96% зданий и дорог определены верно и 83% автомобилей на
парковках правильно распознаны, что даёт в перспективе возможность для
применение
данного
метода
классификации
в
городском
управлении
инфраструктурой и анализом строительной местности.
Рисунок 23 - а) ортофотоплан, б) ЦМР, в) справочные данные, г) карта
классификации
Таблица 3 - Результаты классификации для эксперимента 2.
P
U
Строение Дорога Дерево
96,03
96,30
90,33
89,26
85,71
97,59
Автомобиль
83,04
89,86
Трава
79,63
90,91
Земля
91,95
99,98
Тень
89,15
94,48
Точность классификации растительности ниже, чем в эксперименте 1, и
это логично, так как отсутствует инфракрасная информация в данном
эксперименте.
Оба из сравнительных исследований продемонстрировали что рассмотрение
информации ЦМР обычно значительно увеличивает точность классификации
вместе с предложенным DMTHP признаком.
Объединяя ЦМР в процедуре классификации, используя предложенную
особенность DMTHP, получаются удовлетворительные результаты, однако,
существует вероятность ошибочной классификации, для избежания которой
65
необходимо наличие сбалансированного набора обучающих данных, содержащих
разнородные объекты.
Предложенный признак DMTHP основан на реконструкции с помощью
морфологических преобразований, которая требует высокой вычислительной
нагрузки. Адаптивная стратегия выбора масштаба может эффективно уменьшить
данное вычислительное время. В частности в таблице 6 отражены данные о
продолжительности вычисления DMTHP с и без адаптивного выбора масштаба.
Таблица 4 - Время выполнения экспериментов
Время (с)
Эксперимент 1
Эксперимент 2
Сегментация
471
467
467
821
821
821
Извлечение признаков 396
259
70
551
359
456
Обучение
2
7
0,5
2
1
0,5
Классификация
1,5
1,7
0,7
1,5
1,2
1
Всего
870,5 734,7 538,2 1375,5 1182,2 1278,5
Предложенный профиль морфологических преобразований (DMTHP)
извлекает пространственные особенности из ортофотоплана и ЦМР. Простая и
адаптивная стратегия выбора масштаба предлагают эффективно уменьшить
вычислительную
стоимость,
а
также
размерность
вектора
признаков.
Классификатор случайного леса был успешно применён для сегментации методом
синергетического сдвига-среднего.
66
3 ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЁННОЙ СИСТЕМЫ ДЛЯ
ДОСТУПА К МАТЕРИАЛАМ АЭРОФОТОСЪЁМКИ
ПОСРЕДСТВОМ ВЕБ-ПОРТАЛОВ
Физическое представление программной системы не может быть полным,
если отсутствует информация о том, на какой платформе и на каких вы
числительных средствах она реализована. Если разрабатывается программа,
выполняющаяся локально на компьютере пользователя и не использующая
периферийных устройств и ресурсов, то в разработке дополнительных диа грамм
нет необходимости. При разработке же корпоративных приложений наличие
таких диаграмм может быть крайне полезным для решения задач рационального
размещения компонентов, в целях эффективного использования распределенных
вычислительных и коммуникационных ресурсов сети, обеспечения безопасности
и других. Для представления общей конфигурации и топологии распределенной
программной системы в нотации UML предназначены диаграммы развертывания.
Диаграмма развертывания предназначена для визуализации элементов и
компонентов программы, существующих на этапе ее исполнения. При этом
представляются
только
компоненты-экземпляры
программы,
являющиеся
исполняемыми файлами или динамическими библиотеками. Те компоненты,
которые не используются на этапе исполнения, на диаграмме развертывания не
показываются. Диаграмма развертывания содержит графические изображения
исполнительных модулей, устройств, процессов и связей между ними. В отличие
от диаграмм логического представления, диаграмма развертывания является
единой для системы в целом, поскольку должна всецело отражать особенности ее
реализации. Разработка диаграммы развертывания, как правило, является
последним этапом спецификации модели программной системы.
67
Сформированная диаграмма развертывания позволила решить следующие
задачи:
— определить распределение компонентов системы по ее физическим
узлам;
— показать физические связи между всеми узлами реализации системы на
этапе ее исполнения;
— выявить узкие места системы и реконфигурировать ее топологию для
достижения требуемой производительности.
Если необходимо явно указать компоненты, которые размещаются на
отдельном устройстве, то это можно сделать двумя способами. Первый позволяет
разделить графический символ устройства на две секции горизонталь ной линией.
В верхней секции записывают имя устройства, а в нижней размещенные на этом
узле
компоненты.
Второй
способ
разрешает
показывать на диаграмме
развертывания устройства с вложенными изображениями процессов. Однако
нужно учитывать, что в качестве таких вложенных компонентов могут выступать
только исполняемые компоненты. В качестве дополнения к имени узла могут
использоваться различные стереотипы, которые явно специфицируют назначение
этого устройства.
На диаграммах развертывания для различных физических устройств также
допускаются
специальные
графические
обозначения,
поясняющие
и
раскрывающие назначение или выполняемые устройством функции. Кроме
изображений устройств и процессов на диаграмме развертывания указываются
отношения между ними. В качестве отношений выступают физические
соединения между устройствами и зависимости между устройствами и
компонентами, изображения которых тоже могут присутствовать на диаграммах
развертывания.
Соединения
являются
разновидностью
ассоциации
и
изображаются от резками линий без стрелок. Наличие такой линии указывает на
необходимость организации физического канала для обмена информацией между
68
со ответствующими узлами. Характер соединения может быть дополнительно
специфицирован примечанием, помеченным значением или ограничением. Кроме
соединений на диаграмме развертывания могут присутствовать отношения
зависимости между узлом и развернутыми на нем компонентами. Подобный
способ является альтернативой вложенному изображению компонентов внутри
символа узла, что не всегда удобно, поскольку делает этот символ излишне
объемным. Поэтому при большом количестве развернутых на узле компонентов
соответствующую информацию можно представить в форме отношения
зависимости. Разработка диаграммы развертывания начинается с идентификации
всех аппаратных, механических и других типов устройств, которые необходимы
для
выполнения
системой
всех
своих
функций.
В
первую
очередь
специфицируются вычислительные узлы системы, обладающие памятью и/или
процессором. При этом используются имеющиеся в языке UML стереотипы, а в
случае их отсутствия разработчики могут определить новые стереотипы.
Отдельные требования к составу аппаратных средств могут быть заданы в форме
ограничений, свойств и помеченных значений. 85 Дальнейшее построение
диаграммы
развертывания
связано
с
размещением
всех
исполняемых
компонентов диаграммы по узлам системы. Если от дельные исполняемые
компоненты оказались не размещенными, то подобная ситуация должна быть
исключена введением в модель дополнительных уз лов, содержащих процессор и
память.
Программная реализация подсистемы разграничения доступа в сети
корпоративных
проектирование
порталов
строительных
архитектуры
организаций.
программной
реализации
Осуществлено
подсистемы
разграничения доступа в сети корпоративных порталов газотранспортных
предприятий
путём:
рассмотрения
особенностей
функционирования
сети
корпоративных порталов и схемы размещения оборудования; распределения
программных компонентов и служб между устройствами. Реализация системы
69
подразумевает решение задачи организации фронтального Web-сервера, который
будет решать задачу перераспределения HTTP-трафика между информационными
ресурсами корпоративных порталов, контролируемыми одним сервером доступа.
В данном случае, фронтальный Web-сервер выступает в роли обратного
прокси-сервера (reverse proxyserver). Это, в свою, очередь накладывает
определённые ограничения на схему построения и развертывания системы.
Рисунок 24 - Схема физического распределения и организации составных
частей сети корпоративных порталов
Компоненты подсистемы управления доступом функционируют на серверах
доступа, отвечающих за отдельный пользовательский домен и ассоциированные с
ними порталы. Сервера доступа, в свою очередь, связаны с центральным сервером
управления сети (ЦУС). Каждый отдельный сервер доступа устанавливается в
70
разрыв подключения Web-сервера к корпоративной сети и сети Интернет. Он
выполняет функции маршрутизатора и брандмауэра и, соответственно, является
для Web-сервера внешним шлюзом.
Один сервер доступа может обеспечивать защищенный доступ к одному или
группе порталов, работающих на одном или нескольких серверах, которые можно
на логическом или физическом уровне отделить с помощью сервера доступа от
других
фрагментов
сети.
Определено,
что
обязательным
условием
функционирования системы является принадлежность IP-адресов доменных имен
защищаемых порталов подсетям на локальных интерфейсах сервера доступа. В
случае невозможности организации подключения сервера доступа в «раз рыв», по
причине территориальной удаленности Web-серверов или наличия нескольких
территориально удаленных точек подключения к сети Интернет, необходима
установка нескольких серверов доступа для каждой территориально удаленной
группы порталов в одном учреждении.
Выявлено, что для обеспечения надёжности информационного обмена
внутри сети и репликации данных целесообразна установка между сервером
управления сети и серверами доступа виртуальных шифрованных туннелей. Для
обеспечения
безопасности
просмотра
защищённого
контента
порта
лов
предполагается переключение пользователя после авторизации на работу по
защищённому протоколу.
Установлено, что реализация данной схемы ограничения доступа к
порталам предполагает ряд ограничений. Прежде всего, система предполагает
четкую иерархию ограничений прав доступа, которая заключается в том, что
уровни привилегий для всех дочерних разделов не могут быть ни же уровня
привилегий родительского раздела, но могут иметь более жесткие ограничения. В
этой связи необходимо упорядочивание структуры разделов порталов с целью
обеспечения эффективного управления доступом. Также целесообразно помещать
в отдельные разделы страницы с исполняемым на сервере кодом и устанавливать
71
соответствующие привилегии доступа к дан ным разделам, поскольку в
исполняемом коде может осуществляться доступ к защищаемым разделам
портала.
Концепция
реализации
подсистемы
разграничения
доступа
сети
корпоративных порталов определяет создание центра управления сетью. В его
задачи
входит
обеспечение
надежного
функционирования
подсистемы
управления сеть порталов (серверной части системы) и всех её сервисов и служб.
Распределение составных частей подсистем управления сетью между
физическими серверами должно осуществляться индивидуально в рамках
конкретного проекта, исходя их размеров сети и имеющегося оборудования.
Однако, при решении этой задачи, необходимо основываться на ключевом
принципе обеспечения отказоустойчивости, основанном на стопроцентном
дублировании и резервировании ресурсов. На основе анализа схемы построения и
функционирования подсистемы разграничения доступа в сети корпоративных
порталов газотранспортного предприятия, с учетом специфики реализации и,
имея конечной целью создание законченного технического решения в идее
аппаратно-программной плат формы, построена модель развертывания системы
на основе UML. В модели были определены необходимые для функционирования
сервисы и службы, а также их взаимосвязи и распределение по аппаратным
устройствам, тем самым формируя законченную аппаратно-программную
платформу. Данная модель представлена в приложении в виде диаграммы
развертывания системы, обеспечивая наглядное представление взаимосвязей
составных элементов готовой системы.
Следует подчеркнуть, что было реализована физическое представление
подсистемы разграничения доступа сети корпоративных порталов ГТП. Это
является основой для построения законченного технического решения в виде
аппаратно-программной платформы для развертывания сетей корпоративных
порталов.
72
Рисунок 25 - Иерархия пользователей сети корпоративных порталов
3.1 Обратный прокси-сервер и его роль в системе
В [27] описывается концепция построения подсистемы разграничения
перекрёстного доступа к ИР в сети порталов ГТП, которая призвана решать
задачи обмена информацией между предприятиями и предоставления достуа к
данным через Web-порталы в Интернет, обеспечивая при этом надежную защиту
информации от несанкционированного доступа. Для построения системы
соответствующей описанной концепции необходимо решить ряд задач. Одной из
таких задач является перераспределение HTTP-трафика между ресурсами
порталов, контролируемыми одним сервером доступа. Решение указанной задачи
требует разграничения доступа к ресурсам, организационных и технических
решений. Одним из вариантов является использование фронтального Web-сервера
в качестве обратного прокси-сервера (reverse proxy server). В этом случае
обеспечивается включение дополнительного устройства между сетью Интернет и
основным Web-сервером.
Обратный
прокси-сервер
выполняет
функции
защиты
внутреннего
периметра от внешних угроз на основе фильтрации запросов, балансировки
нагрузки на внутренние сер вера, межсетевого экранирования трафика и его
туннелирования с функцией криптографической защиты. Так как в современной
73
практике проектирования и построения информационных систем стандартом
де-факто стало объектно-ориентированный подход, позволяющий выделить
повторяющиеся архитектурные конструкции – шаблоны проектирования (design
pattern) [13, 82, 90]. Анализ шаблонов проектирования описывающих обратный
прокси-сервер В работе [110] приводится несколько шаблонов проектирования
реализующих обратный прокси-сервер в различных контекстах. Эти шаблоны
выходят за рамки простых шаблонов описанных в [90]. В тоже время освещенные
в
[13]
не
описывают
необходимую
функциональность.
Следовательно,
необходимо, ориентируясь на существующие и применяемые при проектирование
и программной разработке шаблоны, встроить в систему фронтальный Web
сервер. Обычно в схеме доступа к серверу по протоколу HTTP присутствует
брандмауэр. В нём открывается 80 порт, тем самым внешний пользователь
получает непосредственный доступ к основному Web-серверу, что даёт
возможность использовать уязвимости его программного обеспечения. В данной
ситуации целесообразно использовать фронтальный Web-сер вер (здесь выступает
как обратный прокси-сервер в контексте обеспечения безопасности, security
reverse proxy).
Обычно Web-портал конструируется из различных компонентов и требует
различного программного окружения (несколько серверов приложений или
наборов сценариев), причем разделение зачастую происходит на уровне доменов в
URI(Uniform Resource Identifier — унифицированный идентификатор ресурса), т.
е. различные компоненты портала доступны по определенным URI (рисунок 26).
В данной ситуации возникают следующие задачи:
1. Объединение ПО различных разработчиков в рамках Web-портала.
2. Сокрытие от клиента внутренней структуры Web-портала.
3. Сохранения целостности гиперссылок в рамках Web-портала, при
реорганизации.
4. Возможности балансировки нагрузки на серверы.
74
5. Возможность использования единого SSL-сертификата для различных
сервисов Web-портала.
Рисунок 26 - Типичная структура Web-портала
Для
решения
поставленных
задач
целесообразно
организовать
взаимодействие с использованием единого интегрирующего обратного прокси-сер
вера. Данных подход даёт возможность решить все указанные выше задачи.
Интегрирующий обратный прокси-сервер (integration reverse proxy) представлен
на рисунке 27. Развитием описанного шаблона может быть делегирование
дополни
тельных
функций
обратному
прокси-серверу,
например:
аутентификация, авторизация, управление сеансами пользователей. В этой
ситуации обратный прокси-сервер используется как точка единого входа (front
door, single signon).
75
Рисунок 27 - Структура портала с использованием интегрирующего
обратного прокси-сервера
К основным функциональным задачам, решаемым обратным прокси
сервером относятся:
1.
Поддержка
сеансов
пользователей
(включая
аутентификацию,
авторизацию и аккаунтинг).
2. Фильтрация и перенаправление запросов.
3. Возможности балансировки нагрузки на серверы.
4. Возможность использования единого SSL-сертификата для различных
сервисов Web-портала.
Исходя из списка функциональных задач, можно сделать вывод о том, что
адекватным будет применение шаблона проектирования — точка единого входа.
76
3.2 Анализ и выбор протоколов взаимодействия распределенных
компонентов подсистемы разграничения доступа в сети
корпоративных порталов
В
данной
главе
предполагается
предложение
архитектуры
программно-технического комплекса на платформе свободно распространяемо го
программного
обеспечения,
обеспечивающего
эффективное
разграничение
перекрёстного доступа к ИР корпоративных порталов в сети ГТП через от крытые
каналы Интернет. Что, в свою очередь, обуславливает решение двух решение
задачи обеспечение безопасного, надежного и эффективного взаимодействия
распределенных компонентов подсистемы разграничения перекрёстного доступа
между собой. С этой целью необходимо провести детальный анализ типа и
характера информационного взаимодействия с целью определения применимости
различных протоколов для организации взаимодействия компонентов системы.
На этапе проектирования архитектуры системы необходимо рассмотреть
информационные потоки в рамках подсистемы разграничения пере крёстного
доступа к ИР в сети корпоративных порталов ГТП. Так как основной
характеристикой
сети
порталов
ГТП
является
её
территориальная
и
функциональная распределённость, а основным требованием к ней является
эффективность управления разграничением перекрёстного доступа, следоательно,
необходимо рассмотреть более детально информационные потоки
между
компонентами системы.
Следует отметить, что в качестве среды передачи данных (т. к. система
распределённая) кроме доверенных локальных сетей (в границах DMZ
(demilitarized zone) — демилитаризованной зоны) может использоваться
небезопасная среда глобальной сети Интернет.
В соответствии с перечнем информационных потоков, в рамках внутреннего
взаимодействия компонентов подсистемы, выявлена необходимость обеспечения
77
безопасности передачи данных в условиях различных сред пере дачи данных для
некоторых видов межкомпонентного взаимодействия. При взаимодействии
клиента со сценарием поддержки сеанса пользователя, который выполняется
после поступления соответствующего инициирущего HTTP-запроса, происходит
автоматическое
переключение
взаимодействия
на
безопасный
канал
коммуникации. Вслед за этим фронтальным Web-сервером открывается сеанс
работы по защищённому протоколу HTTPS. В свою очередь запросы к СУБД на
получение
и
проверку
идентификационных
данных
пользователя
и
идентификатор сеанса могут выполняться по защищенному каналу, чтобы
обеспечить безопасность в локальной сети организации. Сценарий поддержки
сеанса
пользователя
взаимодействии
взаимодействует
происходит
с
AAA-сервером
аутентификация
и
и
авторизация,
в
данном
результатом
которого является передача идентификатора уровня доступа сценарию. Связи
AAA-сервера, сценариев администрирования системы и СУБД также требуют
обеспечения безопасной передачи данных. Кроме безопасности информационного
обмена можно указать как основное требование к системе в целом высокую
доступность (High Availability). Доступность означает возможность группе
пользователей использовать систему. Если у них нет такой возможности, система
считается недоступной. Выбор протоколов для взаимодействия компонентов
подсистемы разграничения доступа в сети корпоративных порталов Решая задачу
организации информационных потоков, следует рассмотреть существующие
протоколы информационного обмена, решающие постав ленные задачи по
обеспечению достаточного уровня защищённости с наложенными архитектурой
системы условиями. Существуют альтернативные пути организации защищенных
туннелей
для
взаимодействия
компонентов
системы:—
туннелирование
соединения на конкретный TCP-порт с помощью Stunnel (основан на SSL); —
использование IPSec решений.
78
3.3 Проектирование схемы БД
Одним из начальных этапов проектирования разрабатываемой системы
является этап построения концептуальной схемы базы данных. На этой стадии
происходит переход от модели процессов предметной области к структуре
хранения информации. Построение концептуальной схемы будет основано на
нотации IDEF1x (Integrated DEFinition for information modeling
Extended). Данная нотация, как правило, используется для моделирования
реляционных баз данных и относится к типу методологий «Сущность-связь». В
качестве
визуального
инструмента
для
построения
логического
уровня
концептуальной схемы базы данных будет использовано приложение ERwin,
физический уровень концептуальной схемы будет построен при помощи той же
программной системы.
Логический уровень концептуальной схемы базы данных представлен на
рисунке 28. База данных является необходимой составляющей разрабатываемой
системы и предназначается для хранения нужной информации.
Рисунок 28 –Схема базы данных
На логическом уровне представлены следующие основные сущности:
79
-
«Test_image» –
сущность, описывающая хранимые тестовые
изображения;
- «Params» – информация о параметрах изображений;
- «Algorithm» – сущность для описания алгоритмов
сжатия
изображений;
«Param_alg» –
-
информация
о
параметрах
и
опциональных возможностях алгоритмов сжатия;
-
«Algorithm_pref» – сущность, описывающая профиль сжатия для
изображения;
Таблица 5– Атрибуты сущностей и их взаимосвязь с моделью предметной области
Сущность
1
Test_image
Атрибут
2
id_test_image
Params
path
name
Cluster
value
id_cluster
Algorithm
id_alg
name
image_format
Param_alg
id_param
range
step
bool
name
Описание
3
Уникальный
идентификатор
изображения
Путь к изображению
Название
параметра
изображения
Тип
4
INT
Значение параметра
Уникальный
идентификатор кластера
Уникальный
идентификатор
алгоритма
Наименование алгоритма
Используемый
формат
изображения
Уникальный
идентификатор
параметров алгоритма
Диапазон
изменения
параметра
Шаг изменения
Является ли параметр
булевым
Наименование параметра
FLOAT
INT
VARCHAR
CHAR(25)
INT
VARCHAR
VARCHAR
INT
FLOAT
INT
BOOL
VARCHAR
80
log
Algorithm_pref
Является
ли
шаг INT
изменения
степенью
числа
Уникальный
INT
идентификатор
прелпочтительного
алгоритма
id_alg_pref
Проанализируем структуру информации, отображаемой сущностями
модели, то есть проведем анализ состава атрибутов, их семантики и типов
отображаемой информации. Результаты анализа основных атрибутов, а также
описание их взаимосвязи с моделью процессов предметной области сведем в
таблицу, приведенную ниже.
В качестве первичных ключей для всех сущностей было принято решение
ввести суррогатные ключи.
Это решение было обусловлено следующими причинами: поиск по ключу,
состоящему из нескольких полей, медленный; сущности будут участвовать во
многих связях, организация связи по нескольким атрибутам не целесообразна.
После полного описания сущностей приступим к проектированию связей.
При
описании
процесса
проектирования
связей
необходимо
привести
обоснование выбора типа связей и ограничений целостности, связанных с
внешними
ключами.
Рассмотрим
отдельно
процессы
проектирования
идентифицирующих и неидентифицирующих связей.
Неидентифицирующие связи были образованы в том случае, когда для
идентификации сущности потомка не было необходимости использовать ключ
родительской сущности. Приведем подробное описание характеристик всех
связей в концептуальной модели в таблице 6.
Таблица 6 – Описание связей
Родитель
1
Потомок
2
Тип
3
Ограничения
4
Примечания
5
81
Test_image
Params
1:M
Not Null
Test_image
Algorithm_pref
1:1
Not Null
Algorithm
Algorithm_pref
1:1
Algorithm
Param_alg
1:M
Полученная
У
одного
изображения
множество параметров
У одного изображения один
предпочтительный
профиль
сжатия
Not Null Cуществует
один
предпочтительных
профиль
сжатия изображения
Not Null Cуществует
множество
параметров и опциональных
возможностей для алгоритма
в процессе проектирования концептуальная схема БД
находится в третьей нормальной форме и не требует дальнейшей нормализации,
так как никаких аномалий, связанных с хранением и обработкой информации на
данном этапе не выявлено.
82
ЗАКЛЮЧЕНИЕ
Был произведен анализ экономической эффективности применения БПЛА
для получения пространственных данных по сравнению с космической съемкой.
Было выявлено, что по сравнению со спутниковыми изображениями и
традиционной аэросъемкой, аэрофотосъемка с БПЛА имеет существенные
преимущества.
Во-первых, высокое разрешение получаемых снимков: максимальное – до
1–2 см (при высоте полета 30–50 м), среднее – 8–10 см (при высоте 250– 300 м).
Во-вторых, получать снимки и проводить их первичную обработку можно в
течение очень короткого времени, не покидая место проведения работ.
В-третьих, возможность проведения съемки локальных и труднодоступных
территорий, космическая съемка и традиционная аэрофотосъемка которых не
являются рентабельными. Средняя стоимость проведения космической съемки
составляет приблизительно 40 руб/км2, что на 10% дороже предлагаемого
подхода оперативной съемки с помощью БПЛА.
В-четвертых,
качество получаемых снимков никак не зависит от
облачности, поскольку можно проводить съемку под облаками в пасмурные дни,
что является особенно актуальным для северных регионов. Рентабельность самой
съемки обуславливается также тем, что БПЛА функционирует на комплекте
литий-полимерных аккумуляторных батарей, тем самым исключаются затраты на
топливо, как при авиационной съемке.
Анализ детекторов показал, что производительность всех представленных
детекторов снижается медленно с такой же скоростью, как увеличивается
изменение точки обзора сцены, а также то, что не существует такого детектора,
который превосходит другие детекторы для всех типов сцен и всех типов
аффиных и фотометрических преобразований изображений.
83
Во многих случаях наилучшими результатами обладали детекторы Харриса
и Гессиана, а также MSER. MSER хорошо работает на изображениях, содержащих
однородные регионы с характерными границами. Ранее сказанное также имеет
место для детектора IBR, поскольку оба метода предназначены для аналогичных
типов регионов. Детекторы Гессиана и Харриса обеспечивают наибольшее
количество регионов, чем другие детекторы, что является полезным в
согласовании сцен. EBR подходит для сцен, содержащих перекрещивающиеся
линии, а детектор Кадира-Брейди получает в целом низкие оценки, но показывает
хорошие результаты в области распознавания класса объекта.
Детекторы взаимно дополняют друг друга, т.е. они извлекают регионы с
различными свойствами и ошибка перекрытия этих регионов мала. Таким
образом, несколько детекторов следует использовать одновременно, чтобы
получить
наилучшую
производительность.
Результат
работы
различных
детекторов может быть комбинирован путем конкатенации соответствующих
регионов. Это увеличивает число совпадений и, следовательно, надежность
работы комбинированного детектора, сокращая при этом время детектирования.
Выбор оптимального набор детекторов зависит от требований, например, в
зависимости от количества извлекаемых регионов и времени работы.
Благодаря
предлагаемой
архитектуре
автоматизированной
системы
построения фотопланов местности обеспечивается распределенный доступ к
ресурсам подразделений корпоративной сети, что дает группе исследователей
независимо друг от друга пользоваться разделяемыми ресурсами в виде
фотоснимков территорий жилищно-коммунальных хозяйств.
В
результате,
за
счет
предложенного
алгоритма
классификации
изображений по характеру рельефа местности методом морфологических
профилей, достигнута более чем 94% точность классификации. Более чем 96%
зданий и дорог определены верно и 83% автомобилей правильно распознаны, что
84
дает в перспективе возможность для применение данного метода классификации в
управлении инфраструктурой и анализом строительной местности.
Таким образов были выполнены следующие задачи:
1. Произведен обзор и сравнительный анализ основных известных
алгоритмов детектирования ключевых точек на изображениях.
2. Разработан
алгоритм
классификации
изображений
исследуемой
местности для выбора предпочтительного профиля детектирования ключевых
точек.
3. Разработана
архитектура
и
программное
обеспечение
автоматизированной системы построения фотопланов местности с помощью
БПЛА в ходе проведения автоматической аэрофотосъемки местности.
85
СПИСОК ЛИТЕРАТУРЫ
1.
Архипов О. П., Зыкова З. П., “Персонифицированное преобразование
представлений цветных изображений на мониторе ПЭВМ”, Системы и средства
информ., 22:1 (2012), 22–37
2.
Архипов О.П., Зыкова З.П., “Применение полутоновых представлений
при анализе изменений цветных изображений”, Информ. и еë примен., 8:3 (2014),
90–99
3.
Архипов О.П., Маньяков Ю.А., Сиротинин Д.О., “Метод регистрации
морфинга трехмерного объекта на основе данных натурного эксперимента”,
Системы и средства информ., 20:1 (2010), 91–105
4.
Аффинное преобразование. [Электронный ресурс]. – Режим доступа:
https://en.wikipedia.org/wiki/Affine_transformation, свободный (дата обращения:
15.05.16)
5.
Безрядин С. Н., Буров П. А., Ильиных Д. Ю. Преобразование яркости
в программном обеспечении — KWE Int. Inc — 2006
6.
Бизин И.В., Василенко Ю.В., Власов В.В., Демидов А.В., Канатников
Н.В., Смоляков М.В. (2014), «Возможности применения мультироторных
беспилотных летательных аппаратов при неуверенном приеме сигналов ГНСС».
Информационные системы и технологии. (6 (86)), pp. 148-153. (личное участие
30%)
7.
Бугаевский Л. М. Геоинформационные системы / Бугаевский Л. М.,
Цветков В. Я. М: 2000. 156 с.
8.
Бурага А.В., Костюков В.М. Сравнительный анализ пассивных
методов измерения дальности для малого беспилотного летательного аппарата //
Электронный журнал «Труды МАИ». Выпуск № 53,
86
9.
Буча В.В., Абламейко С.В. Выделение и векторизация линейных
объектов на цветных картографических изображениях // Весцi НАН Беларусi. Сер.
фiз.-мат навук. − 2005. – № 1. − С. 98-105. 3. - Вып. 2. - 238 с.
10.
Визильтер, С. Ю. Желтов Проблемы технического зрения в
современных
авиационных
системах
В
сб.
Трудов
научно-технической
конференции-семинара «Техническое зрение в системах управления мобильными
объектами-2010» Под ред. Р. Р. Назирова. Таруса, 16–18 марта 2010 г. стр. 11-44,
ИКИ РАН, 2011 г.
11.
Власов В.В. «Разработка метода классификации пространственных
данных, основанного на аппарате математической морфологии». 69.051 Выбор и
исследование строительной площадки. «Инновационная наука» №12/2016 ISSN
2410-6070 – 2016. – №4 – С. 40-46. (личное участие 100%)
12.
Власов В.В., Власова Н.А., Демидов А.В., Канатников Н.В., Смоляков
М.В. (2015), «К вопросу о применении беспилотных летательных аппаратов в
сфере точного земледелия». Информационные системы и технологии. (5 (91)), pp.
72-77. (личное участие 60%)
13.
Геоинформационные
системы.
Статья
из
журнала
"БАЙТ"
[Электронный ресурс]. URL: http://v-dorogu.narod.ru/gis/gis3.htm (дата обращения
18.05.2016).
14.
Глотов
В.А.,
Математическая
морфология.
Электронный
математический и медико-биологический журнал. Сборник научных трудов. Под
ред. В. А. Глотова. - Смоленск: - Изд. СГМА, 1999. - Т.
15.
Глотов В.А., Структурный анализ микрососудистых бифуркаций :
Микрососудистый узел и гемодинамический фактор : автореферат дис. ... доктора
медицинских наук : 14.00.02 / Смоленск. гос. мед. акад. - Санкт-Петербург, 1998. 56 с.
16.
Глумов Н.Г. Построение и применение моментных инвариантов для
обработки изображений в скользящем окне, 9с.
87
17.
Гонсалес Р., Вудс Р., Цифровая обработка изображений. — М.:
Техносфера — 2006. — 1072 с.
18.
Гонсалес, Р. Вудс, С. Эддинс. Цифровая обработка изображений в
среде Matlab. М.:Техносфера, 2006, стр. 351 — 367.
19.
Демидов,
А.
В.
Клиентская
подсистема
аутентификации
пользователей в сети кор поративных порталов с применением портативного
цифрового устройства доступа [Свидетельство о государственной регистрации
программы для ЭВМ №2012616860, зарегистрировано в реестре программ для
ЭВМ 1 августа 2012 г. Дата поступления заявки 7 июня 2012 г.].
20.
Демидов, А. В. Моделирование процессов информационного обмена с
приоритетами в сетях передачи данных промышленных предприятий [Текст] /
Александр Влади мирович Демидов, Александр Иванович Офицеров, Сергей
Иванович Афонин // Ин формационные технологии в науке, образовании и
производстве. — Т. 5. — [Б. м. : б. и.], 2010. — С. 94–101.
21.
Демидов, А. В. Моделирование процессов информационного обмена с
приоритетами в сетях передачи данных промышленных предприятий [Текст]. —
2010.
22.
Демидов, А. В. Особенности построения подсистемы управления
доступом системы управления информационным обменом сети корпоративных
порталов [Текст] / Алек сандр Владимирович Демидов, Сергей Александрович
Лазарев // Информационные системы и технологии. — 2012. — № 4 (72). — С.
103–110.
23.
Ерёменко, В. Т. Алгоритмы поиска угроз в пространстве состояний
процессов инфор мационного обмена распределенной управляющей системы
[Текст] / В. Т. Ерёменко, Константинов И. С. // Вестник Тамбовского
государственного технического универ ситета. — 2004. — Т. 10, № 4А. — С.
912–918.
88
24.
Ерёменко, В. Т. Способы и приемы анализа характеристик протоколов
информаци онного обмена в телекоммуникационной среде предприятия [Текст] /
В. Т. Ерёмен ко, М. В. Чистяков // Известия Тульского государственного
университета. Серия «Технологическая системотехника». Труды участников IV
Международной
электрон
ной
научно-технической
конференции
«Технологическая системотехника – 2005». — 2006. — № 7. — С. 61–64.
25.
Журавель И.М. Краткий курс теории обработки изображений.
[Электронный
ресурс]
–
Режим
доступа:
http://matlab.exponenta.ru/imageprocess/book2/37.php, свободный (дата обращения:
15.05.16)
26.
Замай С.С, Якубайлик О.Э. Программное обеспечение и технологии
геоинформационных систем: Учеб. пособие / Краснояр. гос. ун-т. Крас- ноярск,
1998. 110 с.
27.
Интернет-порталы: содержание и технологии: Сб. науч. ст. Вып. 4
[Текст] / Под ред. А. Н. Тихонова и др. ; ФГУ ГНИИ ИТТ «Информика». — М. :
Просвещение, 2007. — 606 с
28.
Калинкина
Д.,
Ватолин
Д.
Проблема
подавления
шума
на
изображениях и видео и различные подходы к ее решению — Компьютерная
графика и мультимедиа: журнал. — № 3(2) — 2005
29.
Ключникова О.В. Роль стратегического управления по совместному
производству работ для инженерной инфраструктуры // Интернет-журнал
Науковедение. 2013. №5. URL: naukovedenie.ru/PDF/18trgsu513.pdf
30.
Кнут, Д. Э. Искусство программирования. Том 1. Основные
алгоритмы [Текст] / Дональд Эрвин Кнут. — М. : Вильямс, 2010. — 720 с. —
ISBN: 978-5-8459-0080-7
31.
Кнут, Д. Э. Искусство программирования. Том 2. Получисленные
алгоритмы [Текст] / Дональд Эрвин Кнут. — М. : Вильямс, 2011. — 832 с. —
ISBN: 5-8459-0081-6.
89
32.
Конушин А. Слежение за точечными особенностями сцены (Point
feature tracking). Компьютерная графика и мультимедиа. Выпуск №1(5)/2003.
33.
Корнилов В.Ю. Система моментных инвариантов изображения.
СПб.:Автометрия,2002. - 80с.
34.
Костюченко В.В. Системотехническая методология организации
процессов строительного производства // Инженерный вестник Дона, 2012. № 1. URL: ivdon.ru/magazine/archive/n1y2012/734
35.
Лабинская
Д.Е.,
Мартыненко
Т.В.
Исследование
методов
предобработки изображений рентгенограмм. — Донецк, ДонНТУ – 2012, с.
506–511.
36.
Лазарев, С. А. Применение цифровых носителей идентификационной
информации для управления доступом в сети корпоративных порталов [Текст] /
Сергей Алексан дрович Лазарев, Павел Павлович Силаев // Информационные
системы и техноло гии. — 2011. — № 3 (65). — С. 114–119.
37.
Лунев Е.М., Павлова Н.В. Программно-алгоритмическое обеспечение
для определения навигационных параметров беспилотного летательного аппарата
на базе фотоизображения // Вестник МАИ. – 2009. – т. 16, №6. – с. 111–119.
38.
Манжилевская
С.Е.,
Евлоева
И.А.
Система
и
модели
организационного инжиниринга// Технические науки - от теории к практике. 2015.
№ 46. С. 57-63.
39.
Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц
[Электронный
ресурс].
http://habrahabr.ru/blogs/algorithm/133826/,
-
Режим
свободный
(дата
доступа:
обращения:
23.02.2016).
40.
Морозова, О.Б. Салтанова. Система контроля и управления доступом
по биометрическим параметрам // Научная сессия ТУСУР–2011: Материалы
Всероссийской
90
41.
научно-технической конференции студентов, аспирантов и молодых
ученых, Томск, 4–6 мая 2011 г. – Томск: В-Спектр, 2011: В 6 частях. – Ч. 2. – 348
с.
42.
Обнаружение устойчивых признаков изображения: метод SURF
[Электронный
ресурс].
-
Режим
доступа:
http://habrahabr.ru/blogs/algorithm/103107/, свободный (дата обращения:15.05.2016)
43.
Павельева Е. А., Крылов А. С. Поиск и анализ ключевых точек
радужной оболочки глаза методом преобразования Эрмита // Информатика и её
применения, 2010. Т. 4. Вып. 1. С. 79–82.
44.
Писаревский В. OpenCV– Библиотека компьютерного зрения для всех
— Intel Corporation, Software & Solution Group — Презентация — 2012
(http://www.myshared.ru/slide/202801/)
45.
Пичугин И. Л. Применение ГИС-технологий – эффективный метод
мониторинга
объектов
ЖКХ/
И.
Л.
Пичугин
//
Вестник
Орловского
государственного аграрного университета. 2011. - №4. С. 76-79.
46.
Пичугин И. Л. Применение ГИС-технологий эффективный метод
мониторинга
объектов
ЖКХ
//
Вестник
ОрелГАУ.
2011.
№4.
URL:
http://cyberleninka.ru/article/n/primenenie-gis-tehnologiy-effektivnyy-metod-monitorin
ga-obektov-zhkh (дата обращения: 20.10.2016).
47.
Поляков А., Брусенцов В. Методы и алгоритмы компьютерной
графики. — СПб.: БХВ-Петербург, 2003. — 545 с.
48.
Пономарев
Д.В.
Предобработка
изображений
для
системы
распознавания исторических рукописных документов —2009
49.
Пуртов, Д.П. Синча Исследование методов и разработка алгоритмов
обработки видеоинформации в задачах локализации положения БЛА на основе
распознавания изображений при помехах и искажениях // Электронный журнал
«Труды МАИ». Выпуск № 52
91
50.
Ростопчин В. В., Румянцев С. С. Беспилотные авиационные системы //
URL:avia.ru/author/03.shtml
92
ПРИЛОЖЕНИЕ А
(Обязательное)
ЛИСТИНГ КОДА ОСНОВНЫХ ФУНКЦИЙ
import sys, os, time, socket, signal
import fnmatch, errno, threading
import serial, Queue, select
import traceback
import select
import shlex
import platform
from MAVProxy.modules.lib import textconsole
from MAVProxy.modules.lib import rline
from MAVProxy.modules.lib import mp_module
from MAVProxy.modules.lib import dumpstacks
try:
from multiprocessing import freeze_support
from pymavlink import mavwp, mavutil
import matplotlib, HTMLParser
try:
import readline
except ImportError:
import pyreadline as readline
except Exception:
pass
if __name__ == '__main__':
freeze_support()
class MPStatus(object):
'''hold status information about the mavproxy'''
def __init__(self):
self.gps = None
self.msgs = {}
self.msg_count = {}
self.counters = {'MasterIn' : [], 'MasterOut' : 0, 'FGearIn' : 0, 'FGearOut' : 0, 'Slave'
: 0}
self.setup_mode = opts.setup
self.mav_error = 0
self.altitude = 0
self.last_distance_announce = 0.0
93
self.exit = False
self.flightmode = 'MAV'
self.last_mode_announce = 0
self.last_mode_announced = 'MAV'
self.logdir = None
self.last_heartbeat = 0
self.last_message = 0
self.heartbeat_error = False
self.last_apm_msg = None
self.last_apm_msg_time = 0
self.highest_msec = 0
self.have_gps_lock = False
self.lost_gps_lock = False
self.last_gps_lock = 0
self.watch = None
self.last_streamrate1 = -1
self.last_streamrate2 = -1
self.last_seq = 0
self.armed = False
def show(self, f, pattern=None):
'''write status to status.txt'''
if pattern is None:
f.write('Counters: ')
for c in self.counters:
f.write('%s:%s ' % (c, self.counters[c]))
f.write('\n')
f.write('MAV Errors: %u\n' % self.mav_error)
f.write(str(self.gps)+'\n')
for m in sorted(self.msgs.keys()):
if pattern is not None and not fnmatch.fnmatch(str(m).upper(), pattern.upper()):
continue
f.write("%u: %s\n" % (self.msg_count[m], str(self.msgs[m])))
def write(self):
'''write status to status.txt'''
f = open('status.txt', mode='w')
self.show(f)
f.close()
def say_text(text, priority='important'):
'''text output - default function for say()'''
mpstate.console.writeln(text)
def say(text, priority='important'):
'''text and/or speech output'''
mpstate.functions.say(text, priority)
def add_input(cmd, immediate=False):
'''add some command input to be processed'''
94
if immediate:
process_stdin(cmd)
else:
mpstate.input_queue.put(cmd)
class MAVFunctions(object):
'''core functions available in modules'''
def __init__(self):
self.process_stdin = add_input
self.param_set = param_set
self.get_mav_param = get_mav_param
self.say = say_text
self.input_handler = None
class MPState(object):
'''holds state of mavproxy'''
def __init__(self):
self.console = textconsole.SimpleConsole()
self.map = None
self.map_functions = {}
self.vehicle_type = None
self.vehicle_name = None
from MAVProxy.modules.lib.mp_settings import MPSettings, MPSetting
self.settings = MPSettings(
[ MPSetting('link', int, 1, 'Primary Link', tab='Link', range=(0,4), increment=1),
MPSetting('streamrate', int, 4, 'Stream rate link1', range=(-1,100),
increment=1),
MPSetting('streamrate2', int, 4, 'Stream rate link2', range=(-1,100),
increment=1),
MPSetting('heartbeat', int, 1, 'Heartbeat rate', range=(0,5), increment=1),
MPSetting('mavfwd', bool, True, 'Allow forwarded control'),
MPSetting('mavfwd_rate', bool, False, 'Allow forwarded rate control'),
MPSetting('shownoise', bool, True, 'Show non-MAVLink data'),
MPSetting('baudrate', int, opts.baudrate, 'baudrate for new links',
range=(0,10000000), increment=1),
MPSetting('rtscts', bool, opts.rtscts, 'enable flow control'),
MPSetting('select_timeout', float, 0.01, 'select timeout'),
MPSetting('altreadout', int, 10, 'Altitude Readout',
range=(0,100), increment=1, tab='Announcements'),
MPSetting('distreadout', int, 200, 'Distance Readout', range=(0,10000),
increment=1),
MPSetting('moddebug', int, opts.moddebug, 'Module Debug Level',
range=(0,3), increment=1, tab='Debug'),
MPSetting('compdebug', int, 0, 'Computation Debug Mask', range=(0,3),
tab='Debug'),
MPSetting('flushlogs', bool, False, 'Flush logs on every packet'),
MPSetting('requireexit', bool, False, 'Require exit command'),
95
MPSetting('wpupdates', bool, True, 'Announce waypoint updates'),
MPSetting('basealt', int, 0, 'Base Altitude', range=(0,30000), increment=1,
tab='Altitude'),
MPSetting('wpalt', int, 100, 'Default WP Altitude', range=(0,10000),
increment=1),
MPSetting('rallyalt', int, 90, 'Default Rally Altitude', range=(0,10000),
increment=1),
MPSetting('terrainalt', str, 'Auto', 'Use terrain altitudes',
choice=['Auto','True','False']),
MPSetting('rally_breakalt', int, 40, 'Default Rally Break Altitude',
range=(0,10000), increment=1),
MPSetting('rally_flags', int, 0, 'Default Rally Flags', range=(0,10000),
increment=1),
MPSetting('source_system', int, 255, 'MAVLink Source system',
range=(0,255), increment=1, tab='MAVLink'),
MPSetting('source_component', int, 0, 'MAVLink Source component',
range=(0,255), increment=1),
MPSetting('target_system', int, 0, 'MAVLink target system', range=(0,255),
increment=1),
MPSetting('target_component', int, 0, 'MAVLink target component',
range=(0,255), increment=1),
MPSetting('state_basedir', str, None, 'base directory for logs and aircraft
directories'),
MPSetting('allow_unsigned', bool, True, 'whether unsigned packets will be
accepted'),
MPSetting('dist_unit', str, 'm', 'distance unit', choice=['m', 'nm', 'miles'],
tab='Units'),
MPSetting('height_unit', str, 'm', 'height unit', choice=['m', 'feet']),
MPSetting('speed_unit', str, 'm/s', 'height unit', choice=['m/s', 'knots', 'mph']),
MPSetting('vehicle_name', str, '', 'Vehicle Name', tab='Vehicle'),
])
self.completions = {
"script"
: ["(FILENAME)"],
"set"
: ["(SETTING)"],
"status"
: ["(VARIABLE)"],
"module" : ["list",
"load (AVAILMODULES)",
"<unload|reload> (LOADEDMODULES)"]
}
self.status = MPStatus()
self.mav_outputs = []
self.sysid_outputs = {}
self.sitl_output = None
self.mav_param = mavparm.MAVParmDict()
96
self.modules = []
self.public_modules = {}
self.functions = MAVFunctions()
self.select_extra = {}
self.continue_mode = False
self.aliases = {}
import platform
self.system = platform.system()
def module(self, name):
'''Find a public module (most modules are private)'''
if name in self.public_modules:
return self.public_modules[name]
return None
def master(self):
'''return the currently chosen mavlink master object'''
if len(self.mav_master) == 0:
return None
if self.settings.link > len(self.mav_master):
self.settings.link = 1
if not self.mav_master[self.settings.link-1].linkerror:
return self.mav_master[self.settings.link-1]
for m in self.mav_master:
if not m.linkerror:
return m
return self.mav_master[self.settings.link-1]
def get_mav_param(param, default=None):
'''return a EEPROM parameter value'''
return mpstate.mav_param.get(param, default)
def param_set(name, value, retries=3):
'''set a parameter'''
name = name.upper()
return mpstate.mav_param.mavset(mpstate.master(), name, value, retries=retries)
def cmd_script(args):
'''run a script'''
if len(args) < 1:
print("usage: script <filename>")
return
run_script(args[0])
def cmd_set(args):
'''control mavproxy options'''
mpstate.settings.command(args)
def cmd_status(args):
'''show status'''
97
if len(args) == 0:
mpstate.status.show(sys.stdout, pattern=None)
else:
for pattern in args:
mpstate.status.show(sys.stdout, pattern=pattern)
def cmd_setup(args):
mpstate.status.setup_mode = True
mpstate.rl.set_prompt("")
def cmd_reset(args):
print("Resetting master")
mpstate.master().reset()
def cmd_watch(args):
'''watch a mavlink packet pattern'''
if len(args) == 0:
mpstate.status.watch = None
return
mpstate.status.watch = args[0]
print("Watching %s" % mpstate.status.watch)
def load_module(modname, quiet=False):
'''load a module'''
modpaths = ['MAVProxy.modules.mavproxy_%s' % modname, modname]
for (m,pm) in mpstate.modules:
if m.name == modname:
if not quiet:
print("module %s already loaded" % modname)
return False
for modpath in modpaths:
try:
m = import_package(modpath)
reload(m)
module = m.init(mpstate)
if isinstance(module, mp_module.MPModule):
mpstate.modules.append((module, m))
if not quiet:
print("Loaded module %s" % (modname,))
return True
else:
ex = "%s.init did not return a MPModule instance" % modname
break
except ImportError as msg:
ex = msg
if mpstate.settings.moddebug > 1:
import traceback
print(traceback.format_exc())
print("Failed to load module: %s. Use 'set moddebug 3' in the MAVProxy console to
enable traceback" % ex)
return False
98
def unload_module(modname):
'''unload a module'''
for (m,pm) in mpstate.modules:
if m.name == modname:
if hasattr(m, 'unload'):
m.unload()
mpstate.modules.remove((m,pm))
print("Unloaded module %s" % modname)
return True
print("Unable to find module %s" % modname)
return False
def cmd_module(args):
'''module commands'''
usage = "usage: module <list|load|reload|unload>"
if len(args) < 1:
print(usage)
return
if args[0] == "list":
for (m,pm) in mpstate.modules:
print("%s: %s" % (m.name, m.description))
elif args[0] == "load":
if len(args) < 2:
print("usage: module load <name>")
return
load_module(args[1])
elif args[0] == "reload":
if len(args) < 2:
print("usage: module reload <name>")
return
modname = args[1]
pmodule = None
for (m,pm) in mpstate.modules:
if m.name == modname:
pmodule = pm
if pmodule is None:
print("Module %s not loaded" % modname)
return
if unload_module(modname):
import zipimport
try:
reload(pmodule)
except ImportError:
clear_zipimport_cache()
reload(pmodule)
if load_module(modname, quiet=True):
print("Reloaded module %s" % modname)
elif args[0] == "unload":
if len(args) < 2:
99
print("usage: module unload <name>")
return
modname = os.path.basename(args[1])
unload_module(modname)
else:
print(usage)
def cmd_alias(args):
'''alias commands'''
usage = "usage: alias <add|remove|list>"
if len(args) < 1 or args[0] == "list":
if len(args) >= 2:
wildcard = args[1].upper()
else:
wildcard = '*'
for a in sorted(mpstate.aliases.keys()):
if fnmatch.fnmatch(a.upper(), wildcard):
print("%-15s : %s" % (a, mpstate.aliases[a]))
elif args[0] == "add":
if len(args) < 3:
print(usage)
return
a = args[1]
mpstate.aliases[a] = ' '.join(args[2:])
elif args[0] == "remove":
if len(args) != 2:
print(usage)
return
a = args[1]
if a in mpstate.aliases:
mpstate.aliases.pop(a)
else:
print("no alias %s" % a)
else:
print(usage)
return
def clear_zipimport_cache():
"""Clear out cached entries from _zip_directory_cache.
See http://www.digi.com/wiki/developer/index.php/Error_messages"""
import sys, zipimport
syspath_backup = list(sys.path)
zipimport._zip_directory_cache.clear()
sys.path = syspath_backup
sys.path_importer_cache.clear()
def import_package(name):
import zipimport
try:
mod = __import__(name)
100
except ImportError:
clear_zipimport_cache()
mod = __import__(name)
components = name.split('.')
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
command_map = {
'script' : (cmd_script, 'run a script of MAVProxy commands'),
'setup' : (cmd_setup, 'go into setup mode'),
'reset' : (cmd_reset, 'reopen the connection to the MAVLink master'),
'status' : (cmd_status, 'show status'),
'set' : (cmd_set,
'mavproxy settings'),
'watch' : (cmd_watch, 'watch a MAVLink pattern'),
'module' : (cmd_module, 'module commands'),
'alias' : (cmd_alias, 'command aliases')
}
def shlex_quotes(value):
'''see
http://stackoverflow.com/questions/6868382/python-shlex-split-ignore-single-quotes'''
lex = shlex.shlex(value)
lex.quotes = '"'
lex.whitespace_split = True
lex.commenters = ''
return list(lex)
def process_stdin(line):
'''handle commands from user'''
if line is None:
sys.exit(0)
if mpstate.functions.input_handler is not None:
mpstate.functions.input_handler(line)
return
line = line.strip()
if mpstate.status.setup_mode:
if line == '.':
mpstate.status.setup_mode = False
mpstate.status.flightmode = "MAV"
mpstate.rl.set_prompt("MAV> ")
return
if line != '+++':
line += '\r'
for c in line:
time.sleep(0.01)
mpstate.master().write(c)
return
if not line:
101
return
args = shlex_quotes(line)
cmd = args[0]
while cmd in mpstate.aliases:
line = mpstate.aliases[cmd]
args = shlex.split(line) + args[1:]
cmd = args[0]
if cmd == 'help':
k = command_map.keys()
k.sort()
for cmd in k:
(fn, help) = command_map[cmd]
print("%-15s : %s" % (cmd, help))
return
if cmd == 'exit' and mpstate.settings.requireexit:
mpstate.status.exit = True
return
if not cmd in command_map:
for (m,pm) in mpstate.modules:
if hasattr(m, 'unknown_command'):
try:
if m.unknown_command(args):
return
except Exception as e:
print("ERROR in command: %s" % str(e))
print("Unknown command '%s'" % line)
return
(fn, help) = command_map[cmd]
try:
fn(args[1:])
except Exception as e:
print("ERROR in command %s: %s" % (args[1:], str(e)))
if mpstate.settings.moddebug > 1:
traceback.print_exc()
def process_master(m):
'''process packets from the MAVLink master'''
try:
s = m.recv(16*1024)
except Exception:
time.sleep(0.1)
return
if len(s) == 0:
time.sleep(0.1)
return
if (mpstate.settings.compdebug & 1) != 0:
return
if mpstate.logqueue_raw:
mpstate.logqueue_raw.put(str(s))
102
if mpstate.status.setup_mode:
if mpstate.system == 'Windows':
# strip nsh ansi codes
s = s.replace("\033[K","")
sys.stdout.write(str(s))
sys.stdout.flush()
return
if m.first_byte and opts.auto_protocol:
m.auto_mavlink_version(s)
msgs = m.mav.parse_buffer(s)
if msgs:
for msg in msgs:
sysid = msg.get_srcSystem()
if sysid in mpstate.sysid_outputs:
continue
if getattr(m, '_timestamp', None) is None:
m.post_message(msg)
if msg.get_type() == "BAD_DATA":
if opts.show_errors:
mpstate.console.writeln("MAV error: %s" % msg)
mpstate.status.mav_error += 1
def process_mavlink(slave):
try:
buf = slave.recv()
except socket.error:
return
try:
if slave.first_byte and opts.auto_protocol:
slave.auto_mavlink_version(buf)
msgs = slave.mav.parse_buffer(buf)
except mavutil.mavlink.MAVError as e:
mpstate.console.error("Bad MAVLink slave message from %s: %s" %
(slave.address, e.message))
return
if msgs is None:
return
if mpstate.settings.mavfwd and not mpstate.status.setup_mode:
for m in msgs:
if mpstate.status.watch is not None:
if fnmatch.fnmatch(m.get_type().upper(), mpstate.status.watch.upper()):
mpstate.console.writeln('> '+ str(m))
mpstate.master().write(m.get_msgbuf())
mpstate.status.counters['Slave'] += 1
def mkdir_p(dir):
'''like mkdir -p'''
if not dir:
return
if dir.endswith("/"):
103
mkdir_p(dir[:-1])
return
if os.path.isdir(dir):
return
mkdir_p(os.path.dirname(dir))
os.mkdir(dir)
def log_writer():
'''log writing thread'''
while True:
mpstate.logfile_raw.write(mpstate.logqueue_raw.get())
while not mpstate.logqueue_raw.empty():
mpstate.logfile_raw.write(mpstate.logqueue_raw.get())
while not mpstate.logqueue.empty():
mpstate.logfile.write(mpstate.logqueue.get())
if mpstate.settings.flushlogs:
mpstate.logfile.flush()
mpstate.logfile_raw.flush()
def log_paths():
'''Returns tuple (logdir, telemetry_log_filepath, raw_telemetry_log_filepath)'''
if opts.aircraft is not None:
dirname = ""
if opts.mission is not None:
print(opts.mission)
dirname += "%s/logs/%s/Mission%s" % (opts.aircraft,
time.strftime("%Y-%m-%d"), opts.mission)
else:
dirname += "%s/logs/%s" % (opts.aircraft, time.strftime("%Y-%m-%d"))
# dirname is currently relative. Possibly add state_basedir:
if mpstate.settings.state_basedir is not None:
dirname = os.path.join(mpstate.settings.state_basedir,dirname)
mkdir_p(dirname)
highest = None
for i in range(1, 10000):
fdir = os.path.join(dirname, 'flight%u' % i)
if not os.path.exists(fdir):
break
highest = fdir
if mpstate.continue_mode and highest is not None:
fdir = highest
elif os.path.exists(fdir):
print("Flight logs full")
sys.exit(1)
logname = 'flight.tlog'
logdir = fdir
else:
logname = os.path.basename(opts.logfile)
dir_path = os.path.dirname(opts.logfile)
if not os.path.isabs(dir_path) and mpstate.settings.state_basedir is not None:
104
dir_path = os.path.join(mpstate.settings.state_basedir,dir_path)
logdir = dir_path
mkdir_p(logdir)
return (logdir,
os.path.join(logdir, logname),
os.path.join(logdir, logname + '.raw'))
def open_telemetry_logs(logpath_telem, logpath_telem_raw):
'''open log files'''
if opts.append_log or opts.continue_mode:
mode = 'a'
else:
mode = 'w'
try:
mpstate.logfile = open(logpath_telem, mode=mode)
mpstate.logfile_raw = open(logpath_telem_raw, mode=mode)
print("Log Directory: %s" % mpstate.status.logdir)
print("Telemetry log: %s" % logpath_telem)
if platform.system() != 'Windows':
stat = os.statvfs(logpath_telem)
if stat.f_bfree*stat.f_bsize < 209715200:
print("ERROR: Not enough free disk space for logfile")
mpstate.status.exit = True
return
t.start()
except Exception as e:
print("ERROR: opening log file for writing: %s" % e)
mpstate.status.exit = True
return
def set_stream_rates():
'''set mavlink stream rates'''
if (not msg_period.trigger() and
mpstate.status.last_streamrate1 == mpstate.settings.streamrate and
mpstate.status.last_streamrate2 == mpstate.settings.streamrate2):
return
mpstate.status.last_streamrate1 = mpstate.settings.streamrate
mpstate.status.last_streamrate2 = mpstate.settings.streamrate2
for master in mpstate.mav_master:
if master.linknum == 0:
rate = mpstate.settings.streamrate
else:
rate = mpstate.settings.streamrate2
if rate != -1:
master.mav.request_data_stream_send(mpstate.settings.target_system,
mpstate.settings.target_component,
mavutil.mavlink.MAV_DATA_STREAM_ALL,
rate, 1)
def check_link_status():
105
tnow = time.time()
if mpstate.status.last_message != 0 and tnow > mpstate.status.last_message + 5:
say("no link")
mpstate.status.heartbeat_error = True
for master in mpstate.mav_master:
if not master.linkerror and (tnow > master.last_message + 5 or master.portdead):
say("link %u down" % (master.linknum+1))
master.linkerror = True
def send_heartbeat(master):
if master.mavlink10():
master.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_GCS,
mavutil.mavlink.MAV_AUTOPILOT_INVALID,
0, 0, 0)
else:
MAV_GROUND = 5
MAV_AUTOPILOT_NONE = 4
master.mav.heartbeat_send(MAV_GROUND, MAV_AUTOPILOT_NONE)
def periodic_tasks():
'''run periodic checks'''
if mpstate.status.setup_mode:
return
if (mpstate.settings.compdebug & 2) != 0:
return
if mpstate.settings.heartbeat != 0:
heartbeat_period.frequency = mpstate.settings.heartbeat
if heartbeat_period.trigger() and mpstate.settings.heartbeat != 0:
mpstate.status.counters['MasterOut'] += 1
for master in mpstate.mav_master:
send_heartbeat(master)
if heartbeat_check_period.trigger():
check_link_status()
set_stream_rates()
for (m,pm) in mpstate.modules:
if hasattr(m, 'idle_task'):
try:
m.idle_task()
except Exception as msg:
if mpstate.settings.moddebug == 1:
print(msg)
elif mpstate.settings.moddebug > 1:
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exception(exc_type, exc_value, exc_traceback,
limit=2, file=sys.stdout)
106
# also see if the module should be unloaded:
if m.needs_unloading:
unload_module(m.name)
def main_loop():
'''main processing loop'''
if not mpstate.status.setup_mode and not opts.nowait:
for master in mpstate.mav_master:
send_heartbeat(master)
if master.linknum == 0:
print("Waiting for heartbeat from %s" % master.address)
master.wait_heartbeat()
set_stream_rates()
while True:
if mpstate is None or mpstate.status.exit:
return
while not mpstate.input_queue.empty():
line = mpstate.input_queue.get()
mpstate.input_count += 1
cmds = line.split(';')
if len(cmds) == 1 and cmds[0] == "":
mpstate.empty_input_count += 1
for c in cmds:
process_stdin(c)
for master in mpstate.mav_master:
if master.fd is None:
if master.port.inWaiting() > 0:
process_master(master)
periodic_tasks()
rin = []
for master in mpstate.mav_master:
if master.fd is not None and not master.portdead:
rin.append(master.fd)
for m in mpstate.mav_outputs:
rin.append(m.fd)
for sysid in mpstate.sysid_outputs:
m = mpstate.sysid_outputs[sysid]
rin.append(m.fd)
if rin == []:
time.sleep(0.0001)
continue
for fd in mpstate.select_extra:
rin.append(fd)
try:
(rin, win, xin) = select.select(rin, [], [], mpstate.settings.select_timeout)
107
except select.error:
continue
if mpstate is None:
return
for fd in rin:
if mpstate is None:
return
for master in mpstate.mav_master:
if fd == master.fd:
process_master(master)
if mpstate is None:
return
continue
for m in mpstate.mav_outputs:
if fd == m.fd:
process_mavlink(m)
if mpstate is None:
return
continue
for sysid in mpstate.sysid_outputs:
m = mpstate.sysid_outputs[sysid]
if fd == m.fd:
process_mavlink(m)
if mpstate is None:
return
continue
if fd in mpstate.select_extra:
try:
(fn, args) = mpstate.select_extra[fd]
fn(args)
except Exception as msg:
if mpstate.settings.moddebug == 1:
print(msg)
mpstate.select_extra.pop(fd)
def input_loop():
'''wait for user input'''
while mpstate.status.exit != True:
try:
if mpstate.status.exit != True:
line = raw_input(mpstate.rl.prompt)
except EOFError:
mpstate.status.exit = True
sys.exit(1)
mpstate.input_queue.put(line)
108
def run_script(scriptfile):
'''run a script file'''
try:
f = open(scriptfile, mode='r')
except Exception:
return
mpstate.console.writeln("Running script %s" % scriptfile)
for line in f:
line = line.strip()
if line == "" or line.startswith('#'):
continue
if line.startswith('@'):
line = line[1:]
else:
mpstate.console.writeln("-> %s" % line)
process_stdin(line)
f.close()
if __name__ == '__main__':
from optparse import OptionParser
parser = OptionParser("mavproxy.py [options]")
parser.add_option("--master", dest="master", action='append',
metavar="DEVICE[,BAUD]", help="MAVLink master port and optional
baud rate",
default=[])
parser.add_option("--out", dest="output", action='append',
metavar="DEVICE[,BAUD]", help="MAVLink output port and optional
baud rate",
default=[])
parser.add_option("--baudrate", dest="baudrate", type='int',
help="default serial baud rate", default=57600)
parser.add_option("--sitl", dest="sitl", default=None, help="SITL output port")
parser.add_option("--streamrate",dest="streamrate", default=4, type='int',
help="MAVLink stream rate")
parser.add_option("--source-system", dest='SOURCE_SYSTEM', type='int',
default=255, help='MAVLink source system for this GCS')
parser.add_option("--source-component", dest='SOURCE_COMPONENT',
type='int',
default=0, help='MAVLink source component for this GCS')
parser.add_option("--target-system", dest='TARGET_SYSTEM', type='int',
default=0, help='MAVLink target master system')
parser.add_option("--target-component", dest='TARGET_COMPONENT', type='int',
default=0, help='MAVLink target master component')
parser.add_option("--logfile", dest="logfile", help="MAVLink master logfile",
default='mav.tlog')
parser.add_option("-a", "--append-log", dest="append_log", help="Append to log
files",
action='store_true', default=False)
109
parser.add_option("--quadcopter", dest="quadcopter", help="use quadcopter
controls",
action='store_true', default=False)
parser.add_option("--setup", dest="setup", help="start in setup mode",
action='store_true', default=False)
parser.add_option("--nodtr", dest="nodtr", help="disable DTR drop on close",
action='store_true', default=False)
parser.add_option("--show-errors", dest="show_errors", help="show MAVLink error
packets",
action='store_true', default=False)
parser.add_option("--speech", dest="speech", help="use text to speech",
action='store_true', default=False)
parser.add_option("--aircraft", dest="aircraft", help="aircraft name", default=None)
parser.add_option("--cmd", dest="cmd", help="initial commands", default=None,
action='append')
parser.add_option("--console", action='store_true', help="use GUI console")
parser.add_option("--map", action='store_true', help="load map module")
parser.add_option(
'--load-module',
action='append',
default=[],
help='Load the specified module. Can be used multiple times, or with a comma
separated list')
parser.add_option("--mav09", action='store_true', default=False, help="Use
MAVLink protocol 0.9")
parser.add_option("--mav10", action='store_true', default=False, help="Use
MAVLink protocol 1.0")
parser.add_option("--mav20", action='store_true', default=True, help="Use
MAVLink protocol 2.0")
parser.add_option("--auto-protocol", action='store_true', default=False, help="Auto
detect MAVLink protocol version")
parser.add_option("--nowait", action='store_true', default=False, help="don't wait for
HEARTBEAT on startup")
parser.add_option("-c", "--continue", dest='continue_mode', action='store_true',
default=False, help="continue logs")
parser.add_option("--dialect", default="ardupilotmega", help="MAVLink dialect")
parser.add_option("--rtscts", action='store_true', help="enable hardware RTS/CTS
flow control")
parser.add_option("--moddebug", type=int, help="module debug level", default=0)
parser.add_option("--mission", dest="mission", help="mission name", default=None)
parser.add_option("--daemon", action='store_true', help="run in daemon mode, do
not start interactive shell")
parser.add_option("--profile", action='store_true', help="run the Yappi python
profiler")
parser.add_option("--state-basedir", default=None, help="base directory for logs and
aircraft directories")
parser.add_option("--version", action='store_true', help="version information")
parser.add_option("--default-modules",
default="log,signing,wp,rally,fence,param,relay,tuneopt,arm,mode,calibration,rc,auxopt,misc,cmdlong
,battery,terrain,output,adsb", help='default module list')
110
(opts, args) = parser.parse_args()
if os.path.exists("/usr/sbin/ModemManager"):
print("WARNING: You should uninstall ModemManager as it conflicts with APM
and Pixhawk")
if opts.mav09:
os.environ['MAVLINK09'] = '1'
if opts.mav20 and not opts.mav10:
os.environ['MAVLINK20'] = '1'
from pymavlink import mavutil, mavparm
mavutil.set_dialect(opts.dialect)
if opts.version:
import pkg_resources
version = pkg_resources.require("mavproxy")[0].version
print "MAVProxy is a modular ground station using the mavlink protocol"
print "MAVProxy Version: " + version
sys.exit(1)
mpstate = MPState()
mpstate.status.exit = False
mpstate.command_map = command_map
mpstate.continue_mode = opts.continue_mode
.Queue()
mpstate.logqueue_raw = Queue.Queue()
if opts.speech:
load_module('speech')
if not opts.master:
serial_list
=
mavutil.auto_detect_serial(preferred_list=['*FTDI*',"*Arduino_Mega_2560*",
"*3D_Robotics*",
"*USB_to_UART*", '*PX4*', '*FMU*'])
print('Auto-detected serial ports are:')
for port in serial_list:
print("%s" % port)
mpstate.settings.target_system = opts.TARGET_SYSTEM
mpstate.settings.target_component = opts.TARGET_COMPONENT
mpstate.mav_master = []
mpstate.rl = rline.rline("MAV> ", mpstate)
def quit_handler(signum = None, frame = None):
if mpstate.status.exit:
print 'Clean shutdown impossible, forcing an exit'
sys.exit(0)
else:
mpstate.status.exit = True
fatalsignals = [signal.SIGTERM]
try:
fatalsignals.append(signal.SIGHUP)
111
fatalsignals.append(signal.SIGQUIT)
except Exception:
pass
if opts.daemon:
fatalsignals.append(signal.SIGINT)
for sig in fatalsignals:
signal.signal(sig, quit_handler)
load_module('link', quiet=True)
mpstate.settings.source_system = opts.SOURCE_SYSTEM
mpstate.settings.source_component = opts.SOURCE_COMPONENT
for mdev in opts.master:
if not mpstate.module('link').link_add(mdev):
sys.exit(1)
if not opts.master and len(serial_list) == 1:
print("Connecting to %s" % serial_list[0])
mpstate.module('link').link_add(serial_list[0].device)
elif not opts.master:
wifi_device = '0.0.0.0:14550'
mpstate.module('link').link_add(wifi_device)
for port in opts.output:
mpstate.mav_outputs.append(mavutil.mavlink_connection(port,
baud=int(opts.baudrate), input=False))
if opts.sitl:
mpstate.sitl_output = mavutil.mavudp(opts.sitl, input=False)
mpstate.settings.streamrate = opts.streamrate
mpstate.settings.streamrate2 = opts.streamrate
if opts.state_basedir is not None:
mpstate.settings.state_basedir = opts.state_basedir
msg_period = mavutil.periodic_event(1.0/15)
heartbeat_period = mavutil.periodic_event(1)
heartbeat_check_period = mavutil.periodic_event(0.33)
mpstate.input_queue = Queue.Queue()
mpstate.input_count = 0
mpstate.empty_input_count = 0
if opts.setup:
mpstate.rl.set_prompt("")
(mpstate.status.logdir, logpath_telem, logpath_telem_raw) = log_paths()
if not opts.setup:
standard_modules = opts.default_modules.split(',')
for m in standard_modules:
load_module(m, quiet=True)
if opts.console:
process_stdin('module load console')
112
if opts.map:
process_stdin('module load map')
for module in opts.load_module:
modlist = module.split(',')
for mod in modlist:
process_stdin('module load %s' % mod)
start_scripts = []
if 'HOME' in os.environ and not opts.setup:
start_script = os.path.join(os.environ['HOME'], ".mavinit.scr")
start_scripts.append(start_script)
if 'LOCALAPPDATA' in os.environ and not opts.setup:
start_script = os.path.join(os.environ['LOCALAPPDATA'], "MAVProxy",
"mavinit.scr")
start_scripts.append(start_script)
if (mpstate.settings.state_basedir is not None and
opts.aircraft is not None):
start_script = os.path.join(mpstate.settings.state_basedir, opts.aircraft,
"mavinit.scr")
start_scripts.append(start_script)
for start_script in start_scripts:
if os.path.exists(start_script):
print("Running script (%s)" % (start_script))
run_script(start_script)
if opts.aircraft is not None:
start_script = os.path.join(opts.aircraft, "mavinit.scr")
if os.path.exists(start_script):
run_script(start_script)
else:
print("no script %s" % start_script)
if opts.cmd is not None:
for cstr in opts.cmd:
cmds = cstr.split(';')
for c in cmds:
process_stdin(c)
if opts.profile:
import yappi
yappi.start()
open_telemetry_logs(logpath_telem, logpath_telem_raw)
mpstate.status.thread = threading.Thread(target=main_loop, name='main_loop')
mpstate.status.thread.daemon = True
mpstate.status.thread.start()
while (mpstate.status.exit != True):
try:
113
if opts.daemon:
time.sleep(0.1)
else:
input_loop()
except KeyboardInterrupt:
if mpstate.settings.requireexit:
print("Interrupt caught. Use 'exit' to quit MAVProxy.")
for (m,pm) in mpstate.modules:
if m.name in ["map", "console"]:
if hasattr(m, 'unload'):
try:
m.unload()
except Exception:
pass
reload(m)
m.init(mpstate)
else:
mpstate.status.exit = True
sys.exit(1)
if opts.profile:
yappi.get_func_stats().print_all()
yappi.get_thread_stats().print_all()
for (m,pm) in mpstate.modules:
if hasattr(m, 'unload'):
print("Unloading module %s" % m.name)
m.unload()
sys.exit(1)
116
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
ДОКУМЕНТА НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
Наименование
атрибута
Характеристики
документа на электронном
группы
носителе
атрибутов
1.
Описание Обозначение документа \Плакаты\Презентация.ppt
документа
(идентификатор(ы)
файла(ов))
Наименование документа Демонстрационные плакаты
к
выпускной
квалификационной работе
Класс документа
ЕСКД
Вид документа
Оригинал
документа на
электронном носителе
Аннотация
Демонстрационный
материал,
отображающий
основные этапы выполнения
выпускной
квалификационной работы
Использование
Операционная
система
документа
Windows
10,
Microsoft
PowerPoint 2013
2. Даты и время
Дата
и
время 13.06.2018
копирования документа
Дата создания документа 29.05.2018
Дата
утверждения 06.06.2018
документа
3. Создатели
Автор
Власов В.В.
Изготовитель
Власов В.В.
4.
Внешние Ссылки
на
другие Удостоверяющий лист
ссылки
документы
№ 165136/п
5. Защита
Санкционирование
ОГУ имени И.С. Тургенева
Классификация защиты
По законодательству РФ
6. Характеристики Объем
информации 78336 Б
содержания
документа
117
7.
Структура Наименование
документа(ов)
(слайда) №1
Наименование
(слайда) №2
Наименование
(слайда) №3
Наименование
(слайда) №4
Наименование
(слайда) №5
Наименование
(слайда) №6
Наименование
(слайда) №7
Наименование
(слайда) №8
Наименование
(слайда) №9
плаката Титульный лист
плаката Цели и задачи работы
плаката Модель
процессов
предметной области
плаката Требования к программной
системе
плаката Архитектура программной
системы
плаката Логическая
схема
базы
данных
плаката Описание алгоритмов
плаката Схема
навигации
в
приложении
плаката Пользовательский интерфейс
1/--страниц
Пожаловаться на содержимое документа