Opencv 纹理对象的实时姿态估计
我正在开发一个AR应用程序,其中的标记是一个具有复杂形状的3d对象,因此我尝试制作一个基于cad的识别系统作为第一步 据我所知,从一组图像构建3d模型的主要步骤是: 1-循环浏览图像并提取其特征。 2-执行成对匹配 3-计算每个图像的3d点及其相应描述符和相机参数 现在我的第一个问题是我应该如何确定每个3d点的描述符,因为我们知道3d点是从一组相似的2d特征中提取的,这意味着有许多相似的描述符,每个描述符对应一个2d点,那么我们应该选择哪一个描述符?它们并不完全相同,而是略有不同 我的另一个问题是: 根据OpenCV提供的本教程,要求模型采用.yaml格式,网格采用.ply格式。 我需要知道如何将我的3d结构存储到这些类型的文件中? 是否有任何步骤或工具可以帮助您这样做Opencv 纹理对象的实时姿态估计,opencv,3d-reconstruction,Opencv,3d Reconstruction,我正在开发一个AR应用程序,其中的标记是一个具有复杂形状的3d对象,因此我尝试制作一个基于cad的识别系统作为第一步 据我所知,从一组图像构建3d模型的主要步骤是: 1-循环浏览图像并提取其特征。 2-执行成对匹配 3-计算每个图像的3d点及其相应描述符和相机参数 现在我的第一个问题是我应该如何确定每个3d点的描述符,因为我们知道3d点是从一组相似的2d特征中提取的,这意味着有许多相似的描述符,每个描述符对应一个2d点,那么我们应该选择哪一个描述符?它们并不完全相同,而是略有不同 我的另一个问题
提前感谢快速回答,以下是您需要的:
- 具有纹理对象的CAD模型
- “了解”关键点:
- 对于每个“训练”图像,检测并保留图像上检测到的关键点
- 对于每个2D关键点,使用3D CAD网格计算相应的3D对象坐标,并提取相应的描述符
- 将三维对象坐标列表和相应的描述符列表保存在文件中
- 要检测对象,请执行以下操作:
- 检测所需图像中的关键点
- 将当前关键点与保存的关键点匹配
- 使用带有
的稳健方法(RANSAC)估计对象姿势:3D对象点是在训练步骤中保存的3D对象坐标,2D图像点是当前检测和匹配的关键点的2D图像坐标solvePnPRansac()
- 您可以在OpenCV教程中看到如何对纹理对象进行实时姿势估计
- 使用内在矩阵将2D图像点转换为标准化相机帧(
),请参见z=1
- 测试当前2D图像点是否属于对象:图像光线与当前摄影机姿势下三角形网格的交点(需要对每个三角形进行测试)
- 如果当前二维图像点属于对象,则相应的三维对象点(在对象帧中)可以是构成三角形的3个点中最近的点,也可以计算图像射线和三角形之间的交点