Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 14.03.2017, 03:51   #1
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Совмещение изображений по ключевым координатам

Всем привет.

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

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

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

Бился долгое время, пока не осознал, что у меня явно не хватает каких-то совершенно базовых знаний в геометрии или как оно там. У меня вообще со всей алгеброй/геометрией огромные нелады. В связи с чем прошу реально объяснить и показать на пальцах, а не «так здесь элементарно по формуле такой-то и такой-то».
(Offline)
 
Ответить с цитированием
Старый 14.03.2017, 13:25   #2
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений
(для 369 пользователей)
Ответ: Совмещение изображений по ключевым координатам

Вложения битые. Но судя по описанию можешь всё сделать на подсчёте расстояний между двумя точками и не париться с углами - по теореме Пифагора: 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 и более, то уже сложнее, надо ломать форму изображения с помощью матриц.
(Offline)
 
Ответить с цитированием
Старый 14.03.2017, 13:48   #3
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Совмещение изображений по ключевым координатам

Перезалил вложения:
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 865
Размер:	15.0 Кб
ID:	22673
Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 895
Размер:	622 байт
ID:	22671

Т.е. в результате должно получиться что-то такое:
Нажмите на изображение для увеличения
Название: 3.png
Просмотров: 848
Размер:	17.7 Кб
ID:	22672
(Offline)
 
Ответить с цитированием
Старый 14.03.2017, 13:56   #4
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Совмещение изображений по ключевым координатам

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

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

1. Как совместить изображения пусть даже по одной точке? Знаю, что должно быть элементарно, но туплю.
2. Координаты точек на втором изображении я знаю изначально, но когда я начну поворачивать изображения, координаты точек же изменятся, как мне их узнать тогда?
(Offline)
 
Ответить с цитированием
Старый 14.03.2017, 14:17   #5
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 08.08.2011
Сообщений: 505
Написано 191 полезных сообщений
(для 369 пользователей)
Ответ: Совмещение изображений по ключевым координатам

1. Как совместить изображения пусть даже по одной точке? Знаю, что должно быть элементарно, но туплю.
Дык переместить второе изображение по оси Х на (x1 - x2) пикселей и по оси Y на (y1 - y2).
2. Координаты точек на втором изображении я знаю изначально, но когда я начну поворачивать изображения, координаты точек же изменятся, как мне их узнать тогда?
Точки вращаются по окружности, к изначальной Х добавляй r*Cos(q), к Y добавляй r*Sin(q), где r - расстояние от центра рисунка до точки, q - на сколько градусов повернул от изначальной позиции.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо DarkInside за это полезное сообщение:
Andvrok (14.03.2017), St_AnGer (14.03.2017)
Старый 14.03.2017, 14:43   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Совмещение изображений по ключевым координатам

В общем случае
https://ru.wikipedia.org/wiki/Коррел...ых_изображений
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 14.03.2017, 14:53   #7
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Совмещение изображений по ключевым координатам

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Andvrok за это полезное сообщение:
ABTOMAT (15.03.2017), impersonalis (14.03.2017)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com