[英]3D reconstruction from 2 images with baseline and single camera calibration
我的学期项目是校准基线较大(〜2m)的立体声相机。 因此,我的方法是在没有精确定义的校准模式(如棋盘)的情况下运行,因为校准模式必须很大并且很难处理。
我的问题类似于: 从2张图像进行3D重建,而没有有关相机的信息
到现在为止的程序:
goodFeaturesToTrack
cornerSubPix
calcOpticalFlowPyrLK
找到角位置 findFundamentalMat
stereoRectifyUncalibrated
warpPerspective
图像warpPerspective
sgbm
图sgbm
到目前为止,它的效果还算不错,但是如果我改变转角的数量,矫正后的图像在视角上就会“跳跃”。
不知道这是否是形式不精确或我发狂,还是由于没有已知的相机参数或没有镜头畸变补偿而无法计算(也可能在筑波的照片上发生)。欢迎提出建议:)
但不是我的主要问题,现在我想重建3D点。
但是reprojectImageTo3D
需要我到目前为止还没有的Q矩阵。 所以我的问题是如何计算呢? 我有基线,两个摄像机之间的距离。 我的感觉是,如果我将视差图转换为3d点云,唯一缺少的就是比例尺了吗? 因此,如果我将基线设置为3D,那么对吗? 那怎么办? 我还计划用棋盘分别补偿每个摄像机的镜头畸变(每次较小且一次接近一个摄像机,因此我不必在两者的重叠区域中相距10-15m处有大图案的情况)。 。)所以如果这有帮助,我也可以使用相机参数..
除了http://docs.opencv.org之外,还有其他文档吗? 如果我在Qt中按F2键,就可以看到并了解Q矩阵的计算方式以及如何计算Q矩阵,或者我可以打开源代码(对我来说可能很难理解^^),我只能看到具有传递参数类型的函数。对不起,我对这一切真的很陌生)
所以我在这里发现了Q矩阵的约束: 使用OpenCV生成3d点(假设正面平行配置)
所有这些参数均由单个摄像机校准给出:c_x,c_y,f
基线是我测量的:T_x
所以现在这行得通,只有我不太清楚这些单位,我已经使用它们形成了以px为单位的单摄像机校准,并以米为单位设置了基线,将视差图除以16,但是它接缝的比例不正确。 。
顺便说一下,上面的差异图是错误的^^,现在看起来更好了。 您必须执行反剪切转换,导致stereoRectifyUncalibrated剪切图像(未记录?)。 本文在Charles Loop Zhengyouyou Zhang的“ 7 Shearing Transform”上进行了描述: http : //research.microsoft.com/en-us/um/people/Zhang/Papers/TR99-21.pdf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.