Результаты 3D-реконструкции выглядят искаженными. Что мне не хватает? - PullRequest
0 голосов
/ 16 апреля 2019

Итак, я пытаюсь настроить конвейер 3d-реконструкции для одновременной локализации и картирования. Я подумал, что сначала я попробую реконструкцию для одного изображения глубины, но только результат кажется несколько искаженным.

Я использую этот популярный метод проецирования, использующий внутренние параметры камеры и изображение глубины (метод можно увидеть в разделе «Отображение пикселей глубины с цветными пикселями»):

http://nicolas.burrus.name/index.php/Research/KinectCalibration

Это мое мнение, написанное для ясности.

def project(u,v,depth):
    z = depth
    x = (cam.cx - u) / cam.fx * z
    y = (cam.cy - v) / cam.fy * z
    return [x, y, z]

Теперь я ожидаю получить облако точек, которое несколько точно соответствует реальной трехмерной сцене. Тем не менее, результат искажен, как если бы он сбежал из бутылки джина. Я предполагаю, что этого следовало ожидать, потому что более высокие значения depth приводят к тому, что точки находятся ближе к центральной точке изображения. Как я могу смягчить этот эффект и получить более точные реконструкции? Требуется ли какой-либо шаг нормализации или масштабирования, о котором я не знаю?

карта глубины: https://imgur.com/RQMw7pc

3d-реконструкция: https://imgur.com/QNqrKdy

(глубина изображения взята из этого руководства http://anabuilder.free.fr/2D3DSculptor/index.html)

...