У меня есть образ изображения с набором точек и второе испытанное изображение также с набором точек. Я знаю координаты x, y точек. Точки имеют свои имена (цифры), я знаю числа всех точек в изображении рисунка и в тестируемом образце знаю числа двух точек. Я хочу повернуть проверенное изображение в соответствии с этими двумя известными точками, чтобы соответствовать тестируемому изображению на образце (я не хочу его масштабировать). Затем я хочу рассчитать расстояния точек шаблона до тестируемых точек. Я хочу написать алгоритм в Java, любую идею, как это сделать?Соответствие изображений в соответствии с двумя точками
2
A
ответ
1
hava Посмотрите на java.awt.geom.AffineTransform, вы также найдете учебники для этого. кажется, что вы хотите отобразить синюю 0 на красный 0, так что я начал бы переводить обе группы, чтобы их 0 находилось в начале координат. см. AffineTransform.getTranslateInstance.
следующее Я проверил векторы на точки 1 в синей и красной группе. вы можете найти их угол относительно оси x (arctan (y/x)). разница в двух углах - это угол, по которому вы хотите повернуть синюю группу, чтобы точки 1 указывали в одном направлении. см. AffineTransform.getRotateInstance. Соответствующие пары точек кажутся наиболее сложной частью ...
Есть ли фиксированное отображение точек между двумя наборами точек? Или карта скорректирована непрерывно? –
Из вашей диаграммы неясно, какова цель 1,0. Похоже, вы просто хотите найти самое близкое соответствие для 2,3. Есть ли какая-то функция поворота/масштабирования, которую вы должны определить из очков 0 и 1? – BraveNewCurrency
Возможный дубликат http://stackoverflow.com/questions/7077409/align-one-set-of-2d-points-with-another-using-only-translation-and-rotation –