forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Совмещение изображений по ключевым координатам (http://forum.boolean.name/showthread.php?t=20584)

Andvrok 14.03.2017 03:51

Совмещение изображений по ключевым координатам
 
Всем привет.

Есть два изображения:
Вложение 22668 Вложение 22669

Есть координаты точек на первом изображении и на втором.

Нужно масштабнуть, повернуть и разместить изображение 2 так, чтобы эти два изображения совпали по этим точкам.

Бился долгое время, пока не осознал, что у меня явно не хватает каких-то совершенно базовых знаний в геометрии или как оно там. У меня вообще со всей алгеброй/геометрией огромные нелады. В связи с чем прошу реально объяснить и показать на пальцах, а не «так здесь элементарно по формуле такой-то и такой-то».

DarkInside 14.03.2017 13:25

Ответ: Совмещение изображений по ключевым координатам
 
Вложения битые. Но судя по описанию можешь всё сделать на подсчёте расстояний между двумя точками и не париться с углами - по теореме Пифагора: d = Sqr((x1 - x2)^2 + (y1 - y2)^2).
Не знаю, сколько там точек на рисунках, но допустим если две:
1) совмещай первые точки первого и второго изображений - думаю это уже сделал
2) поворачивай изображение пока расстояние от второй точки второго рисунка до второй точки первого рисунка уменьшается и не начинает расти

Код:

d = Sqr((x1 - x2)^2 + (y1 - y2)^2)
d_min = d
While True
    Повернуть_изображение_на_1_градус()
    d = Sqr((x1 - x2)^2 + (y1 - y2)^2)
    If d <= d_min Then
        d_min = d
    Else
        ExitLoop - выйти из цикла
    Endif
Wend

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

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

Andvrok 14.03.2017 13:48

Ответ: Совмещение изображений по ключевым координатам
 
Вложений: 3
Перезалил вложения:
Вложение 22673
Вложение 22671

Т.е. в результате должно получиться что-то такое:
Вложение 22672

Andvrok 14.03.2017 13:56

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

В чём мои затупы:

1. Как совместить изображения пусть даже по одной точке? Знаю, что должно быть элементарно, но туплю.
2. Координаты точек на втором изображении я знаю изначально, но когда я начну поворачивать изображения, координаты точек же изменятся, как мне их узнать тогда?

DarkInside 14.03.2017 14:17

Ответ: Совмещение изображений по ключевым координатам
 
Цитата:

1. Как совместить изображения пусть даже по одной точке? Знаю, что должно быть элементарно, но туплю.
Дык переместить второе изображение по оси Х на (x1 - x2) пикселей и по оси Y на (y1 - y2).
Цитата:

2. Координаты точек на втором изображении я знаю изначально, но когда я начну поворачивать изображения, координаты точек же изменятся, как мне их узнать тогда?
Точки вращаются по окружности, к изначальной Х добавляй r*Cos(q), к Y добавляй r*Sin(q), где r - расстояние от центра рисунка до точки, q - на сколько градусов повернул от изначальной позиции.

impersonalis 14.03.2017 14:43

Ответ: Совмещение изображений по ключевым координатам
 
В общем случае
https://ru.wikipedia.org/wiki/Коррел...ых_изображений

Andvrok 14.03.2017 14:53

Ответ: Совмещение изображений по ключевым координатам
 


Часовой пояс GMT +4, время: 15:34.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot