AlexanderZh> Фотография одна, но выделив в любом редакторе этот коврик по контуру, достаточно просто растянуть его за концы и добиться изображения его в "анфас". Так что твои мудрения с формулами тут не имеют никакого значения. Это простая интерполяция изображения между контрольными точками. Можно взять вторую фото этого коврика из другого угла и произвести подобные манипуляции. Потом, если на одном изображении рисунок на коврике получится чётче в одном углу на первой фотке, и в другом на второй, то можно совместить оба изображения и подменить "дефективные" участки на одном и на другом, замещая их фрагментами с противоположного. Дошло?
Давай я тебе совсем на пальцах разжую.
Пусть есть две камеры, снимающие фреску на стене (или полу), пусть точно известны их относительные расстояния и все углы наклона объективов.
Теперь мы берем два проектора с точно такими же объективами, как у камер, выстраиваем их точно также, как стояли камеры и высвечиваем на экран снятые кадры, экран точно также удален от камер, как реальная стена с фресками.
Что мы получим на экране?
О чудо, на экране мы видим соединение кадров, воспроизводящее фрагмент стены, области перекрытия точно совпадают, как на реальной стене.
Теперь, внимание, самое интересное!
Начинаем наклонять экран, что станет с проекцией от слайдов?
О, ужас, они начнут распадаться, перестанут совпадать!!!
Почему?
П-А-Р-А-Л-Л-А-К-С!!!
Таким образом с помощью варьирования смещения камеры x,y,z и выполнения перспективных преобразований для каждой позиции софт ищет плоскость, которая воспроизведёт реальную стену. Именно на ней произойдет минимальное отклонение контрольных точек, по которым идет оптимизация.
Это первая часть кордебалета.
Потом начинается вторая часть. Кадр от второй камеры, спроецированный на найденную "стену" с помощью перспективного преобразования с параметрами первой камеры (ее фокусного расстояния) проецирует эту проекцию на ту же плоскость, в которой находится ее собственный кадр (на рис он на паносфере) - это и есть момент вычитания параллакса.