我正在开发一个AR应用程序,其中标记是一个具有复杂形状的3d对象,因此,我试图作为一个基于cad的识别系统。
据我发现,从一组图像构建3d模型的主要步骤是:
1-遍历图像并提取其特征。
2执行成对匹配
3计算每个图像的3d点及其对应的描述符和相机参数。
现在,我的第一个问题是,我应该如何确定每个3d点的描述符,因为我们知道3d点是从一组相似的2d特征中提取的,这意味着有许多相似的描述符,每个描述符都对应一个2d点,那么我们应该选择哪些描述符?它们并不完全相同,而是彼此略有不同。
我的另一个问题是:
基于OpenCV提供的Real Time pose estimation of a textured object 教程,要求模型为.yaml格式,网格为.ply格式。
我需要知道如何将3d结构存储到这些类型的文件中吗?
是否有任何步骤或工具可以帮助您做到这一点?
提前致谢
最佳答案
快速解答,这是您需要的:
对于每个2D关键点
solvePnPRansac()
的鲁棒方法(RANSAC)估计对象姿态:3D对象点是训练步骤中保存的3D对象坐标,2D图像点是当前检测到并与本教程应该或多或少地执行类似的操作。
“棘手的”部分应该是针对给定的2D图像点和相机姿势计算对象3D点的坐标:
对于2D图像点(例如,一个关键点位置),我会做些什么(可能与教程代码有所不同):
z=1
),请参见 undistortPoints()
关于opencv - 纹理对象的实时姿态估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719630/