如何将2D图像上的有色点移动到3D球体上

3
我有一张2D彩色图像。所有的彩色点都位于这个矩形图像中心的圆形区域内,圆形外的所有点都是黑色的(我从鱼眼相机获取这些矩形图像)。
我知道这个圆的中心坐标和半径。
我需要将2D图像中圆形区域内的所有彩色点移动到球面上。更确切地说,是半球面,因为我的相机具有180度的视场角。
我的问题是:如何正确地移动这些彩色点?只需根据球体方程将圆形区域内的所有点分配Z坐标是否正确?
为了让我的问题更清晰,我附上了来自我的鱼眼相机的2D图像和理想结果的图像。 enter image description here enter image description here
1个回答

2

首先,您需要获取相机的镜头校准数据。Ocam或OpenCV将为您完成出色的工作。

其次,由于您已经知道光学中心,因此可以将图像坐标转换为球面坐标。因此,现在您有了将图像坐标映射到球面坐标的映射函数。

第三,您需要一些渲染工具来观察您映射到球面上的图像。最简单的方法是使用OpenGL。将纹理映射到球体上并将相机移动到球内部。


谢谢您的回复!我理解得对吗,将图像坐标映射到球面坐标,只需根据球面方程为鱼眼圆内的每个点分配Z坐标即可? - VideoProcessingResearcher
我已经测试了cv::fisheye。我得到了放置在上面的鱼眼图像的无畸变版本。不幸的是,这个工具只能对鱼眼图像的中心部分进行去畸变处理,因为无畸变圆的半径等于无穷大。无论如何,我有校准数据(相机矩阵和4个径向畸变系数)。 - VideoProcessingResearcher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接