10.21. Настройки трансформации растров

Поскольку растровые данные представляют собой набор значений, размещённых в ячейках регулярной сетки, эта сетка может пересчитываться при отрисовке растра в разных масштабах, изменении системы координат и других операций с растровым слоем.

Два основных параметра трансформации это Тип трансформации и Метод передискретизации.

10.21.1. Тип трансформации

Он отвечает за выбор метода перепроецирования растрового изображения. Важно четко понимать, насколько сильно отличаются проекции привязываемой карты и системы координат, к которой вы карту привязываете. Например, большинство мелкомасштабных карт Евразии печатается в конических проекциях, а стандартной СК в ГИС является WGS 84 (EPSG:4326) в прямоугольной проекции. В таком случае без существенных преобразований проекции (из конической в прямоугольную) не обойтись, поэтому надо использовать те варианты трансформаций, которые могут сильно деформировать исходное изображение (полиномиальные или сплайновые алгоритмы).

В QGIS можно использовать следующие типы трансформации:

Без деформации (2 точки)

  • Линейная - подходит для привязки карт в их исходную проекцию

  • Гельмерта - для привязки планов и картосхем в равнопромежуточной проекции, повернутых относительно севера

С линейной деформацией (4 точки)

  • Полиноминальная трансформация 1 степени - привязка крупномасштабных карт и планов на карту Google или Яндекс

  • Проективная трансформация - для перехода между проекциями (коническая ‣ цилиндрическая), например, подходит для привязки отфотографированных карт

С нелинейной деформацией

  • Полиноминальная трансформация 2 степени (6 точек + контрольная) - наиболее универсальный вариант для привязок карт в разных проекциях

  • Полиноминальная трансформация 3 степени (9 точек + контрольная) - подходит для привязки мелкомасштабных карт в поликонических проекциях на карту в прямоугольной проекции

  • Тонкостенный сплайн - на крайний случай, для привязки мелкомасштабных карт в сложных проекциях, сильно деформированных карт, снимков

Подробнее об этих трансформациях:

Линейная - самый простой вариант трансформации, при котором исходное изображение просто смещается на нужное место. Помимо этого оно может быть увеличено или уменьшено. Углы и пропорции при этом сохраняются, линии сохраняют своё направление.

../../_images/transform_linear.png

Гельмерта - алгоритм аналогичный линейному, однако помимо смещения и масштабирования он может поворачивать карту на определенный угол.

../../_images/transform_helmert.png

Полиномиальная трансформация 1 степени - масштабирует, подворачивает растр, а также может неравномерно сдвигать изображение по одной из осей, при этом искажаются углы, но сохраняется параллельность линий. Наиболее оптимальна для привязки крупномасштабных карт и планов на карту Google или Яндекс через опорные точки.

../../_images/transform_polynom_1.png

Проективная трансформация - похожа на полиномиальную (1 степени), однако параллельность линий не сохраняется. Подходит для перехода из одной простой проекции в другую, например, из простой конической в простую цилиндрическую. Применяется для привязки отфотографированных (не сканированных!) карт, или снимков ДЗ, полученных при перспективной съемке (например снимки программы CORONA).

../../_images/transform_projective.png

Полиномиальная трансформация 2 степени - нелинейно деформирует исходное изображение по одной из осей. Является самым оптимальным вариантом трансформации любых карт с т.з. минимизации искажений при максимальной точности привязки.

../../_images/transform_polynom_2.png

Полиномиальная трансформация 3 степени - нелинейные деформации применяются к обеим осям карты. Рекомендуется использовать в том случае, когда полином 2 степени не дает требуемой точности (например при привязке трехверстовых топографических карт Российской Империи).

../../_images/transform_polynom_3.png

Тонкостенный сплайн - метод, основанный на локальном смещении пространства карты вокруг точки привязки. Обладает следующими особенностями:

  1. степень искажений нелинейно увеличивается при удалении от точки привязки,

  2. характер искажений сильно зависит от плотности и распределения точек привязки,

  3. математическая оценка точности для этого алгоритма не проводится.

Данный тип трансформации рекомендуется использовать только в том случае, если другие методы не дают приемлемого результата из-за сильных искажений (мятая карта), или источник изначально не имеет географической привязки (снимок на фотокамеру с самолета).

../../_images/transform_thinplatespline.png

10.21.2. Алгоритмы передискретизации

Масштабирование и трансформация растра требуют уплотнения или разряжения пикселей.

../../_images/resampling.png

При этом создаётся новая матрица пикселей (растр), в которую записываются значения исходной матрицы по одному из следующих алгоритмов:

Ближайший сосед - самый быстрый алгоритм. Значение берется из ближайшего пикселя с известным значением.

  • Использует только те значения, которые встречаются в исходном растре.

  • Изображение не сглаживается, возможно появление артефактов в виде ступенек или ореолов.

../../_images/resampling_nearest_ru.png

Линейная передискретизация - использует 4 (2х2) ближайших пикселя исходного растра и рассчитывает значение итоговой ячейки с помощью линейной функции интерполяции.

  • Итоговые значения могут отличаться от исходного набора.

  • Изображение слегка сглаживается.

../../_images/resampling_linear_ru.png

Кубическая и кубическая с b-сплайном - использует 16 (4х4) ближайших пикселей исходного растра и рассчитывает значение итоговой ячейки с помощью кубической/сплайновой функции.

  • Итоговые значения могут отличаться от исходного набора.

  • Изображение сильно сглаживается.

../../_images/resampling_cubic_ru.png

Ланцоша - использует 36 (6х6) ближайших пикселей исходного растра и рассчитывает значение итоговой ячейки с помощью фильтра Ланцоша.

  • Итоговые значения могут отличаться от исходного набора.

  • Изображение слегка сглаживается при сохранении четкости на контрастных участках, возможно появление артефактов в виде ступенек или ореолов.

../../_images/resampling_lanczos_ru.png

Как выбрать алогритм передискретизации?

Метод передискретизации имеет смысл выбирать в зависимости от типа растра:

  • Индексированный растр - подойдёт только ближайший сосед, иначе при трансформации получатся значения, не совпадающие ни с одним из индексов.

  • Цветная карта/снимок (в каждом пикселе - значение цвета, например, в RGB) - можно использовать все алгоритмы, но лучше всего подходит линейный

  • Одноканальный растр (например, цифровая модель рельефа) - можно использовать любой алгоритм кроме ближайшего соседа, если нужно сохранить плавность переходов. Ближайший сосед можно выбрать, если критично важно сохранить исходные значения, и появляющаяся ступенчатость не принципиальна.

  • Многоканальный растр (пиксели содержат числовые значения определённого спектра, например, инфракрасного) - лучше всего подходит линейная передескритизация, но можно использовать и другие способы.