Как преобразовать картинку с опорными точками в другую картинку?

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

До сих пор я загружал оба изображения в Photoshop, включаю прозрачность для закрывающего слоя и трансформирую и поворачиваю со всех сторон, пока изображение не совпадет. Изображения, с которыми я работаю, довольно большие, и мое текущее решение работает очень медленно. Мне было интересно, есть ли более изящное решение, похожее на геопривязку?

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

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

Большое спасибо за ваши предложения!

Возможно, вопрос должен звучать так: Как перенести одно изображение с опорными точками на другое изображение? Трансформировать или транспонировать? « Масштаб, вращение и защита могут быть другими ». Хммм. Если они не в том же масштабе, перспективе и размере, то - - - не уверены, что можно заставить их совпадать, если это цель? Более подробная информация о конечной цели может помочь.
Тогда транспонировать - лучшее слово, очевидно. Я знаю, что транспонированное изображение будет искажено в какой-то момент, это не имеет значения. Мне просто нужно найти способ пространственной привязки для обычных изображений, чтобы идентичные части соответствовали друг другу.
Один из способов — найти одну точку на обоих графиках и переместить одну над другой. Затем найдите другую пару совпадающих точек и используйте комбинированный инструмент вращения/масштабирования, чтобы совместить эти другие точки, используя первую пару точек в качестве центра вращения и масштабирования. Но в общем случае карты не обязательно будут ему соответствовать, это будет зависеть от используемой ими проекции (даже для вполне локальных карт).
В общем случае вы, возможно, можете использовать приложение для панорамы (Hugin или другое), у них есть инструменты для искажения изображений, чтобы вручную установленные опорные точки соответствовали друг другу.
Этот вопрос, по-видимому, касается преобразования изображений карт, а не фотографии как таковой.
Правильно, это не фотография. Я говорю об абстрактных изображениях, у которых есть совпадающие точки в некоторых местах, и я хочу, чтобы одна из карт была растянута и искажена таким образом, чтобы совпадающие точки находились друг над другом. И я хотел бы сделать это, определив точки привязки, подобные географической привязке, и указав одинаковые места.
@xenoid Можете ли вы объяснить, как бы я сделал это в Hugin, или вы знаете какой-нибудь учебник по этой теме?
Я голосую за закрытие этого вопроса, потому что он не о фотографии. См. photo.stackexchange.com/help/on-topic

Ответы (3)

Забавно, что вы упомянули географическую привязку. Это то, что легко могут делать все ГИС-программы (изменение проекций, картографирование на основе точек и т. д.).

Если вам не обязательно использовать Photoshop, вы можете попробовать использовать для этого ArcMap (платный) или QGIS (бесплатный).

Редактировать: я только что прочитал, что вы на самом деле сказали, что вам не нужно использовать Photoshop. Поэтому я определенно рекомендую использовать программу ГИС. Они позволят вам отметить места на двух отдельных изображениях, а затем программа зафиксирует проекцию так, чтобы выбранные точки точно совпадали.

Я смутно помню, как много лет назад использовал действительно хороший метод, но эта ссылка должна помочь вам начать работу: https://desktop.arcgis.com/en/arcmap/10.3/manage-data/editing-existing-features/choosing-a-rubbersheet -method.htm

Я знаю, как это сделать с помощью ArcMap и QGIS, так что это не проблема. Я хотел знать, есть ли "относительный" способ без использования фактических координат. У меня есть векторный слой в ГИС, который определяет несколько областей над городом. Затем у меня есть несколько других карт того же города, которые показывают другую информацию. Затем я хочу обрезать изображение для каждой из этих областей с каждой карты, но без потери качества. Вот почему у меня есть скриншот общей карты с областями, и я использую его как наложение поверх своих индивидуальных карт, а затем обрезаю его. Но отдельные карты используют разные проекции.

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

Если он может обрабатывать другой масштаб, все, что вам нужно сделать, это загрузить два изображения, а затем вызвать функцию из меню «Файл»> «Автоматизация»> «Объединение фотографий» (меню может различаться в зависимости от версии). Это даст вам несколько вариантов на выбор, и вам, возможно, придется попробовать разные, чтобы увидеть, какой из них лучше всего подходит для ваших конкретных изображений.

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

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

То есть, ЕСЛИ он может справиться с разницей в размерах.

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

Для этого вы можете использовать хугин .

Подход будет примерно таким (используя экспертный интерфейс, потому что я к этому привык):

  1. Загрузить изображения в Hugin

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

  3. а. Если изображения относятся к одной и той же карте, вы сможете использовать «Создать контрольные точки», чтобы автоматически найти совпадающие точки. Это может работать не слишком хорошо, потому что алгоритмы лучше всего работают с фотографиями. В этом случае попробуйте следующее:

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

  4. Теперь вернитесь на вкладку «Фото» и выберите, что оптимизировать. В случае с картами я бы предложил «Позиции, перевод и просмотр». Что это делает, так это то, что он по существу выбирает, какие операции выполнять для сопоставления изображений. Например. «Позиции» означают оптимизацию рыскания, тангажа и крена (изображение движущихся изображений, как если бы они были расположены на сфере, что является наиболее распространенным случаем для панорам, где камера находится в центре, и вы поворачиваете ее, чтобы сделать снимки). Перевод означает обработку движения камеры вдоль объекта, например. при сшивании сканов. Вам может сойти с рук только оптимизация перевода. Попробуйте различные варианты, чтобы увидеть, какой из них лучше всего подходит для вас. Кстати, чтобы сбросить результаты оптимизации, щелкните правой кнопкой мыши изображения, используя меню «Сброс».

  5. Перейдите на вкладку «Сшиватель». Возможно, вы захотите нажать «Рассчитать оптимальный размер», чтобы выбрать наилучшее разрешение.

  6. В этой же вкладке снимите флажок «Экспозиция исправлена» в «Панорамных выходах». Вместо этого выберите «Без коррекции экспозиции, низкий динамический диапазон» в «Переназначенные изображения».

  7. Наконец, нажмите «Сшить!» и подождите некоторое время.

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