Предварительная обработка исходных данных для построения ЦМР (1027381), страница 2
Текст из файла (страница 2)
Рис. 5 иллюстрирует процесс полученияданной линии.сплайнов можно построить гладкую интерполирующую кривую, которая будет иметь минимальное количество точек перегиба и целиком располагаться вкоридоре [1, 2].В большинстве практических случаев достаточно,чтобы интерполирующая кривая имела непрерывныйнаклон (непрерывный единичный вектор касательной), но желательно иметь возможность по одномунабору узлов строить линии различной формы. Формакривой зависит, прежде всего, от направления векторов касательных в узловых точках. Поэтому можнопредложить следующий метод расчета кривой: вычислять вначале только направления касательных векторов во всех исходных узлах для получения линиинужной формы, а затем «вписывать» линию в коридорпутем изменения модулей касательных векторов накаждом отдельном участке кривой.В вычислительном отношении наиболее простойспособ интерполяции – это замена отрезков ломанойминимальной длины кубическими кривыми Безье [3]:P (t ) = ∑ i = 0 Pi J 3,i (t ),3J 3,i (t ) = C3i t i (1 − t )3−iгде0 ≤ t ≤ 1,– кубические полиномыБернштейна, а Pi – вершины характеристическогомногоугольника.Пусть M j , M j +1 – две соседние вершины минимальной ломаной.
Кривую Безье на j-м отрезке определят четыре вершины многоугольника, причемP0 = M j , P3 = M j +1 , а дополнительные точки P1 и P2задают наклоны в M j и M j +1 . Если на ( j − 1 )-м участке кривую Безье определяют точки Q0 , Q1 , Q2 иQ3 , то, естественно, Q3 = P0 = M j , а для обеспечениянепрерывности наклона в M j точки Q2 , M j и P1должны лежать на одной прямой.Наклоны кривой Безье в каждой вершине минимальной ломаной можно вычислить, используя простые методы для локальных кубических сплайнов [4].Затем на прямых, определяемых этими наклонами,необходимо так расположить точки P1 и P2 , чтобыкривая целиком попадала в участок коридора, соответствующий отрезку M j M j +1 ломаной минимальнойдлины (рис.
6).P1P1 P2P0P3MjРис. 5. Модификация коридора и перестроениеломаной минимальной длиныК сожалению, ломаная минимальной длины визуально очень далека от гладкой, поэтому не может использоваться непосредственно в качестве расчетнойструктурной линии. Однако по ее узловым точкам спомощью локальных параметрических кубическихMj+1аP3Mj+1P0MjбP2Рис. 6. Расчет отрезка кривой Безье в коридоре:а – на выпуклом участке, б – на участке перегибаЧтобы избежать сложных проверок пересеченияграниц коридора и кривой, последнюю следует заменить интерполяционной ломаной с небольшим количеством узлов.283ПОСТРОЕНИЕ ВИЗУАЛЬНО ГЛАДКОЙ КОРИДОРНОЙ КРИВОЙРасчетные структурные линии нужны для последующего построения цифровой модели рельефа, ноиспользование гладких линий недопустимо усложнитэтот процесс, поэтому необходима дополнительнаякусочно-линейная интерполяция всех кривых.
Однакопростейший вариант интерполяции – замена каждогоотрезка кривой на ломаную с фиксированным числомзвеньев – обычно непригоден, так как при малом числе дополнительных вершин линия будет выглядетьнегладкой, а при большом – возрастет временная иемкостная сложность обработки.Для решения данной проблемы предлагается заменять кривую с n узлами ломаной с предельным числом вершин N > n , которая будет визуально настолько близка к гладкой линии, насколько это позволяетзначение N.Будем считать, что ломаная является визуальногладкой, если любые три ее последовательные вершины кажутся лежащими на одной прямой. Очевидно,что это свойство определяется масштабом изображения. Для любого масштаба 1: M и толщины изображаемых линий Δl (в единицах задания координат точек) можно вычислить ΔL = Δl ⋅ M – реальное расстояние, соответствующее толщине линии на изображении.
Если A, B, C – последовательно расположенные вершины ломаной и расстояние от B до отрезкаAC меньше ΔL , то на рисунке с масштабом 1: Mданные точки будут визуально располагаться на одной прямой.В качестве начального приближения визуальногладкой линии выберем ломаную, построенную потем же n узлам, что и заданная кривая. В эту линиюнеобходимо включить все точки перегиба исходнойкривой. В результате каждому отрезку ломаной будетсоответствовать выпуклый участок кривой, поэтомупри последующем добавлении новых узлов ломанаябудет постоянно приближаться к кривой.Назовем отклонением вершины Pi расстояние отнее до отрезка Pi −1 Pi +1 , соединяющего две соседние сPi точки ломаной (отклонение начальной и конечнойвершин незамкнутой линии равно нулю).
Пусть Pi − 2 ,Pi −1 , Pi , Pi +1 и Pi + 2 – последовательно выбранныевершины ломаной, которая интерполирует заданнуюкривую. Если отклонение Pi превышает ΔL , то ломаную необходимо перестроить, добавив в нее либодополнительную вершину D1 на отрезке Pi −1 Pi , либоD2 на Pi Pi +1 . В качестве D1 следует выбрать наиболее удаленную от хорды Pi −1 Pi точку на соответствующем отрезке кривой, D2 выбирается аналогичнона Pi Pi +1 (рис. 7).Включение D1 приводит к изменению отклоненийв точках Pi −1 и Pi , а также к необходимости вычис284ления отклонения D1 от Pi −1 Pi .
Аналогично, три значения отклонений нужно вычислить и при добавлении точки D2 . Включение новой точки должно максимально приближать ломаную к кривой, поэтомувыбор D1 или D2 будет определяться минимумомзначения максимального из трех отклонений.D1Pi–1PiD2Pi+1Pi–2Pi+3Pi+2Рис. 7. Включение новых точек при построениивизуально гладкой ломанойВ последующем описании номера точек всегда будут определять не порядок их следования в ломаной,а порядок добавления вершин к ломаной. Начальные nточек – это вершины сглаживаемой ломаной минимальной длины.
Добавляемые вершины будут иметьномера n + 1,..., N .Новую точку необходимо включать всегда в окрестности вершины с максимальным отклонением. Дляупрощения выбора такой вершины предлагается позначениям отклонений точек строить пирамиду (дерево сортировки), как в алгоритме пирамидальной сортировки [5]. Пирамида для n значений представляетиз себя массив длины n, в котором для любого элемента ai при i < n / 2 выполняется: ai ≥ a2i ,ai ≥ a2i +1 . Таким образом, элемент a1 является максимальным. Для построения такого массива и добавления новых элементов используется операция просеивания элемента в пирамиде.При построении визуально гладкой ломаной линии потребуются следующие структуры данных:Пирамида, каждый элемент которой содержит отклонение (используемое при просеивании) и номерсоответствующей точки. Пирамида включает от n(начальная) до N (максимальная) элементов.Текущая ломаная.
Для простоты модификациипредставляется двумя массивами, в которых для каждой точки хранятся номера предыдущей и следующейвершин ломаной.Массив, определяющий положение вершин текущей ломаной в пирамиде. Модифицируется при просеивании элементов.Массив вершин характеристических многоугольников Безье для всех n − 1 отрезков гладкой кривой.Массивы, определяющие положение вершин текущей ломаной на кривой (номер отрезка кривой,значение параметра).Эти структуры используются в следующем алгоритме.Алгоритм построения визуально гладкойломанойШаг 1. Задание или определение максимальногоотклонения ΔL и максимального числа вершин N.Шаг 2.
Вычисление вершин характеристическихмногоугольников Безье для всех отрезков гладкойкривой в коридоре.Шаг 3. Построение текущей (начальной) ломанойс n вершинами по узлам кривой в коридоре.Шаг 4. Включение в текущую ломаную точек перегиба кривой.Шаг 5. Расчет начальных отклонений и построение пирамиды.Шаг 6. В цикле пока отклонение 1-го элемента впирамиде больше ΔL и число вершин текущей ломаной меньше N необходимо:выбрать вершину Pi из 1-го элемента пирамиды;определить для Pi предыдущую Pj и последую-щую Pk вершины в текущей ломаной;найти на отрезках кривых Pj Pi и Pi Pk точки D1 иD2, наиболее удаленные от хорд;рассчитать новые отклонения для точек Pj , D1 , Pi(2 значения, соответствующие включению либо D1,либо D2 ), D2 и Pk ;выбрать в качестве новой вершины точку D1 илиD2 по критерию минимума максимального отклонения;просеять в пирамиде точку Pi сверху вниз;добавить к текущей ломаной вершину D1 (D2) ипросеять ее снизу вверх;просеять точку Pj ( Pk ) вниз при уменьшении значения ее отклонения или вверх при увеличении.Конец алгоритма.Трудоемкость шагов 2–5 составляет O(n) , а каждое просеивание на шаге 6 требует не более O (log N )операций.
Таким образом, общая трудоемкость алгоритма не превышает O( N log N ) . Вычислительныйэксперимент, проведенный на реальных данных, показал, что если n > 50 , то для получения визуальногладкой ломаной достаточно задать N ≈ 2n . На рис. 8приводятся наборы исходных и визуально гладкихрасчетных изолиний одного участка местности.Рис.
8. Исходные и визуально гладкие изолинииучастка рельефаЗАКЛЮЧЕНИЕПредложенные алгоритмы выделения коридоровна треугольной сетке и построения визуально гладкихкоридорных линий позволяют устранять основныенедостатки структурных линий рельефа, получаемыхна основе методов дистанционного зондирования иливекторизации картографических материалов. Предварительная обработка входных данных гарантируетсохранение их топологической корректности и является необходимым этапом при построении кондиционной цифровой модели рельефа.ЛИТЕРАТУРА1.
Костюк Ю.Л., Фукс А.Л. Построение и аппроксимация изолиний однозначной поверхности, заданной набором исходных точек // Геоинформатика: Теория и практика. Вып. 1. Томск: Изд-во Том. ун-та, 1998. С. 119–126.2. Костюк Ю.Л., Фукс А.Л. Гладкая аппроксимация изолиний однозначной поверхности, заданной нерегулярным набором точек // Трудымежд. научно-практ. конф. «Геоинформатика-2000». Томск: Изд-во Том. ун-та, 2000.
С. 37–41.3. Роджерс Д., Адамс Дж. Математические основы машинной графики: Пер. с англ. М.: Машиностроение, 1980. 240 с.4. Костюк Ю.Л. Применение сплайнов для изображения линий в машинной графике // Автоматизация эксперимента и машинная графика.Томск: Изд-во Том. ун-та, 1977. С. 116–130.5. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. М.: Мир, 1989. 360 с.6. Костюк Ю.Л., Фукс А.Л.
Построение цифровой модели рельефа местности на основе структурных линий и высотных отметок // Вестник ТГУ. 2003. № 280. С. 286–289.Статья представлена кафедрой теоретических основ информатики факультета информатики Томского государственного университета, поступила в научную редакцию 15 мая 2003 г.285.