я создал новую тему про решение получившегося уравнения
topic61225.htmlно отвечу и тут, перспективное искажение именно идет от камеры.
я могу взять и поставить 4 точкам(которые образуют например трапецию) на изображении 4 угла "мнимого прямоугольника" и применить обратное перспективное искажение чтобы "развернуть" точки в прямоугольник, но проблема в том, что я не знаю каким точно должен быть этот "мнимый прямоугольник", можно использовать скажем вписанный или описанные прямоугольник вокруг точек или их усреднение, но так мы получим искомый результат только с точностью до масштаба по
.
Что я пытаюсь сделать: беру снимаю первую картинку(с неизвестным перспективным искажением
), потом поворачиваю плоскость которую снимаю на какой либо известный градус (например на 90) получаю вторую картинку с искажением уже
, потом я могу поставить в соответсвие 4 пары точек на первой и второй картинке и получить тем самым переход от одной картинки к другой
, потом я составляю уравнение
, которое и пытаюсь тщётно решить.
в общем случае еще накладывается и дисторсия бочка\подушка, какую точно она имеет формулу я не знаю, я брал простейшую.
если еще проще, то
описывал проблему тут
topic61037.htmlединственное там формула общего преобразования не верная
(я почему то просто сложил перспективное искажение и искажение типа бочка\подушка, хотя их последовательно надо применять, только непонятно в каком порядке и соответственно от порядка применения зависит порядок убирания дисторсий).
в общем задачу можно поделить на 2.
1. Исправление перспективного искажения
2. Исправление дисторсии подушка бочка
думаю нет смысла решать задачу сразу в целом в виде
Dist[Persp[(x,y)]] или
Persp[Dist[(x,y)]], т.к. будет только сложнее, а можно решить задачу последовательно устранив искажения сначала перспективное, потом бочку.