Здравствуйте.
Мне случайно достался 3д-сканер, с поворотной платформой, сканирует при помощи видео-камеры и специального освещения, в виде меняющегося шахматного поля. Штатное програмное обеспечение работает неплохо, но не идеально.
Мне интересно самому разобраться и может быть получить результат лучшего качества.
После каждой сессии сканирования получается набор из 16 png фотографий и 16 наборов координат точек.
Фотографии 640х480 точек, каждый набор координат содержит 640х480 = 307200 трехмерных координат.
Я взял пример opengl на с++, добавил туда чтение png и чтение координат из файла.
В итоге один кадр сканирования в opengl выглядит в так:
Если сместить немного камеру - то вот так:
Вид сбоку:
Проблема в том, что это циллиндр, а opengl настроен на ортогональную проэкцию, то есть не вносит искажений.
Это сам циллиндр отсканирован с искажениями перспективы.
Если я правильно понимаю, для преобразования ортогональной проэкции в перспективную - используется соответствующая матрица. И судя по всему возможно обратное преобразолвание, обратная матрица ?