Как склеить карту из фотографий

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

RasterStitch — это программа для соединения, иными словами, сшивания нескольких изображений.
Самое простое, и, наверное, самое распространённое применение программы — это соединение двух или нескольких фотографий в одну. В этой статье приводится руководство по работе в RasterStitch, а бесплатно скачать саму программу Вы можете по ссылкам внизу статьи.

Примечание. Соединить фотографии в режиме онлайн Вы можете с помощью онлайн-редактора, как это сделать, рассказывается в данном материале. Также Вы можете склеить несколько фотографий в одно изображение при помощи программы Adobe Photoshop.

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

интерфейс

Точность соединения отдельных изображений достигается методом установки двух пар общих точек на склеиваемых изображениях, этот метод интуитивно понятен даже неспециалисту, т.к. точки стыковки двух фрагментов показаны в пиксельной сетке в двух окнах рядом.
RasterStitch — незаменимая вещь при стыковке отдельных листов топографических карт в единое целое в домашних условиях.
Соединять фото, сложные изображения и фрагменты изображений в этой программе намного проще и быстрее, чем в таких мощных редакторах, как Corel или Photoshop.

Порядок работы:

При запуске программы откроется стартовое окно, показанное на скриншоте вверху. Загрузите превое изображение, кликнув по кнопке Open 1’st image, затем второе, кликнув по Open 2’st image. Далее надо выбрать, вертикально или горизонтально будут располагаться склеенные изображения в плоскости, а также их размещение относительно друг друга.

Панель инструментов

Вертикально располагаем изображения с помощью кнопки 1 (Split Vertical), горизонтально — кнопкой 2 (Split Horisontal).
Поменять местами рисунки относительно друг друга можно кнопкой 3 (Swap).
Кнопки 4 и 5 позволяют производить операции редактирования исходных фото, 4 (Rotate Left и Rotate Right) — поворот на 90 градусов, 5 (Crop Tool) — обрезка. После клика по Crop Tool размеры рамки обрезки определяются мышкой, применяется обрезка двойным щелчком мыши.
Кнопки 6 — масштабирование отображения изображения в окне программы.
Кнопки 7 — первая (Fit) масштабирует картинку по размеру окна, вторая (Actual Size) отображает картинку в истинном размере.
Кнопка 8 позволяет перемещать картинку в окне нажатой кнопкой мыши.

Далее идут кнопки операций объединения фото.
Общие точки стыка можно выбрать автоматически, нажав на кнопку 11 (Set Points Automatical). Это годится для фрагментов одного изображения.
Для соединения разных фотографий точки стыка следует проставить вручную, кнопкой 9 ставим первую точку на фото и вторую точку — кнопкой 10. затем кликаем по второму фото, и ставим на нём точки.
Точки проставлены, прекрасно, клик по кнопке 12 (Start Stitching).
Готовая сборка из двух фото открывается в новом окне. В этом же окне можно сохранить сборку, кликнув по значку Save 1 в левом верхнем углу, либо продолжить склейку изображений. для этого загрузить новую картинку, кликнув по кнопке Open 2’st image, расположенной в середине правого окна.

Некоторые настройки:

Для соединения фотографий, если вы не хотите размытия и сглаживания их краёв в местах стыка, т.е. чтобы границы фото оставались резкими, надо снять все галки в окне настроек:

настройки

Параметры в окне управляют размытием-смешиванием краёв (Blending), сглаживанием резких переходов (Smoothing), и заполнением перекрываемых участков (Fill corners).

Если необходимо (например, из склеенных изображений не получается прямоугольника с ровными краями и фон будет проглядывать), то Вы можете выбрать цвет фона под изображениями, вкладка View —> Setting, выбор производится в параметре Select background color.

Иногда бывает нужна большая Яндекс— или Гугл-карта. Например, для распечатки на плакате или для создания какого-нибудь приложения.

Если у карты есть API или код вставки, используйте быстрый способ (полностью автоматический, без фотошопа). Если API нет, или вы не понимаете, о чём идёт речь, то читайте дальше.

Сейчас я расскажу, как можно быстро собрать её из кусочков (из нескольких скриншотов). Этот способ подходит не только для карт, но и для любых больших изображений, которые нельзя скачать целиком.

Склеиваем большую карту из нескольких скриншотов

Склеиваем большую карту из нескольких скриншотов

Делаем скриншоты

Открываем карту во весь экран. Например, открываем Яндекс.Карты, своравичаем все панельки, затем жмём F11, чтобы браузер переключился в полноэкранный режим. Задача — получить максимальную полезную площадь карты, которую можно захватить за один раз.

Чем больше монитор (разрешение экрана), тем меньше будет действий.

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

Перехлёст последовательных слоёв

Перехлёст последовательных слоёв

Чтобы ускорить данный процесс, используйте горячие клавиши. PrtScr (принтскрин), затем Alt+Tab (переключаемся на фотошоп), Ctrl+V (вставляем текущий скриншот), Alt+Tab (возвращаемся в Карты), двигаем мышкой карту — и повторяем цикл.

Подготовка слоёв

6 слоёв — 6 частей будущей карты

6 слоёв — 6 частей будущей карты

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

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

Все слои однотипные, поэтому кадрирование удаляет ненужные элементы сразу со всех слоёв.

Автоматическое выравнивание слоёв

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

Настройка автовыравнивания

Настройка автовыравнивания

Вот, что получилось у меня:

Склеенные слои образуют большую карту

Склеенные слои образуют большую карту

Как видно, результат вышел не очень 😃

Чтобы получить нормальную карту, сделаем ещё несколько кадров (захватим угловые области большой карты).

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



Настройка Photomerge


Совмещение с помощью прозрачности

Технология склейки следующая:


Далее по необходимости можно объединить слои, выровнять Гистограмму


Яндекс.Деньги

В вашем браузере включен плагин блокировки рекламы: Существование нашего сайт возможно благодаря показу рекламы. Пожалуйста поддержите нас, отключив блокировку рекламы на нашем сайте.

Внимание: Стол заказов карт в этой теме. Редкие карты которых нет в интернете БЕСПЛАТНО
Ищите нужную вам карту области, края, губернии? Тогда просто выберете нужный район и качайте ее бесплатно. Для поиска карт перейдите в эту тему

Сшивка фрагментов карты в GlobalMapper

Расскажу, как соединить два куска карты в целое правильно.

Правильно, когда куски соединяют не по пикселям, на глаз , а с учетом свойств карты.
Таких как датум и проекция. Мы будем соединять куски привязывая их не друг к другу, а к сетке координат.
Смысл действий в выравнивании растра каждого куска карты под его родную проекцию и датум. Когда куски полностью
выровнены и привязаны, они автоматически соединяются.

- OziExplorer
- Photoshop
- MMAssist
- GlobalMapper не ниже версии 9.01
- Excel
- Word

Итак, у меня есть два куска карты с именами P-36-080-CD_1.jpg, P-36-080-CD_2.jpg.
Они в низком разрешении, бледные, нерезкие по краям.

Открываем оба в Photoshop.

Первое, на что надо обратить внимание - формат файлов GIF, это значит цвета индексированы (их точно
не больше 256). В процессе работы карты будут крутиться, растягиваться, сжиматься. При этом, из-за
ограниченности количества цветов, прямые линии станут рваными при повороте, буквы потеряют приятную глазу
округлость. Это произойдет из-за нехватки цветов для сглаживания краев повернутых линий.

Поэтому сразу переводим наши куски в многоцвет (пространство RGB).

Низкое разрешение также может плохо повлиять на конечный результат. Если бы картинки просто
соединялись, низкое разрешение можно было стерпеть, но при поворотах крупнозернистое изображение может совсем
исказиться. Увеличиваю разрешение в два раза.

Увеличиваю контраст. Контраст должен быть разумным. При сильном контрасте могут исчезнуть слабые
заливки. Обычно первым исчезает цвет кусты-вырубки .

Теперь надо подумать, как куски будут соединяться. Куски сканированы с перехлестом, значит одно
наложится на другое. А края у них размыты. Посмотрим, какой кусок лучше.

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

Показано начало выделения. Тянем за верхний левый край пунктира.

Запомнили, кусок №1 будем накладывать на кусок №2

Сохраняем изображения в TIF.

Важно, обратите внимание: повышение разрешения и увеличение контраста, необязательные операции. Мало того,
я впервые в своей практике столкнулся с необходимостью искусственно повысить разрешение. А вот сохранение в
многоцветный TIF необходимо практически всегда.

Создадим файлы привязки для OziExplorer, используя программу MMAssist. Эти привязки –
предварительные. От них не требуется высокая точность. И в принципе их можно было сделать в GlobalMapper.
Но в MMAssis быстрее и будут исключены ошибки от ручного ввода параметров карты и координат. Для упрощения
кладем MMAssis.exe в папку с нашими кусками (прога не требует инсталяции).

Теперь MMAssis.exe можно удалить, больше она не понадобится.

Обращаю внимание, мы используем привязку 9 точками, так как у нас половинки карты, а MMAssis
генерирует точки которые должны стоять так:

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

Видим что программная синяя сетка никак не совпадает с нарисованной, т.е. карта не привязана

Заходим в режим перепривязки

И не забывая, какие по номеру точки, где должны стоять, ставим 4 точки по углам нашей половинки

Не забываем снимать галочки напротив тех точек, которые не используем. В результате получаем:

Это для первой половинки. Для второй будет так:

Синие точки – отключенные.

Убеждаемся, что синяя сетка близка к нарисованной на карте.

Итак мы готовы к работе в GlobalMapper.

Открываем первый кусок карты

Другой путь: запустить GlobalMapper, далее File/Open Data. Обратите внимание, если в OZIExplorer
мы открываем файл привязки (MAP), и по нему программа находит файл имиджа, то в GlobalMapper - наоборот.

Сразу включаем километровую сетку

Заходим в меню привязки

Видим такую, непонятную картину

Сначала смотрим вниз, там наши точки привязки в виде таблицы. Пройдем по одной строке,
чтобы понять, где что:

- PixelX, PixelY координаты точки привязки в пикселях. Оси X,Y расположены, как учили в школе.
Внимание это координаты на картинке!
- ProjectedX, ProjectedY координаты точки привязки в метрах, или по другому в метрах по километровой сетке.
Внимание, это координаты по земле, т.е. геокоординаты.
- Longtitude, Latitude координаты точки привязки в градусной сетке. Это тоже геокоординаты.
- EROR ошибка (сдвиг) точки привязки относительно идеального по форме растра.

Если два раза кликнуть на строке, точка привязки центрируется на экране. Ее параметры появятся
в окнах выше. В этих окнах есть возможность вручную подкорректировать параметры. Мы этого делать не будем,
информация для справки.

Полюбопытствуем, какие параметры карты у нас установлены. Жмем Select Projection

Параметры правильные. Их автоматически установила MMAssist. Без неё пришлось бы вводить в это окно
вручную.

Теперь об окнах. Слева мы видим наш имидж целиком, в среднем тот же имидж может масштабироваться.
В обоих окнах увеличение делается выделением нужной зоны (левая кнопка зажата, обводим), уменьшение только
в среднем окне, правой кнопкой. В среднем окне картинку можно двигать стрелочками, которые появляются,
когда маркер у края окна.

Внимание, термин имидж (картинка, растр) подразумевает, что у него есть только пиксельные
координаты!
В правом окне находится опорное изображение. Т.к. мы загрузили один имидж, то видим вроде
то же что в среднем окне. Но в правом окне изображение не в пикселях а в геокоординатах!

Создание точек привязки.
Вариант 1

Находим в среднем окне узел километровой сетки, тыкаем точно середину, в верхних окнах
появляются пиксельные координаты точки. Находим геокоординаты этого узла по надписям на полях карты
(6534000, 6842000) и вводим их вручную в соответствующие окна. Жмем Add GCP to List . В списке
точек появилась новая точка Point 5 в ней пиксельные и геокоординаты узла сетки связаны.

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

Вариант 2

Тот же узел. В среднем окне ставим точку. В правом окне находим соответствующий узел геосетки.
Вводим геокоординаты, ставя в него точку. Чтобы получить правильные, круглые цифры, надо ткнуть
очень точно. Но дело в том, что совсем точные цифры не нужны. Учитывая разрешение карты порядка 4м/пикс,
вполне допустима ошибка того же порядка.

Жмем Add GCP to List . Узлы связаны.

Теперь работа пошла быстрей.

В идеале описанную процедуру надо повторить для каждого узла километровой сетки. Затем удалить
четыре точки установленные в первоначальной привязке, т.к. они слишком грубые (Выделить строку, Delete ).
Если надо подвинуть пиксельную координату точки, двойной клик на строку, точка центрируется на экране, щелкаем
в новое место, Update Selected GCP .

Сохраняем точки привязки

Результат привязки можно посмотреть, нажав OK . Если не хотим уходить из меню привязки,
нажимаем Apply

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

OK

Конечно, все равно работа долгая, на этой половинке карты около 250 узлов километровой сетки.
Если скан приличного качества, рекомендую поставить точки привязки по периметру куска, потом посмотреть
на результат, если осталась нестыковка в середине куска, убрать её локальными точками привязки.

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

Теперь у нас на экране оба куска карты. Относительное положение кусков выбирается так

Не забываем, карта наша повернется и испытает локальные трансформации. Если не включить
сглаживание краев линий, они будут выглядеть ступенчатыми. С другой стороны сглаживание придает изображению
некоторую ватность . Здесь каждый выбирает сам.

Я сглаживание включаю.

Выводим исправленное изображение

Сохраняем с именем готовой карты P-36-080-CD. Формат GEOTIFF тот же TIF, только с привязкой внутри.

Внимание: если редактировать, пересохранять такой файл в графических редакторах, внутренняя
привязка исчезнет.

Поэтому перво-наперво создаем привязку для OZIExplorer.

Выбираем P-36-080-CD. MAP файл

сохраняем в ту же директорию, где лежит имидж.

Внимательно смотрим на окно установки параметров импорта. Для зоны 36 должно быть так:

OK

Карта открывается. Включаем сетку:

Устанавливаем удобный масштаб и внимательно проверяем карту на ошибки. Узлы программной и
нарисованной сеток должны абсолютно совпадать.

Если все хорошо, можно закрыть GlobalMapper. При закрытии он выкинет запрос на сохранение ПРОЕКТА.

Соглашаемся, сохраняем в нашу рабочую папку. Эту папку мы некоторое время будем хранить.
Вдруг придется что-то переделать.

Остался последний шаг, устанавливаем бордеры (ограничители). Они нужны для того чтобы OZIExplorer и родные
ему программы типа Map Merge Utility for OziExplorer , понимали где находится граница изображения.
Переходя такую границу, программы будут искать и подгружать другие карты. При сшивке нескольких карт именно по этой
границе будут убраны ненужные поля. Так что рекомендую поставить бордеры максимально точно.

Жмем на кнопку с красным уголком

Двигаем уголок примерно на место

И так для всех углов

Увеличиваем масштаб до предельного

Снова в меню перепривязки. Ставим уголки точно

Все карта готова.

Повышение производительности труда

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

Я не программист и слабенько знаю математику, задачу решил в Excel. Конечно, это не очень удобно.
Буду весьма благодарен, если кто-то может решить такую задачу для четырехточечной привязки, и (или) создаст готовую
программу.

Вариант 1

Основан на том, что геосетка имеет вполне конкретный шаг. Для 500м/км шаг равен 1 км. Поэтому если
поставить точки привязки грубо, а потом округлить геокоординаты до километра, мы получим точные значений геокоординат
узлов.

Итак, мы в окне привязки GlobalMapper. Ставим одинаковый масштаб в среднем и правом окнах. Для этого
выделяем в каждом одни и те же три-четыре квадрата сетки.

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

Сохраняем точки привязки в файл. Открываем его блокнотом

Здесь видны (слева-направо) две пиксельные координаты, две геокоординаты, имя точки.

Разделители данных - запятые, десятичные разделители - точки.

Мы будем считать в Excel, причем в русской настройке. Для русского Excel надо чтобы разделителем данных был пробел,
а десятичным разделителем запятые.

Копируем текстовые данные, вставляем их в Excel

Данные вставились в один столбец

Разделяем данные по столбцам, признак-запятая

Жмем Готово. Данные разделились. Выделяем все столбцы с данными, жмем правка

меняем точки на запятые, заменить все

В ячейках справа первой строки (F, G, H, I, J) пишем формулы, по порядку ячеек:

=ОКРУГЛ(A1;0), =ОКРУГЛ(B1;0), =ОКРУГЛ(C1/1000;0)*1000, =ОКРУГЛ(D1/1000;0)*1000, =E1

Теперь выделяем и протягиваем строку с формулами, получилось

Здесь красные цифры те же данные, только пиксельные координаты округлены до целого, геокоординаты
округлены до километра. Создаем в рабочей папке текстовый файл, Копируем данные красного цвета из Excel, вставляем
в тестовый файл, сохраняем. Excel файл тоже сохраняем. Если Excel не закрывать, то следующие новые данные разложатся
по столбцам сами. Но точки на запятые менять все равно придется.

Теперь наша проблема в том, что данные в текстовом файле имеют неправильные разделители. Для приведения
файла к нужному виду, сделаем замены, используя Word. Т.к. эти замены одинаковы для разных карт, достаточно сделать
один раз, записывая Макрос. Для следующих замен мы просто запустим этот Макрос и сразу получим результат.

Открываем текстовый файл Word-ом. Включаем запись макроса

Жмем Правка/Заменить/Больше. Заменяем

Т.е. то, что надо. Осталось дать текстовому файлу понятное имя, чтоб ничего не перепутать.
В дальнейшем для такой трансформации текста, достаточно нажать Сервис/макросы/выбрать макрос/выполнить.

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

Открываем файл карты в GlobalMapper. Заходим в меню привязки, Открываем файл точек созданный выше. Устанавливаем
удобный масштаб в среднем окне, в правом окне надо выбрать масштаб погрубее, чтобы видеть пошире. Сразу удаляем
предварительные точки привязки. Два раза щелкаем по строке точки, точка центрируется, ставим её куда надо, жмем Alt,R
точка закреплена. Жмем Alt,Z центрируется следующая точка и т.д. Шаг назад по списку делается кнопками Alt,Q

Вариант 2

Смысл его в том, что в Exel созданы формулы, которые по двум точкам привязки генерируют полный список
точек для пространства определенного этими двумя точками привязки.

Почему по двум точкам? Потому что мне не хватает знания математики для написания генератора под четыре
точки. Ограничение двух точек позволяет получить мало сдвинутую сетку только для правильно повернутого
изображения (километровая сетка должна быть параллельно XY).

Поэтому карту, привязанную по четырем точкам, открываем в GlobalMapper и сразу экспортируем в GEOTIFF.
Это новое изображение повернуто правильно. Теперь открываем его в GlobalMapper, заходим в меню привязки и сохраняем
его две точки привязки в файл. Для сужения площади сгенерированных точек, можно поставить еще пару точек в других
местах (просто в одинаковые пиксели изображения), старые удалить и сохранить в файл новые. Это имеет смысл при больших
полях карты. Ведь ненужные точки придется удалять вручную каждую!

Затем эту пару точек нужно, аналогично предыдущему примеру, скопировать в Excel генератор точек ,
и он сгенерирует предварительные точки привязки для каждого узла геосетки.

Танцы с заменой запятых и др. те же что в предыдущем примере.

Формулы в Excel генераторе точек достаточно сложные, поэтому описывать их не буду, проще
прислать файл.

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

В заключение немного о правке чужих, неправильно сшитых карт.

Такие карты попадаются двух видов.

Первые – на глаз все нормально, стыки не видны, но OZI сетка ложиться криво. Эти карты скорей всего результат сшивки
по пикселям в программах типа PanaVue Image Assembler.

Такую карту надо просто открыть в GlobalMapper и привязать по каждому узлу километровой сетки.

Второй тип, когда сетка визуально не стыкуется на границе фрагментов. Эти карты - результат дилетантской
сшивки в Фотошоп. С ними труднее. К тому же хочется не только прилично привязать, но и убрать мозолящие глаз
нестыковки сетки. Единственный путь - разобрать карту на части и склеить заново. Разобрать трудно, т.к. границы сшивки
обычно не ортогональны и вообще могут иметь замысловатую форму.

В Фотошоп, инструментом Polygonal Lasso выделяю один из фрагментов, потом инвертирую выделение (Select / Inverse).
Закрашиваю выделенную область в цвет, которого нет на карте. Обычно это чисто красный (RGB 255;0;0), потом повторяю
процедуру, сохраняя в отдельные файлы картинки, где один фрагмент оставлен нетронутым, остальные окрашены. Т.о.
получаю 2; 3; 4 файла совершенно одинакового размера, но разных названий. Беру OZI привязку начального имиджа, меняю
в ней внутренние ссылки на вновь созданные файлы и сохраняю с соответствующими этим файлам именами. Имеем (на
примере 4-х частей) 4 файла имиджа и четыре Map файла. Все файлы привязки содержат одинаковую привязку, все файлы
имиджа одинаковы по размеру.

Открываем все четыре файла в GlobalMapper, привязываем каждый отдельно, потом делаем красный прозрачным
для каждого фрагмента. Готово.

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

Читайте также: