【发布时间】:2017-11-13 08:30:06
【问题描述】:
我正在尝试为我的 SLAM 项目模拟镜头失真效果。 已在 OpenGL 中给出并加载了扫描的彩色 3D 点云。 我想做的是在给定的姿势下渲染 2D 场景,并在鱼眼相机的真实图像和渲染图像之间做一些视觉里程计。 由于相机镜头畸变严重,在渲染阶段也要考虑。
问题是我不知道把镜头畸变放在哪里。着色器?
我发现some open codes 将失真放入几何着色器中。但是我猜这个畸变模型与计算机视觉社区中的镜头畸变模型不同。在 CV 社区中,镜头畸变通常发生在投影平面上。
This one 与我的工作非常相似,但他们没有使用失真模型。
谁有好主意?
我刚刚找到another implementation。他们的代码在片段着色器和几何着色器中都实现了失真。但是片段着色器版本可以应用于我的情况。因此,我想以下方法会起作用:
# vertex shader
p'=T.model x T.view x p
p_f = FisheyeProjection(p') // custom fish eye projection
【问题讨论】:
-
另一种经常使用的方法是渲染到纹理,然后将其映射到矩形上,然后扭曲其形状
标签: opengl camera shader distortion fisheye