Реферат по предмету "Информатика, программирование"


Обработка и визуализация объектов на космических изображениях средствами пакета Contour

Дипломная работа
Обработка и визуализация объектов на космических изображенияхсредствами пакета Contour

Оглавление
Введение
1. Литературный обзор
1.1 Физические основы дистанционногозондирования
1.2 Сегментация изображений
1.3 Основы теории цвета
1.4 Растровая и векторная графика
2. Методика эксперимента
3. Экспериментальные результаты
Выводы
Список литературыВведение
В последнее десятилетие для России важное значение приобрелиспутниковые методы исследования ее территории. Это связано как с дальнейшим совершенствованиемкосмической техники, так и со свертыванием авиационных и наземных методов мониторинга.
Основные области применения спутникового дистанционного зондирования- получение информации о состоянии окружающей среды и землепользовании, изучениерастительных сообществ, оценка урожая сельскохозяйственных культур, оценка последствийстихийных бедствий. Средства дистанционного зондирования эффективны при изучениизагрязнения почвы и водоемов, льдов на суше и на воде, и океанологии. Эти средствапозволяют получать сведения о состоянии атмосферы, в том числе глобальном масштабе.Данные зондирования поступают в виде растровых изображений земли из космоса. Онии являются моим объектом исследования в данной работе. А предметом исследования- любые аномальные области (вырубки, гари…) на снимках. Обнаружение и обработкатаких областей является важным процессом и занимает достаточно большое количествовремени и системных ресурсов. В данной работе создано программное обеспечение вкачестве одной из разновидностей геоинформационных систем, позволяющей проводитьклассификацию по цветам, оконтуривать классы и производить тематическую обработкудля оптимизации процесса обработки космической информации на снимках при минимальнойпотере качества. Написанное программное обеспечение позволяет проводить эффективноеоконтуривание областей, представлять границы в векторном формате для экспортированияв мировые геоинформационные системы. Результаты данной работы являются актуальнымии востребованными в сфере работ наземных служб по контролю растительного покроваЗемли.
1. Литературный обзор1.1 Физические основы дистанционного зондирования
При дистанционном зондировании Земли из космоса используетсяоптический диапазон электромагнитных волн и микроволновый участок радиодиапазона.На рис.1.1 представлен оптический диапазон, включающий в себя ультрафиолетовый(УФ) участок спектра, видимый участок — синяя полоса (С), зеленая (З), красная(К); инфракрасный участок (ИК) — ближнийИК (БИК), средний ИК (СИК) и тепловой ИК (ТИК) [1].
/>

В пассивных методах зондирования в оптическом диапазоне источникамиэлектромагнитной энергии являются разогретые до достаточно высокой температуры твердые,жидкие, газообразные тела.
При термодинамическом равновесии с окружающей средой все телас одинаковой температурой Т излучают одинаково (первый закон Кирхгофа).
В состоянии термодинамического равновесия поглощаемая в секундуучастком поверхности энергия равна энергии, излучаемой в тот же промежуток временитой же поверхностью (второй закон Кирхгофа).
Интенсивность излучения I в заданном направлении, характеризуемом углом a от нормали к излучающей поверхности абсолютночерного тела, определяется законом Ламберта: I = I0 cosa, где I0 — интенсивностьизлучения при a = 0, которая максимальна;при a = 90°, т.е. по касательной к поверхности, интенсивность излучения равнанулю.
По формуле Планка плотность потока мощности, излучаемой в состояниитермодинамического равновесия единицей поверхности абсолютно черного тела с температуройT в интервале длин волн l, l + dl в телесныйугол 2p стерадиан (ср)
B (l,T) = />×/>×(1.1)
Здесь с1 = 1, 1911×108 Вт×мкм4/м2ср;c2 = 14388 мкм×К;Максимум излучения приходится на l = 2898/T мкм.
Полная энергия во всем интервале длин волн описывается формулойСтефана-Больцмана:
 
¥
ò B (l,T) dl = a ×T4, a = 5,67*10-8 Вт×м — 2×К-4. (1.2)
При наблюдении Земли из космоса на длине волны короче 2-3 мкм регистрируется энергия Солнца, отраженнаяи рассеянная поверхностью суши, воды и облаков.
Температура поверхности (фотосферы) Солнца равна 5785 К, максимумизлучения приходится на 0,5 мкм. На рис.1.2 приведено распределение энергии в спектреСолнца согласно формуле Планка. Озон, содержащийся в атмосфере в небольшом количестве,сильно поглощает ультрафиолетовое излучение с длиной волны короче 0,3 мкм, так чтопри наблюдении Солнца с поверхности Земли отсутствует коротковолновый скат кривойB (l,T) (заштрихован на рис.1.2).
В остальном реальный спектр Солнца мало отличается от рис.1.2.
/>
Рис 1.2. Распределение энергии вспектре Солнца согласно закону Планка
На длинах волн более 4 мкм собственное тепловое излучение Землипревосходит излучение Солнца. Регистрируя интенсивность теплового излучения Землииз космоса, можно достаточно точно оценивать температуру суши и водной поверхности,которая является важнейшей экологической характеристикой [2].
При регистрации теплового излучения со спутников используетсяинтервал длин волн 10-14 мкм, в котором поглощение в атмосфере невелико. При температуреземной поверхности (облаков), равной минус 50°С, максимум излучения согласно (1.1) приходится на 12 мкм, при 50° С — на 9 мкм.
Если с помощью датчика, установленного на спутнике, измеренозначение плотности потока мощности B =B (λ, Т) от некоторого объекта, то из (1.1) получаем: T = λ/c2ln (c1/λ5B + 1). Определенная по интенсивностиВ теплового излучения (радиации) температура Т носит название радиационной,в отличие от термодинамической температуры, характеризующей интенсивностьтеплового движения молекул вещества и измеряемой контактным термометром [3].
1.2 Сегментация изображений
Одним из самых распространенных методов выделения объектов накосмических изображениях Земли является сегментация. Этот метод носит черты и детерминированного,и статистического подходов. Под сегментацией, в широком смысле, понимают преобразованиеполутоновых или цветных изображений в изображения, имеющие меньшее число тонов илицветов, чем исходные. В узком смысле сегментацией называют преобразование полутоновогоизображения в двухуровневое (бинарное), содержащее всего два уровня яркости — минимальный (обычно это 0) и максимальный (обычно255). При этом объект и фон разделены, легко определить число объектов, характеристикиих местоположения (координаты, поворот выделенной оси объекта относительно координатныхосей и т.п.), геометрические характеристики (например площадь каждого объекта, периметр,средний, минимальный, максимальный размеры) и, наконец, идентифицировать объект- указать, что это такое [4].
Целью сегментации является выделение областей, однородныхв каком-то определенном заданном смысле (сегментов). Однородность является признакомпринадлежности области к определенному классу.
Очень часто сегментация используется для выделения областей приблизительноодинакового тона и/или цвета. Вместе с тем сегментация часто используется для выделенияобластей, однородных в смысле некоторого более сложного свойства (например типатекстуры). Такие области принято называть кластерами [5].
Текстурой в теории обработки изображений называют структуру,которая характеризуется наличием повторяющегося «рисунка», состоящегоиз некоторых однородных участков приблизительно одинаковых размеров. Примером текстурногоизображения являются фотоснимок кирпичной стены, аэрофотоснимок городских кварталов,космическое изображение участка летней тундры с многочисленными круглыми озерами.
Применяются три основных способа сегментации изображений: пороговая,путем наращивания областей, путем выделения границ.
Пороговая сегментация состоит в простом объединенииблизких по характеристикам областей изображения в небольшое число сегментов. Пороговаясегментация может осуществляться на основе априорно заданных порогов. Если яркостьпревышает порог, то элемент изображения относят к одному сегменту, если она нижепорога — то к другому. Это самый простой способ и требует минимальных вычислительныхзатрат [6].
Другой, более адекватный, способ выбора порогов заключается втом, что пороги выбираются как границы мод гистограммы изображения. Рассмотрим болееподробно этот способ выбора на примере бинаризации полутонового изображения, у которогогистограмма содержит две моды.
Если моды гистограмм не перекрываются или перекрываются слабо,то выбор порога разбиения изображения на две области U1 и U2не представляют труда. Этот случай типичен для задачи выделения площадей, покрытыхснегом и льдом на фоне леса и оттаявшей земли по результатам дистанционных исследований.Гистограмма такого изображения имеет две моды — одна отвечает более темному фону, вторая — объектам с большей яркостью, т.е. снегу/льду, между модами существует резкая и протяженнаязона минимума. Порог можно выбрать посередине зоны (рис.1.4).
В способе сегментация путем наращивания областей выделяютсяоднородные области. Рассмотрим вначале сегментацию путем наращивания областей сиспользованием критерия однородности по значению яркости (вектора яркости). Схемаалгоритма этого метода предусматривает выбор стартового пикселя и рассмотрениесмежных с ним пикселей для проверки близости их значений, например, по евклидовурасстоянию. Если значения яркости текущего и какого-либо смежного пикселей оказываютсяблизкими, то эти пиксели зачисляются в одну область. Таким образом, область формируетсяв результате сращивания отдельных пикселей. На определенном этапе (зависящем отмодификации алгоритма) область проверяется на однородность и, если результат проверкиоказывается отрицательным, то область разбивается на более мелкие участки. Процесспродолжается до тех пор, пока все выделенные области не выдержат проверки на однородность[7].
Общая схема проверки области на однородность состоит в следующем.Пусть F (R) — заданная мераоднородности области R. Если R12 = R1∩R2,то критерий однородности можно задать, потребовав, чтобы выполнялось условие F(R12) ≤ ε, ε — заданный порог.
Таким образом, при сегментации путем наращивания областей учитываетсяструктура области, её связность. Это бывает важно при обработке данных дистанционногозондирования, нередко этот метод дает лучшие результаты, чем другие методы, не учитывающиесвязность и рассчитанные на индивидуальное отнесение каждого пикселя к тому илииному классу.
Дальнейшая классификация алгоритмов основана на способе наращиванияобласти. При использовании квадратной или прямоугольной сетки используются 2 видасвязности: 4 — и 8-связность [8].
Сегментация путем выделения границ предусматривает использованиеоператора градиента. После этого для установления факта, что действительно обнаруженаграница, применяется процедура разделения по порогу. Затем пиксели, идентифицированныекак граничные, соединяются в замкнутые кривые, окружающие соответствующие области.
В этом методе, как и в других методах сегментации, существеннымявляется критерий однородности области, по характеристике которой и вычисляютсязначения градиента. Прямые методы сегментации путем выделения границ предусматриваютприменение к исходному изображению.
Задача построения границ сегментов на изображении градиента выступаетв качестве самостоятельной задачи. Вообще говоря, эта задача довольно сложная иможет быть решена лишь в самых простейших случаях. Например, можно выделять локальныемаксимумы градиента всех строк и столбцов изображения [9].
Сегментация путем выделения границ показала, что метод достаточнохорошо работает только при большой протяженности границы [10].1.3 Основы теории цвета
Глаз. Если опустить несущественные для восприятия цветаоптические детали, глаз подобен цифровому фотоаппарату с очень неравномерным распределениемпикселей по площади кадра.
«Пикселями» на сетчатке глаза служат светочувствительныеклетки двух разновидностей: палочки и колбочки. Причем, палочки действуют в основномпри слабом освещении и предоставляют информацию лишь о яркости, а колбочки, эффективнодействующие только при достаточно ярком свете, позволяют глазу различать цвета.
Колбочки трех типов, называемые обычно S-, M-, и L-колбочками,воспринимают свет соответственно в коротко-, средне-, и длинноволновой областяхспектра. Часто их называют также синими, зелеными и красными колбочками, что несовсем корректно, но зато, наглядно.
Примерно следующим образом распределяется чувствительность клетоксетчатки (рис.1.3):
/>
Рис.1.3 Распределение чувствительности клеток сетчатки
Заметим, что это нормализованная чувствительность. В абсолютныхзначениях чувствительность палочек примерно вдвое превосходит максимальную чувствительностьколбочек, а сами колбочки активно подстраиваются под освещение и почти никогда необладают одинаковыми максимумами чувствительности [11].
Сетчатка глаза содержит примерно 100 млн. палочек и 5 млн. колбочек.В центре сетчатки, в области так называемого «желтого пятна» больше концентрациякрасных и зеленых колбочек, на периферии — палочек и синих колбочек. В центре желтогопятна — «ямке» — палочек и синих колбочек нет вообще. Как следствие, мелкиекрасные и зеленые детали различить нам не составляет труда, а синие, если смотретьпрямо на них, мало отличаются от черных.
Основная информация о деталях изображения и о цветах доставляетсянам колбочками, расположенными в желтом пятне и ямке. Периферийное зрение имеетдостаточно невысокое разрешение и не позволяет толком различать цвета. В то же время,увеличение концентрации палочек делает периферийное зрение более действенным в темноте.Ночью, зачастую, проще рассмотреть темный объект, отведя взгляд чуть в сторону.
программа contour delphi зондирование
Также различием палочек и колбочек определяется ночной сдвигпика чувствительности, называемый эффектом Пуркинье. При ярком свете глаз наиболеечувствителен к длинам волн около 554 нм, но в темноте, когда зрение практическиполностью определяется палочками, пик чувствительности сдвигается к 511 нм. Такимобразом, ночью все кошки действительно становятся серыми, и если вы умудритесь найтикошек синего и красного цветов, то синяя, посерев, станет гораздо светлее красной.
Подбор цветов в трехцветность. До сих пор мы говорилио цвете как о спектральной характеристике света, т.е. о его физическом смысле. Рассмотримтеперь более житейское понимание цвета. Зеленый цвет дает зеленая лампочка, красный- красная. Если на белый лист бумаги посветить обеими лампочками — он станет желтым.Что это означает? Означает это, что одни цвета можно получить смешением других.Очевидный, казалось бы, вывод становится совсем неочевидным при распространенииего на все возможные цвета. Один из основных опытов, служащих изучению цвета — подборцветовых пар. Представьте нейтральный экран в темной комнате: левая его половинаосвещается лампой некоторого заданного цвета (тестовый цвет), а правая — одновременнонесколькими лампами разных цветов, называемых основными. Теперь будем изменять яркостьотдельных ламп основных цветов, пытаясь сделать их общий цвет неотличимым от тестового.Закончив подбор, запишем тестовый цвет как сумму основных с соответствующими яркостямламп весовыми коэффициентами. Эксперимент показывает, что подобрать цвета такимобразом возможно практически во всех случаях, но основных цветов может понадобитьсяочень и очень много.
Второй важный момент, который выясняется в таких экспериментах:сложение цветов происходит линейно. При использовании n основных цветов,любой тестовый цвет мы можем представить как вектор в n-мерном пространствеих яркостей и при необходимости комбинирования нескольких «левых» цветов,для которых подобраны координаты, рассматривать их смешение как сложение соответствующихвекторов со всеми вытекающими из этого правилами.
Заметьте: цвет мы подбираем исключительно по ощущениям, не пользуясьникакими измерительными приборами кроме собственных глаз. Более того: воспользуйсямы такими приборами — выяснили бы, скорее всего, что спектральные характеристикиизлучения одинаковых для глаза половинок экрана здорово отличаются.
Существенным дополнением к эксперименту подбора будет введениевозможности разностного сопоставления цветов. Разрешим перенаправлять часть лампс правой части экрана на левую, а коэффициенты их яркостей в этом случае будем считатьотрицательными. При таком допущении оказывается, что большинству наблюдателей достаточнолишь трех линейно-независимых основных цветов для подбора коэффициентов к любомутестовому цвету.
Этот факт легко объясним, если вспомнить о физическом смыслецвета и том, как он воспринимается. Цвет как спектральная характеристика представляетсобой вектор в бесконечномерном пространстве, каждой координате которого соответствуетидеальный монохромный источник света. Воспринимая излучение, наш мозг оперируетвеличинами возбуждения трех рецепторов. Таким образом, процесс восприятия глазомцветов представляет собой проецирование бесконечномерного вектора на трехмерноепространство.
Теперь понятно, почему подобранные «на глаз» цветамогли сильно различаться по спектральным характеристикам. Понятно также, что, оперируявекторами в трехмерном пространстве воспринимаемых цветов (его часто называют цветовымпространством LMS по названиям типов колбочек), мы можем без зазрения совести выбиратьлюбые другие тройки базисных векторов, которые нам покажутся удобными [12].
Цветовые пространства. Для чего мы вообще возимся с цветами?Цвета нам нужно воспроизводить — на бумаге, мониторе или где-нибудь еще, цвета нужносравнивать и корректировать. Для всего этого цвета нужно уметь строго описывать,т.е. задавать и определять координаты того или иного цвета в некотором пространствепризнаков.
Способов задавать координаты цветов придумано в избытке — попробуемразобраться, что из чего вытекает. Очевидным решением было бы использование в качествекоординат коэффициентов основных цветов в эксперименте подбора цвета. Если для каждойдлины волны λ подобрать коэффициенты основных цветов A, B и C, мы получимнекоторые зависимости a (λ), b (λ), c (λ), которые называютсяфункциями подбора цвета. Любой чистый (монохромный) цвет теперь можно будет найтикак Цвет (λ) = a (λ) + b (λ) + c (λ).
Если в качестве основных цветов выбрать красный, зеленый и синийс длинами волн 645.16 нм, 526.32 нм и 444.44 нм соответственно, функции подборацвета для среднего наблюдателя примут следующий вид (рис 1.4):
/>
Рис.1.4 Функции подбора цвета
 
Отрицательные значения функций указывают на необходимость разностногосопоставления цветов. Для описания независимого цвета это не слишком удобно. Ещехуже, что избавиться от отрицательных значений нам не удастся ни при какой реальнойтройке основных цветов. Чтобы избавиться от отрицательных коэффициентов в выраженияхдля цветовых пар, можно немного переопределить спектры основных цветов, что, правда,сделает их нереальными по отдельности [13].
CIE (Commission internationale de l’eclairage, или МКО — Международнаякомиссия по освещению) предлагает использовать в качестве основных условные цветаX, Y Z. Вам не удастся найти их в природе — спектральная плотность этих цветов нанекоторых длинах волн отрицательна. Хотя, сами X, Y и Z не являются реальными цветами,подобраны они так, что любой реальный цвет представим в виде их линейной комбинациис неотрицательными коэффициентами. Так выглядят функции подбора для XYZ (рис.1.5):
/>
Рис.1.5 Функции подбора цвета для XYZ
Теперь любой реальный цвет мы можем представить вектором в пространствеXYZ (CIE XYZ), но далеко не любой вектор в этом пространстве представляет реальныйцвет. В прямоугольной системе координат XYZ область видимых человеческим глазомцветов представляет собой конус со сложным основанием (рис.1.6):
/>
Рис.1.6. Видимая область цвета человеческим глазом
Крайне удобным производным от XYZ пространством является CIExy, получаемое сечением XYZ плоскостью X+Y+Z=1. На плоскости вводится системакоординат с началом в точке пересечения плоскости с осью Z и координатамиx и y, равными единицам в точках пересечения плоскости с осями Xи Y соответственно. В результате получается следующее (рис.1.7):
/>
Рис.1.7 Плоскость сечения
Рассмотрим рисунок подробнее. Цвета в пределах плоскости xy отличаютсяпо цветовому тону и насыщенности, в то время как яркость (расстояние до нуля XYZ)остается за пределами описания. Иногда для полного описания цвета используют пространствоxyY, рассматривая в качестве яркости значение Y.
Яркость.
Строго говоря, яркость — это физическая характеристикаисточника света, описывающая его излучение в данном направлении. В контекстецветов корректнее было бы говорить о светлоте, как субъективном отличии яркостиданного цвета от яркости эталонного белого. Используются, однако, оба термина:можно считать, что светлота характеризует отличие цвета от белого, а яркость — его отличие от черного. В переводной литературе в качестве синонима яркостииногда используется термин «значение» (value).
Численно яркость может определяться по-разному. Впространстве XYZ или аналогичном ему под яркостью может пониматься евклидоворасстояние до начала координат, сумма всех трех координат или двух из них.Иногда используется наибольшее значение из трех координат цвета или среднееарифметическое двух наибольших. В этой статье мы не будем углубляться в дебритонких различий, не критичных для общего понимания теории цвета. Какой бытермин вы ни использовали для яркости/светлоты и как бы ни определяли величину,суть остается неизменной. Абстрагировавшись от цветового тона и насыщенности,мы получим отрезок, на одном конце которого будет белый цвет, а на другом — черный.
Вернемся к плоскости xy. На плавной дуге, ограничивающейобласть видимых цветов, отмечены длины волн. На ней же располагаются соответствующиеэтим длинам волн чистые спектральные цвета. Соединяющий фиолетовый с красным отрезокслужит прибежищем пурпурных цветов — там же располагается и маджента. Пурпурный- неспектральный цвет, у него нет своей длины волны или диапазона длин волн. Ощущенияпурпурных тонов возникают в результате приема глазом смеси красных и фиолетовыхцветов [14].
Цвета на ограничивающей кривой чистые, т.е. обладают максимальнойнасыщенностью. По мере приближения к центру области насыщенность падает, пока, наконец,цвет не становится белым (строго говоря — серым). Координаты точки, в которой цветстановится белым — «точки белого» — зависят от текущего состояния глаз,адаптирующихся к освещению. При рассмотрении сцены, освещенной единственным источникомсвета, точка белого зависит от цветовой температуры этого источника. На рисункеотмечена кривая цветовой температуры, вдоль которой перемещается точка белого приосвещении источниками света, соответствующими модели АЧТ. Для неидеальных источниковточка белого может смещаться и в перпендикулярном кривой температур направлении.
Самым полезным свойством пространства xy является наглядноепредставление производных цветов. Для любого набора основных цветов все воспроизводимыепутем их смешения цвета будут располагаться в пространстве xy внутри минимальноговыпуклого многоугольника, описывающего точки основных цветов. Если смешивать дваосновных цвета A и B, то все цвета, которые можно получить таким смешением, будутрасполагаться на отрезке AB плоскости xy. Если основных цветов три — всевозможные производные цвета будут располагаться в треугольнике, образуемом основными.Если, например, в каждом пикселе монитора мы смешиваем основные цвета RGB, выбранныекак показано на рисунке, несложно определить треугольник цветов, которые такой мониторспособен воспроизвести. Хорошо видно, что никакой монитор, даже при идеальных монохромныхпикселях, не сможет воспроизвести все видимые цвета. Впрочем, это мы знали и раньше:в противном случае не возникло бы необходимости в цветах XYZ.
Поскольку производные от двух цветов всегда лежат на соединяющемих отрезке, очевидно, что для любого цвета можно подобрать второй, который в смешениис ним будет давать белый. Цвета, смешением которых в определенных пропорциях можнополучить белый, называются дополнительными. При этом говорят обычно о чистых цветах,т.е., фактически, о тонах.
Во всех случаях реального воспроизведения цветов нас мало интересуютцвета нереальные, а также реальные, но невоспроизводимые. Вполне естественным втаком случае будет использование основных цветов воспроизводящего устройства в качествебазисных векторов пространства. Для традиционных красного, зеленого и синего получимтрехмерное RGB-пространство, область реальных цветов которого ограничена кубом(рис.1.8):
/>
Рис.1.8 RGB-пространство
 
В единичных точках на осях RGB мы имеем основные цвета, в началекоординат черный, в точке (1, 1, 1) — белый, а при попарном смешении основных цветовполучаем дополнительные к третьему: циан, мадженту и желтый. Все остальные воспроизводимыенашим устройством цвета располагаются внутри куба [15].
Попробуем теперь отделить цветовую информацию от яркостной. Сместимнемного точку наблюдения так, чтобы белый цвет совпал с черным, и нарисуем полностьюцвета ярких граней куба (рис.1.9):
/>
Рис.1.9 RGB-куб. Направление [111]
 
Яркость теперь снова можно считать расстоянием до начала координат.Сгладив углы шестиугольника на иллюстрации, получим хорошо всем знакомый цветовойкруг (рис.1.10):
/>
Рис.1.10 Цветовой круг
 
Любой цвет на таком круге задается в полярной системе координат:цветовой тон определяет угол, а насыщенность — расстояние от центра (белого). Вспомнивпро яркостную составляющую, и дополнив ею систему координат до цилиндрической, получаемHSB — еще одно пространство для описания любого цвета. Заметим на этот раз, чтоне совсем любого, а любого воспроизводимого [16].
HSB (HSV), HSL, LCH
HSB (Hue, Saturation, Brightness) = тон, насыщенность, яркость;
HSV (Hue, Saturation, Value) = тон, насыщенность, значение;
HSL (Hue, Saturation, Lightness) = тон, насыщенность, светлота;
LCH (Lightness, Chroma, Hue) = светлота, цветность, тон.
Различия перечисленных цветовых пространств сродни различию светлотыи яркости: термины, в принципе, разные, но на понятийном уровне эквивалентные. Всеони описывают координаты цвета в цилиндрических координатах. Численные определениямогут различаться, но hue всегда задает цветовой тон, saturation/chroma — насыщенность,а brightness/lightness/value — высоту в цилиндре, путь от белого к черному.1.4 Растровая и векторная графика
Одно и то же изображение может быть представлено в памяти ЭВМдвумя принципиально различными способами и получено два различных типа изображения:растровое и векторное. Рассмотрим подробнее эти способы представления изображений,выделим их основные параметры и определим их достоинства и недостатки.
Что такое растровое изображение?
Возьмём рисунок (рис.1.11). Конечно, она тоже состоит из маленькихэлементов, но будем считать, что отдельные элементы мы рассмотреть не можем. Онапредставляется для нас, как реальная картина природы.
Теперь разобьём это изображение на маленькие квадратики (маленькие,но всё-таки чётко различимые), и каждый квадратик закрасим цветом, преобладающимв нём (на самом деле программы при оцифровке генерируют некий «средний»цвет, т.е. если у нас была одна чёрная точка и одна белая, то квадратик будет иметьсерый цвет) [17].
Как мы видим, изображение стало состоять из конечного числа квадратиковопределённого цвета. Эти квадратики называют pixel (от PICture ELement)- пиксел или пиксель.
/>
Рис.1.11 Исходное изображение
Теперь каким-либо методом занумеруем цвета. Конкретная реализацияэтих методов нас пока не интересует. Для нас сейчас важно то, что каждый пиксельна рисунке стал иметь определённый цвет, обозначенный цифрой (рис.1.12).
/>
Рис.1.12 Фрагмент оцифрованного изображения и номера цветов
Теперь пойдём по порядку (слева направо и сверху вниз) и будемв строчку выписывать номера цветов встречающихся пикселей. Получится строка примерноследующего вида:
1 2 8 3 212 45 67 45 127 4 78 225 34.
Вот эта строка и есть наши оцифрованные данные. Теперь мы можемсжать их (так как несжатые графические данные обычно имеют достаточно большой размер)и сохранить в файл [18].
Итак, под растровым (bitmap, raster) понимают способпредставления изображения в виде совокупности отдельных точек (пикселей) различныхцветов или оттенков. Это наиболее простой способ представления изображения, иботаким образом видит наш глаз.
Достоинством такого способа является возможность получения фотореалистичногоизображения высокого качества в различном цветовом диапазоне. Недостатком — высокаяточность и широкий цветовой диапазон требуют увеличения объема файла для храненияизображения и оперативной памяти для его обработки.
Для векторной графики характерно разбиение изображенияна ряд графических примитивов — точки, прямые, ломаные, дуги, полигоны. Таким образом,появляется возможность хранить не все точки изображения, а координаты узлов примитивови их свойства (цвет, связь с другими узлами и т.д.) [19].
Вернемся к изображению на рис.1.11 Взглянем на него по-другому.На изображении легко можно выделить множество простых объектов — отрезки прямых,ломанные, эллипс, замкнутые кривые. Представим себе, что пространство рисунка существуетв некоторой координатной системе. Тогда можно описать это изображение, как совокупностьпростых объектов, вышеперечисленных типов, координаты узлов которых заданы векторомотносительно точки начала координат (рис.1.13).
/>
Рис.1.13. Векторное изображение и узлы его примитивов
Проще говоря, чтобы компьютер нарисовал прямую, нужны координатыдвух точек, которые связываются по кратчайшей прямой. Для дуги задается радиус ит.д. Таким образом, векторная иллюстрация — это набор геометрических примитивов.
Важной деталью является то, что объекты задаются независимо другот друга и, следовательно, могут перекрываться между собой.
При использовании векторного представления изображение хранитсяв памяти как база данных описаний примитивов. Основные графические примитивы, используемыев векторных графических редакторах: точка, прямая, кривая Безье, эллипс (окружность),полигон (прямоугольник). Примитив строится вокруг его узлов (nodes). Координатыузлов задаются относительно координатной системы макета. Изображение будет представлятьиз себя массив описаний. Каждому узлу приписывается группа параметров, в зависимостиот типа примитива, которые задают его геометрию относительно узла. Например, окружностьзадается одним узлом и одним параметром — радиусом. Такой набор параметров, которыеиграют роль коэффициентов и других величин в уравнениях и аналитических соотношенияхобъекта данного типа, называют аналитической моделью примитива [20].
Векторное изображение может быть легко масштабировано без потеридеталей, так как это требует пересчета сравнительно небольшого числа координат узлов.Другой термин — «object-oriented graphics».
Самой простой аналогией векторного изображения может служитьаппликация. Все изображение состоит из отдельных кусочков различной формы и цвета(даже части растра), «склеенных» между собой. Понятно, что таким образомтрудно получить фотореалистичное изображение, так как на нем сложно выделить конечноечисло примитивов, однако существенными достоинствами векторного способа представленияизображения, по сравнению с растровым, являются:
векторное изображение может быть легко масштабировано без потерикачества, так как это требует пересчета сравнительно небольшого числа координатузлов;
графические файлы, в которых хранятся векторные изображения,имеют существенно меньший, по сравнению с растровыми, объем (порядка несколькихкилобайт) [21].
Как видно, векторным можно назвать только способ описания изображения,а само изображение для нашего глаза всегда растровое [22].
Постановка задачи
Дешифрирование космических снимков, один из методов изученияместности по её изображению, полученному посредством космической съёмки. Заключаетсяв выявлении и распознавании объектов, установлении их качественных и количественныххарактеристик, а также регистрации результатов в графической (условными знаками),цифровой и текстовой формах [23]. Дешифрирование имеет общие черты, присущие методув целом, и известные различия, обусловленные особенностями отраслей науки и практики,в которых оно применяется наряду с другими методами исследований.
Эффективность дешифрирования, т.е. раскрытия содержащейся в снимкахинформации, определяется особенностями изучаемых объектов и характером их передачипри космической съёмке (дешифровочными признаками), совершенством методики работы,оснащённостью приборами и свойствами исполнителей дешифрирования. В ряду дешифровочных(демаскирующих) признаков различают прямые и косвенные (нередко с выделением комплексных).К прямым признакам относят: размеры, форму, тени собственные и падающие (иногдаих считают косвенным признаком), фототон или цвет и сложный признак — рисунок илиструктуру изображения. К косвенным — указывающие на наличие или характеристику объекта,хотя он и не получил непосредственного отображения на снимке из космоса в силу условийсъёмки или местности. Например, растительность и микрорельеф являются индикаторамипри дешифрировании задернованных почв.
Цели работы:
1) разработать программный пакет для обработки космических изображений;
2) провести сравнительный анализ программ Contour и Erdas Imagine для оценки качества реализациисобственного алгоритма сегментации;
3) с помощью собственного алгоритма сегментации провести анализ двух съемочныхсистем на примере Landsat ETM+ и Spot5 для установления разницыв снимках с различным пространственным разрешением.
В задачи исследования входят:
1. анализ алгоритмов распознавания изображений;
2. выявление оптимального по скорости и качеству алгоритма сегментации;
3. составление блок-схемы программы по распознаванию изображений на основе выбранногоалгоритма;
4. ознакомление с географическими информационными системами (ГИС), растровойи векторной моделей данных и их форматными представлениями;
5. выявление подходящего векторного формата для последующего его примененияв ГИС-проектах;
6. создание географической привязки;
7. векторизация растровых контуров и сохранение в виде shp-файлов;
8. подобрать каналы с максимальной информативностью
Для решения задачи дешифрирования разработаны профессиональныепрограммные пакеты, которые по своим функциям удовлетворяют предъявляемым требованиям.Основным недостатком этих пакетов является высокая стоимость, большие требованияк системным ресурсам используемых персональных компьютеров и сложность в эксплуатацииэтих программ.
/>2. Методика эксперимента
В пакет программного обеспечения входит (рис.2.1):
/>
Рис.2.1 Блок-схема программы
Автоматическое выделение границ основано на сегментации путемнаращивания областей. Блок-схема данного алгоритма представлена на рис.2.2.
/>
Рис.2.2 Блок-схема алгоритма сегментации путем наращивания областей
3. Экспериментальные результаты
Блок-схема программного обеспечения «Contour»по работе с растровыми изображениями (рис.3.1).
/>
/>
/>Рис.3.1 Блок-схемапрограммы
Опишем более подробно все этапы алгоритма:
· На начальном этапе производим загрузку растрового изображения в любомграфическом формате (TIF, BMP, JPG…).Рекомендуется в BMP, т.к. данный формат не предусматриваетсжатия, и соответственно потерь уже на начальном этапе.
· Далее заносим все необходимые сведения о сцене для дальнейшей работы:проекции, зоны, датума, сфероида (для географической привязки и правильного отображенияполигонов в ГИС), верхнего левого угла (для расчета размеров снимка), пространственногоразрешения пикселя (для подсчета площадей и периметров полигонов).
· Теперь можно приступать к оконтуриванию гарей (или других объектов)методом сегментации путем наращивания областей. Однородность области проверяетсяна уровне порогов трех компонент RGB-композита. Осуществленареализация ручной задачи данных порогов.
· Зная пространственное разрешение можно подсчитать площадь и периметргари по количеству входящих в полигон пикселей. Каждому выделенному объекту присваиваетсяидентификационный номер, и все сведения заносятся в базу данных.
· Затем следует сохранение контуров в бинаризованном виде (0 — фон,1 — граница).
· Привязка к мировым географическим координатам.
· Далее путем векторизации растровых полигонов получение векторноготипа данных.
· Полученные векторные данные хранятся в базе данных, которую уже можноиспользовать для дальнейшей работы в мировых ГИС-стандартах.
· И на данном последнем этапе загрузка векторных полигонов в ГИС-проекты.
/>
Рис.3.2 Вид рабочего окна программы «Contour»
 
Программа «Contour» (рис.3.2)может выполнять следующие операции и функции:
· Изменять масштаб изображения, задаваемый как бегунком так и ручнымвводом;
· Отслеживать внутренние и мировые географические координаты под курсороммыши и выводить их в статусной строке;
· Отслеживать RGB-компонент под курсором мышии выводить их в статусной строке;
· Кнопка «Добавить» добавляет новый контур и присваивает емууникальный идентификационный номер;
· В ручном режиме оконтуривания левой клавишей мыши выставляются вершиныконтура в реальном времени;
· В ручном режиме оконтуривания правой клавишей мыши обнуляются всехвыставленные вершины;
· Задание Х и У — координат верхнего левого угла сцены;
· Задание пространственного разрешения снимка;
· Подсчитывание в реальном времени площади и периметра контура;
· Отслеживание количества выставленных вершин и выведение их в статуснойстроке;
· Изменение прозрачности для любого контура в любой момент времени;
· Кнопка «Удалить» (или клавиша «Del»)удаляет любой выбранный контур;
· При выборе контура в таблице (или при нажатии клавиши «Ins») происходит «подсвечивание» контура на изображении;
· Через меню «Правка» удаляются последний и/или все контуры;
· Через меню «Файл» открытие снимка в графическом формате;
· Через меню «Файл» открытие контура (осуществляется тольков том случае, если размеры снимка и контура совпадают);
· Через меню «Файл» сохраняется контура (-ов) в графическомформате BMP с файлом географическойпривязки к мировым координатам.
· В автоматическом выделении щелчок левой кнопки мыши запускает процессвыделения объекта;
· В автоматическом выделении выставление порога RGB-композитаустанавливается по порядку в соответствующих полях для R,G и B- компонент.
Проведен сравнительный анализ наоснове значений площадей при помощи программы Contour, срезультатами дешифрирования участков, полученных в геоинформационном пакете ERDAS IMAGINE 9.1 используемым в настоящее время в Центре космического мониторингаи Институте леса.
Для того чтобы проводить сравнение нечетких спорных объектов,нужно сначала удостоверится на проверке оконтуривания простой однотонной геометрическойфигуры (рис.3.3).

/> />
Рис.3.3 Сравнение полученных контуров (слева — в пакете"Contour", справа — в пакете "Erdas Imagine")
 
Площадь круга в обеих программах составила одинаковое значение- 7870 квадратных единиц. Это говорит о том, что программное обеспечение собственнойразработки работает корректно и пригодно для последующей проверки более сложныхобластей на космических снимках.
Сравнены реальные объекты, присутствующие на снимках. Сначалав качестве простой задачи взяты три области лесных вырубок, потому что они имеютчеткий контур и отличительно однотонный светло-зеленый фон. На рис.3.4 и рис.3.5представлены контуры, полученные в программах «Contour»и «Erdas» соответственно.
/>
Рис.3.4 Контур вырубок, полученный в программе «Erdas»
 
/>
Рис.3.5 Контур вырубок, полученный в программе «Contour»
 
Таблица 3.1
Сравнение площадей программНомер полигона Erdas, кв. ед. Contour, кв. ед. Расхождение 1 10880 10897 0,16% 2 10092 10110 0,18% 3 8199 8220 0,25%
Как видно из таблицы 3.1, минимальное расхождение в результатахсоставляет доли процента. Это связано в различии пороговых значений в «Contour»и евклидова расстояния в «Erdas».
И наконец, сравнены наиболее сложные области (имеющие большоеколичество классов), но так необходимые для повсеместного анализа — гари.
/>
Рис.3.6 Контур гари, полученный в программе «Contour»
 
/>
Рис.3.7 Контур гари, полученный в программе «Erdas»
Разница в площадях между контурами на рис.3.7 и рис.3.7 более15%. Согласно зрительному дешифрованию, «Erdas»не должен был выделять область справа (отделена красной чертой). Здесь как раз искрыты различия в алгоритмах выделения областей между программами. Это связано стем, что в программе «Erdas» происходит выделение области по спектральнымданным снимка, тогда как в программе «Contour»используется цветовая палитра RGB-композита, значение порогакоторой используется как своеобразный классификатор и полностью схож с принципомзрительного различения цветов. С помощью пакета Contour проведен сравнительный анализсъемочных систем на примере Landsat ETM+ и Spot5 для установления разницыв площадях на снимках с различным пространственным разрешением. Пространственноеразрешение спектрометра Landsat 30м,Spot5 — 15м.
/>
Рис.3.8 Контур области снимка Landsat
 
/>
Рис.3.9 Контур области снимка Spot
 
Было проведено десять измерений различных областей.
Таблица 3.2
Сравнение площадей съемочных системНомер полигона Landsat, кв. ед. Spot, кв. ед. Расхождение 1 17010 18511 8.9% 2 10092 10799 7% 3 8199 8854 8.1% 4 18462 19735 6.9% 5 14785 15864 7.3% 6 20153 21886 8.6% 7 5143 5636 9.6% 8 7549 8266 9.5% 9 11889 12733 7.1% 10 15300 16340 6.8%
Среднее расхождение составило 7,9%. Это связано с большим пространственнымразрешением у системы Spot. Так же можно отметить, что присравнении малых областей, процент расхождения более высок, чем при сравнении большихобластей. В дальнейшем, при работе со снимками Spot можно делать поправку на найденноепроцентное расхождение для сравнения этих съемочных систем.
Выводы
В проделанной работе получены следующиерезультаты:
1) Определены информативные спектральные каналы для формирования изображенияс нужной цветопередачей: 5,4 и 3 для съемочной системы Landsat ETM+.
2) Установлены цветовые формулы для обработки.
3) Разработан программный пакет Contour для обработки и визуализации объектов на космических изображенияхсо следующими возможностями:
· Загрузка графических изображений;
· Создание растровых слоев;
· Выделение границы объектов;
· Расчет площадей и периметров;
· Создание бинарных слоев с границами объектов;
· Географическая привязка;
· Векторизация;
· Экспортирование shape-файлов.
4) Проведено сравнение с профессиональным пакетом «Erdas Imagine 9».Установлено, что на простых объектов (вырубок) результаты идентичны. Время обработкисущественно ниже при той же точности. При сравнении более сложных областей (гарей)процент расхождения достигает 15%, что связано в различии пороговых значений, используемыхв программах. Вероятность достоверного результата выше по причине меньшего количестваспектральных каналов.
5) Проведен сравнительных анализ двух съемочных систем на примере Landsat ETM+ и Spot5 с различными пространственными разрешениями. Среднее расхождениев 7.9% в дальнейшем можно учитывать как поправку при работе со снимками этих двухсистем.
Список литературы
1. Кашкин В.Б., Сухинин А.И. Дистанционное зондирование Земли из космоса. Цифроваяобработка изображений [текст]: учебник / В.Б. Кашкин, А.И. Сухинин. — М.: Логос,2001. — 264 с.
2. Савельев, И.В. Курс общей физики / И.В. Савельев. — М.: Наука, 1968.
3. Ахманов, С.А. Введение в статистическую радиофизику и оптику / С.А. Ахманов,Ю.Е. Дьяков, А.С. Чиркин. — М.: Наука, 1981.
4. Тихомирова, В.А. Физика и биология / В.А. Тихомирова, А.И. Черноуцан. — М.:Бюро Квантум, 2001. — 128 с.
5. Чандра А.М., Гош С.К. Дистанционное зондирование и географические информационныесистемы [текст]: учебник / А.М. Чандра, С.К. Гош. — М.: Техносфера, 2008. — 312с.
6. Берлянт, А.М. Картоведение / А.М. Берлянт. — М.: Аспект пресс, 2003. — 477с.
7. Басараб М.А., Волосюк В.К., Горячкин О.В. Цифровая обработка сигналов и изображенийв радиофизических приложениях [текст]: учебник / М.А. Басараб, В.К. Волосюк, О.В.Горячкин; Под ред. В.Ф. Кравченко. — М.: ФИЗМАТЛИТ, 2007. — 544 с.
8. Crosier S., Booth B. ArcGIS 9: Map projections [текст]: учебное пособие / S. Crosier, B. Booth. — New York: Environmental System Research Institute, 2004. — 116 p.
9. Crosier S., Booth B. ArcGIS 9: Getting started [текст]: учебное пособие / S. Crosier, B. Booth. — New York: Environmental System Research Institute, 2004. — 272 p.
10. Murai S. GIS Work Book: Fundamental Practical Course[текст]: учебное пособие / S. Murai.- Japan: Japan Association of Surveyors, 1999. — 74 p.
11. Grady, L., and Funka-Lea, G. 2004. Multi-label imagesegmentation for medical applications based on graph-theoretic electrical potentials.In ECCV Workshops CVAMIA and MMBIA, 230-245.
12. Richard Barbieri, Harry Montgomery и др. Algorithm Technical Background Document // MODIS ATBD: THEORETICALBASIS 1, 1997. — P.27 — 29
13. Michael Matson, Jeff Dozier. Identification of SubresolutionHigh Temperature Sources Using a Thermal IR Sensor // Photogrammetic Engineeringand Remote Sensing №9, 1991 стр.1311-1318
14. Грузман И.С. и др. Цифровая обработка изображений в информационных системах.- Новосибирск: НГТУ, 2002. — 352 с.
15. Верещака Т.В., Зверев А.Т. Визуальные методы дешифрирования. — М.: Недра,1990. — 341 с.
16. Трофимова, Н.В. Методика создания ГИС проекта / Н.В. Трофимова, 2006. — 50с.
17. Рис, У. Физические основы дистанционного зондирования. Учебное пособие /У. Рис — М.: Техносфера, 2008. — 312с.
18. Грузман, И.С. Цифровая обработка изображений в информационных системах /И.С. Грузман. — Новосибирск: НГТУ, 2002. — 352 с.
19. Верещака, Т.В. Визуальные методы дешифрирования / Т.В. Верещака, А.Т. Зверев.- М.: Недра, 1990. — 341 с.
20. Гарбук, С.В. Космические системы дистанционного зондирования Земли / С.В.Гарбук, В.Е. Гершензон. — М.: Сканэкс, 1997. — 296 с
21. Прэтт, У. Цифровая обработка изображений / У. Прэтт. — М.: Мир, 1982.
22. Loboda, T. Regionally adaptable dNBR-based algorithmfor burned area mapping from MODIS data / T. Loboda, K. J. O”Neal, I. Csiszar.- M: Science Direct, 2007.
23. Мураховский В.И. Компьютерная графика [текст]: учебник / В.И. Мураховский;Под. Ред. С.В. Симоновича. — М.: Аст-Пресс СКД, 2002. — 640 с.

Приложение
Компьютерный код программы«Contour» в среде «Delphi».
unit Unit1;
interface
uses Windows, Messages,SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, GR32_Layers, GR32_Polygons,StdCtrls, GR32_Image, GR32, ExtCtrls, Menus, ExtDlgs, Gauges,JPEG, Grids, ActnPopup,ComCtrls, Tabs, DockTabSet;
type
TFormMain = class(TForm)
ImgView321: TImgView32;ScaleBar: TScrollBar; OptionsImPanel: TPanel; ScaleLabel: TLabel; ScaleCombo: TComboBox;MainMenu: TMainMenu; FileN: TMenuItem; OpenN: TMenuItem; ExitN: TMenuItem; OpenPictureDialog1:TOpenPictureDialog; CloseN: TMenuItem; ScalePanel: TPanel; SystemPanel: TPanel;XYPanel: TPanel; RGBPanel: TPanel; Grid: TStringGrid; NewPolButton: TButton; EditN:TMenuItem; DelAllN: TMenuItem; DelLastN: TMenuItem; N7: TMenuItem; ProzrCont: TScrollBar;DelPolButton: TButton; Label1: TLabel; SavePictureDialog1: SavePictureDialog; SaveContN:TMenuItem; N2: TMenuItem; OpenContN: TMenuItem FillPanel: TPanel; AddDelPanel: TPanel;Label2: TLabel; TochekPanel: TPanel; RadioVidCon: TRadioGroup; ChangePanel: TPanel;N1: TMenuItem; AutoOptPanel: TPanel; Label8: TLabel; Label5: TLabel; EditR: TEdit;EditG: TEdit; EditB: TEdit; Label9: TLabel; Panel1: TPanel; Panel2: TPanel; ColorDialog1:TColorDialog; Button1: TButton; Label10: TLabel; Shape1: TShape; WxWyPanel: TPanel;Panel4: TPanel; Label6: TLabel; UpLeftX: TEdit; Panel5: TPanel; Label7: TLabel;UpLeftY: TEdit; Panel6: TPanel; Label3: TLabel; RazrEdit: TEdit; SaveTextFileDialog1:TSaveTextFileDialog; Memo1: TMemo; Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure DelAllNClick(Sender: TObject); procedure OpenContNClick (Sender: TObject); procedure SaveContNClick(Sender: TObject); procedure DelLastNClick (Sender: TObject); procedure DelPolButtonClick(Sender: TObject); procedure GridMouseDown (Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); procedure GridMouseUp (Sender: TObject; Button:TMouseButton; Shift: TShiftState; X, Y: Integer); procedure rozrContChange (Sender:TObject); procedure CloseNClick (Sender: TObject); procedure GridSelectCell (Sender:TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure GridKeyDown (Sender:TObject; var Key: Word; Shift: TShiftState); procedure NewPolButtonClick (Sender:TObject); procedure ImgView321MouseDown (Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer); procedure FormCreate (Sender:TObject); procedure OpenNClick (Sender: TObject); procedure ScaleComboChange (Sender:TObject); procedure ScaleBarChange (Sender: TObject); procedure ImgView321MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer); procedureDelContour (nomer: integer); private Polygon: array [1.1000] of TPolygon32; Outline:TPolygon32; procedure Build; procedure Draw (sloi: integer; proz: integer); procedureLeft; procedure Right; procedure Up; procedure Down; function ColorSrav (colFun:TColor32): boolean; function StopUp: boolean; function StopLeft: boolean; functionStopDown: boolean; function StopRight: boolean; procedure OtrisovkaAuto;
var
FormMain: TFormMain;CurDir: string; p: TPoint; conty: array [1.1000] of TBitmapLayer; id: word; points:word; colg,rowg: integer; mm: boolean;
scrollfill: boolean;xt,yt: array [0.1000] of integer; dlina: array [1.1000] of real;
square: array [1.1000]of real; prozra: array [1.1000] of integer; // dot: array [1.10000,1.10000] of integer;dot: array of array of array of integer; x_g,y_g: integer; col,colP: TColor32; StopperSlayer:boolean;
procedure Area;var i: Integer; begin xt [0]: = xt [points]; yt [0]: = yt [points]; square [id]:= 0; i: = 0; repeat square [id]: = square [id] + (xt [i] +xt [i+1]) * (yt [i] — yt [i+1]); i: = i+1; until not (i
procedure Delay(ms: longint); var TheTime: LongInt; begin TheTime: = GetTickCount + ms; while GetTickCount
procedure TFormMain.Build; var TmpPoly: TPolygon32; begin Outline. Free; Outline: = nil; TmpPoly: =Polygon [id]. Outline; Outline: = TmpPoly. Grow (Fixed (0), 0); Outline. FillMode:= pfWinding; TmpPoly. Free;
end; procedure TFormMain.DelAllNClick (Sender: TObject); vari: integer; begin for i: = 1 to id do begin Grid.Rows [i]. Clear (); Polygon [id]. Clear; Conty [i]. Free; end; id: =0; DelPolButton.Enabled: =False; end;
procedure TFormMain.DelLastNClick (Sender: TObject); begin if (id0) then DelContour (id); end;procedure TFormMain. DelPolButtonClick (Sender: TObject);
begin DelContour(rowg); end;
procedure TFormMain.Draw (sloi: integer; proz: integer); begin Conty [sloi]. Bitmap. BeginUpdate; Conty[sloi]. Bitmap. Clear ($00); Conty [sloi]. Bitmap. Draw (0, 0, Conty [sloi]. Bitmap);Polygon [sloi]. DrawFill (Conty [sloi]. Bitmap, SetAlpha (clBlue32, proz)); Polygon[sloi]. DrawEdge (Conty [sloi]. Bitmap, SetAlpha (clBlack32, 255)); Conty [sloi].Bitmap. EndUpdate; Conty [sloi]. Bitmap. Changed; ImgView321. Refresh; end; procedureTFormMain. SaveContNClick (Sender: TObject); var: integer; bm: TBitmap32; fFileHandle:TextFile; begin bm: = TBitmap32. Create (); bm. SetSize (ImgView321. Bitmap. Width,ImgView321. Bitmap. Height); bm. FillRect (0,0,bm. Width,bm. Height,$0f000000);for i: = 1 to id do conty [i]. bitmap. DrawTo (bm); if SavePictureDialog1. Executethen bm. SaveToFile (SavePictureDialog1. FileName); memo1. lines. Add (razredit.text); memo1. lines. Add ('0.0'); memo1. lines. Add ('0.0'); memo1. lines. Add('-razredit. text); memo1. lines. Add (UpLeftX. text); memo1. lines. Add (UpLeftY.text); memo1. Lines. SaveToFile ('c: \test. jgw'); memo1. Clear; end; procedureTFormMain. NewPolButtonClick (Sender: TObject); varswap: integer; beginscrollfill:=true; if ( (points>=3) or (id=0)) and (radiovidcon. ItemIndex=0) then Begininc (id); conty [id]: =TBitmapLayer. Create (ImgView321. Layers); conty [id]. Bitmap.SetSizeFrom (ImgView321. Bitmap); conty [id]. Bitmap. DrawMode: = dmBlend; conty[id]. Location: = FloatRect (0, 0, conty [id]. Bitmap. Width, conty [id]. Bitmap.Height); conty [id]. Scaled: =True; {conty [id]. Bitmap. MoveTo (0,0); conty [id].Bitmap. pencolor: =Color32 (clBlack);
conty [id]. bitmap.LineToS (200, 200); }Polygon [id]: = TPolygon32. Create; Polygon [id]. NewLine;points: =0; Grid. Cells [0, id]: = (IntToStr (id)); Grid. Cells [1, id]: ='set '+ IntToStr (3-points) + ' dots'; Grid. Cells [2, id]: ='set ' + IntToStr (3-points)+ ' dots'; prozra [id]: =ProzrCont. Position; end; end;
procedure TFormMain.FormCreate (Sender: TObject); beginStopperSlayer: =true;
GetDir (0,CurDir);id: =0; points: =0; mm: =true; DelPolButton. enabled: =false;
rowg: =0; colg:=0; scrollfill: =true; Grid. Cols [0]. Add ('Контур'); Grid. Cols [1]. Add ('Периметр');Grid. Cols [2]. Add ('Площадь'); end; procedure TFormMain. GridKeyDown (Sender:TObject; var Key: Word;
Shift: TShiftState);
var i: integer;begin if (Key = VK_DELETE) then DelContour (rowg);
if (Key = VK_INSERT)and (Grid. Cells [colg,rowg] '') then begin draw (Rowg,1); Delay (50); draw(Rowg, 200); Delay (50); draw (Rowg,Prozra [rowg]); Delay (50); end; end;
procedure TFormMain.GridMouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState;X, Y: Integer); beginmm: =true; end; procedure TFormMain. GridMouseUp (Sender: TObject;Button: TMouseButton;
Shift: TShiftState;X, Y: Integer);
beginmm: =false;end; procedure TFormMain. GridSelectCell (Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean); begin scrollfill: =false; colg: =ACol; rowg: =ARow;
DelPolButton. Enabled:=True;
if Grid. Cells[Colg,Rowg] '' then begin while mm=True do begin draw (Rowg,1); Delay (50);draw (Rowg, 200); Delay (50); draw (Rowg,Prozra [rowg]); Delay (50); end; end; end;
procedure TFormMain.Left; var i,j: integer; beginrepeat for j: = 0 to mgview321. Bitmap. Height do beginfor i: = 0 to imgview321. Bitmap. Width-1 do begin if (dot [id, i,j] =0) and (dot[id, i+1,j] =1) then begin if ColorSrav (ImgView321. Bitmap. PixelS [i,j]) =Truethen begin dot [id, i,j]: =1; if i=0 then dot [id, i,j]: =2; end else dot [id,i,j]: =2; end; end; end;
until StopLeft=False;end; procedure TFormMain. Right; var i,j: integer;
beginrepeat forj: = 1 to imgview321. Bitmap. Height do begin for i: = imgview321. Bitmap. Widthdownto 1 do begin if (dot [id, i,j] =0) and (dot [id, i-1,j] =1) then begin if lorSrav(ImgView321. Bitmap. PixelS [i,j]) =True then begin dot [id, i,j]: =1; if i=imgview321.Bitmap. Width then dot [id, i,j]: =2; end else dot [id, i,j]: =2; end; end; end;until StopRight=False; end; procedure TFormMain. Up; var i,j: integer; beginrepeatfor i: = 0 to imgview321. Bitmap. Width do begin for j: = 0 to imgview321. Bitmap.Height do begin if (dot [id, i,j] =0) and (dot [id, i,j+1] =1) then begin if ColorSrav(ImgView321. Bitmap. PixelS [i,j]) =True then begin dot [id, i,j]: =1; if j=0 thendot [id, i,j]: =2; end else dot [id, i,j]: =2; end; end; end; until StopUp=False;end; procedure TFormMain. Down; var i,j: integer; beginrepeat for i: = 1 to imgview321.Bitmap. Width do begin for j: = imgview321. Bitmap. Height downto 1 do begin if(dot [id, i,j] =0) and (dot [id, i,j-1] =1) then begin if ColorSrav (ImgView321.Bitmap. PixelS [i,j]) =True then begin dot [id, i,j]: =1; if j=imgview321. Bitmap.Height then dot [id, i,j]: =2; end else dot [id, i,j]: =2; end; end; end; untilStopDown=False; end; function TFormMain. ColorSrav (colFun: TColor32): boolean;beginif (abs (TColor32Entry (ColFun). R-TColor32Entry (Col). R) =1) and (p. X=1) and p. Y
conty [id]: =TBitmapLayer.Create (ImgView321. Layers); conty [id]. Bitmap. SetSizeFrom (ImgView321. Bitmap);conty [id]. Bitmap. DrawMode: = dmBlend; conty [id]. Location: = FloatRect (0, 0,conty [id]. Bitmap. Width, onty [id]. Bitmap. Height); conty [id]. Scaled: =True;dot [id,x_g,y_g]: =1 repeat Up; Right; Down; Left; until (StopUp=False) and (StopLeft=False)and (StopRight=False) and StopDown=False); t: =0; for i: = 0 to imgview321. Bitmap.Width do begin for j: = 0 to imgview321. Bitmap. Height do begin if dot [id, i,j]=1 then inc (t); end; end; if t>3 then begin Grid. Cells [0, id]: = (IntToStr(id)); Grid. Cells [2, id]: = (IntToStr (t*strtoint (RazrEdit. Text))); l: =2*sqrt(Pi*t); Grid. Cells [1, id]: = (IntToStr (round (l))); end else begin showmessage('В области менее трех точек. '); conty [id]. Free; dot [id]: =nil; id: =id-1; end;OtrisovkaAuto; end else showmessage ('Попали в (за) край снимка! '); end; if Button = mbRight then// условие на левый клик Begin conty [id]. Free; dot [id]: =nil; Grid. Rows [id].Clear (); if id>=1 then id: =id-1 else if id=0 then id: =0; end; end; if RadioVidCon.ItemIndex=0 then Begin if (id>0) then Begin if (p. X0) and (p. Y>0) and( (xt [points] p. X) and (yt [points] p. Y)) then Begin if Button= mbLeft then Begin Polygon [id]. Add (FixedPoint (p. X, p. Y)); inc (points); TochekPanel.Caption: ='Вершин: '+ IntToStr (points); xt [points]: =p. X; yt [points]: =p. Y;if points >=3 then begin perimetr; area; Grid. Cells [1, id]: =FloatToStr (dlina[id] *StrToFloat (RazrEdit. Text));
rid. Cells [2,id]: =FloatToStr (square [id] *StrToFloat (RazrEdit. Text) *StrToFloat (RazrEdit.Text)); end else DelContour (id); End; Build; Draw (id,ProzrCont. Position); end;end; end; procedure TFormMain. ImgView321MouseMove (Sender: TObject; Shift: TShiftState;X, Y: Integer; Layer: TCustomLayer); var col: TColor32; begin p. x: = X; p. y: =Y; p: =ImgView321. ControlToBitmap (p); col: = ImgView321. Bitmap. PixelS [p. X,p.Y]; if (p. X
and (p. X>=0)and (p. Y>=0) then begin XYPanel. Caption: =' [x,y] ='+' ['+IntToStr (p. X) +','+IntToStr(p. Y) +'] ';
WxWyPanel. Caption:= ' [Wx,Wy] ='+' ['+IntToStr (StrToInt (RazrEdit. Text) *p. X+StrToInt (UpLeftX.text)) +
','+IntToStr (StrToInt(RazrEdit. Text) *p. Y+StrToInt (UpLeftY. text)) +'] ';
RGBPanel. Caption:=' [R,G,B] ='+ ' ['+ IntToStr (TColor32Entry (Col). R) +','+
IntToStr (TColor32Entry(Col). G) +','+IntToStr (TColor32Entry (Col). B) + '] ';
if id >=1 thenend else begin XYPanel. Caption: =' [x,y] = [?,?] '; WXWYPanel. Caption: =' [Wx,Wy]= [?,?] '; RGBPanel. Caption: =' [R,G,B] = [?,?,?] '; end; end; procedure TFormMain.OpenContNClick (Sender: TObject); beginwith OpenPictureDialog1 do if Execute thenbegin conty [100]: =TBitmapLayer. Create (ImgView321. Layers); conty [100]. Bitmap.LoadFromFile (FileName); if (conty [100]. Bitmap. Width=imgview321. Bitmap. Width)and (conty [100]. Bitmap. Height=imgview321. Bitmap. Height) then begin conty [100].Bitmap. DrawMode: = dmBlend; conty [100]. Location: = FloatRect (0, 0, conty [100].Bitmap. Width, onty [100]. Bitmap. Height); conty [100]. Scaled: =True; end elsebegin conty [100]. free; showmessage ('Размеры изображений контуров и снимкане совпадают. '); end; end; end; procedure TFormMain. OpenNClick(Sender: TObject); beginOpenPictureDialog1. InitialDir: =CurDir; with OpenPictureDialog1do if Execute then begin ImgView321. Bitmap. LoadFromFile (FileName); end; NewPolButton.Enabled: =True; DelPolButton. Enabled: =True; end; procedure TFormMain. Button1Click(Sender: TObject); vargog: TColor32; beginColorDialog1. Execute; gog: =ColorDialog1.Color; Shape1. Brush. Color: = gog; end; procedure TFormMain. CloseNClick (Sender:TObject); vari: integer; begin for i: = 1 to id do begin Grid. Rows [i]. Clear(); Conty [i]. Free; // нет слоя Polygon [i]. Clear; // нет полигона end; ImgView321.Bitmap. Clear (clSilver); id: =0; points: =0; NewPolButton. Enabled: =False; DelPolButton.Enabled: =False; end; procedure TFormMain. ScaleBarChange (Sender: TObject); varNewScale:real; begin NewScale: = ScaleBar. Position/100; ScaleBar. Repaint; ImgView321. Scale:= NewScale; ScaleCombo. Text: = IntToStr (Round (NewScale*100)) +'%'; end; procedureTFormMain. ScaleComboChange (Sender: TObject); var S: string; I: Integer; beginS: = ScaleCombo. Text; S: = StringReplace (S, '%', '', [rfReplaceAll]); S: = StringReplace(S, ' ', '', [rfReplaceAll]); if S = '' then Exit; I: = StrToIntDef (S, — 1); if(I 1000) then I: = Round (ImgView321. Scale * 100) else ImgView321.Scale: = I / 100; ScaleCombo. Text: = IntToStr (I) + '%'; ScaleCombo. SelStart:= Length (ScaleCombo. Text) — 1; ScaleBar. Position: = I; end; procedure TFormMain.ProzrContChange (Sender: TObject); begin if (scrollfill=true) and (id0)then begin Draw (id,ProzrCont. Position); prozra [id]: =ProzrCont. Position; end;if scrollfill=false and (Grid. Cells [Colg,Rowg] '') then begin Draw (rowg,ProzrCont.Position); prozra [rowg]: =ProzrCont. Position; end; end; procedure TFormMain. DelContour(nomer: integer); var i: integer; begin if (Grid. Cells [0,nomer] '') and(nomerid) then begin for i: =nomer to id-1 do begin Grid. Rows [i]: =Grid.Rows [i+1]; Polygon [i]: =Polygon [i+1]; prozra [i]: =prozra [i+1]; end; conty[id]. Free; Grid. Rows [id]. Clear (); for i: =nomer to id-1 do begin draw (i,ProzrCont.Position); Grid. Cells [0, i]: =IntToStr (i); end; id: =id-1; end else begin ifnomer=id then Polygon [id]. Clear; draw (id,ProzrCont. Position); points: =0; Grid.Cells [1, id]: ='set ' + IntToStr (3-points) + ' dots'; Grid. Cells [2, id]: ='set' + IntToStr (3-points) + ' dots'; end; end; end.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.