Здравствуйте.
Мне случайно достался 3д-сканер, с поворотной платформой, сканирует при помощи видео-камеры и специального освещения, в виде меняющегося шахматного поля. Штатное програмное обеспечение работает неплохо, но не идеально.
Мне интересно самому разобраться и может быть получить результат лучшего качества.
После каждой сессии сканирования получается набор из 16 png фотографий и 16 наборов координат точек.
Фотографии 640х480 точек, каждый набор координат содержит 640х480 = 307200 трехмерных координат.
Я взял пример opengl на с++, добавил туда чтение png и чтение координат из файла.
В итоге один кадр сканирования в opengl выглядит в так:
![a7092-clip-143kb.jpg](https://clip2net.com/clip/m370626/a7092-clip-143kb.jpg)
Если сместить немного камеру - то вот так:
![302f6-clip-355kb.jpg](https://clip2net.com/clip/m370626/302f6-clip-355kb.jpg)
Вид сбоку:
![d1027-clip-220kb.jpg](https://clip2net.com/clip/m370626/d1027-clip-220kb.jpg)
Проблема в том, что это циллиндр, а opengl настроен на ортогональную проэкцию, то есть не вносит искажений.
Это сам циллиндр отсканирован с искажениями перспективы.
Если я правильно понимаю, для преобразования ортогональной проэкции в перспективную - используется соответствующая матрица. И судя по всему возможно обратное преобразолвание, обратная матрица ?