文档链接:https://docs.opencv.org/master/d9/d25/group__surface__matching.html

OpenCV在逐渐的吃PCL的地盘,不过工具还不够丰富。

此函数竟然使用点对特征和hash!

函数使用的ICP方法:Picky ICP方法;https://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme

Note about the License and Patents

The following patents have been issued for methods embodied in this software: "Recognition and pose determination of 3D objects in 3D scenes using geometric point pair descriptors and the generalized Hough Transform", Bertram Heinrich Drost, Markus Ulrich, EP Patent 2385483 (Nov. 21, 2012), assignee: MVTec Software GmbH, 81675 Muenchen (Germany); "Recognition and pose determination of 3D objects in 3D scenes", Bertram Heinrich Drost, Markus Ulrich, US Patent 8830229 (Sept. 9, 2014), assignee: MVTec Software GmbH, 81675 Muenchen (Germany). Further patents are pending. For further details, contact MVTec Software GmbH (info@mvtec.com).

Note that restrictions imposed by these patents (and possibly others) exist independently of and may be in conflict with the freedoms granted in this license, which refers to copyright of the program, not patents for any methods that it implements. Both copyright and patent law must be obeyed to legally use and redistribute this program and it is not the purpose of this license to induce you to infringe any patents or other property right claims or to contest validity of any such claims. If you redistribute or use the program, then this license merely protects you from committing copyright infringement. It does not protect you from committing patent infringement. So, before you do anything with this program, make sure that you have permission to do so not merely in terms of copyright, but also in terms of patent law.

Please note that this license is not to be understood as a guarantee either. If you use the program according to this license, but in conflict with patent law, it does not mean that the licensor will refund you for any losses that you incur if you are sued for your patent infringement.

Introduction to Surface Matching

Cameras and similar devices with the capability of sensation of 3D structure are becoming more common. Thus, using depth and intensity information for matching 3D objects (or parts) are of crucial importance for computer vision. Applications range from industrial control to guiding everyday actions for visually impaired people. The task in recognition and pose estimation in range images aims to identify and localize a queried 3D free-form object by matching it to the acquired database.

From an industrial perspective, enabling robots to automatically locate and pick up randomly placed and oriented objects from a bin is an important challenge in factory automation, replacing tedious and heavy manual labor. A system should be able to recognize and locate objects with a predefined shape and estimate the position with the precision necessary for a gripping robot to pick it up. This is where vision guided robotics takes the stage. Similar tools are also capable of guiding robots (and even people) through unstructured environments, leading to automated navigation. These properties make 3D matching from point clouds a ubiquitous necessity. Within this context, I will now describe the OpenCV implementation of a 3D object recognition and pose estimation algorithm using 3D features.

Surface Matching Algorithm Through 3D Features

The state of the algorithms in order to achieve the task 3D matching is heavily based on [52], which is one of the first and main practical methods presented in this area. The approach is composed of extracting 3D feature points randomly from depth images or generic point clouds, indexing them and later in runtime querying them efficiently. Only the 3D structure is considered, and a trivial hash table is used for feature queries.

While being fully aware that utilization of the nice CAD model structure in order to achieve a smart point sampling, I will be leaving that aside now in order to respect the generalizability of the methods (Typically for such algorithms training on a CAD model is not needed, and a point cloud would be sufficient). Below is the outline of the entire algorithm:

As explained, the algorithm relies on the extraction and indexing of point pair features, which are defined as follows:

F(m1,m2)=(||d||2,<(n1,d),<(n2,d),<(n1,n2))

where m1 and m2 are feature two selected points on the model (or scene), d is the difference vector, n1 and n2 are the normals at m1 and m2.

调用方法:

// pc is the loaded point cloud of the model
// (Nx6) and pcTest is a loaded point cloud of
// the scene (Mx6)
ppf_match_3d::PPF3DDetector detector(0.03, 0.05);
detector.trainModel(pc);
vector<Pose3DPtr> results;
detector.match(pcTest, results, 1.0/10.0, 0.05);
cout << "Poses: " << endl;
// print the poses
for (size_t i=0; i<results.size(); i++)
{Pose3DPtr pose = results[i];cout << "Pose Result " << i << endl;pose->printPose();
}

OpenCV:Surface Matching 3D相关推荐

  1. Python+OpenCV:Feature Matching + Homography to find Objects

    Python+OpenCV:Feature Matching + Homography to find Objects ######################################## ...

  2. python或anaconda下安装opencv提示Error:No matching distribution found for opencv

    python或anaconda下安装opencv提示Error:No matching distribution found for opencv 错误提示: ERROR: Could not fin ...

  3. Python+OpenCV:特征匹配(Feature Matching)

    Python+OpenCV:特征匹配(Feature Matching) Basics of Brute-Force Matcher Brute-Force matcher is simple. It ...

  4. Python+OpenCV:模板匹配(Template Matching)

    Python+OpenCV:模板匹配(Template Matching) Template Matching with Single Objects ######################## ...

  5. Python+OpenCV:立体图像深度图(Depth Map from Stereo Images)

    Python+OpenCV:立体图像深度图(Depth Map from Stereo Images) 理论 If we have two images of same scene, we can g ...

  6. Python+OpenCV:对极几何(Epipolar Geometry)

    Python+OpenCV:对极几何(Epipolar Geometry) 理论 When we take an image using pin-hole camera, we loose an im ...

  7. PanoNet3D:一种3D目标检测方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉联盟 AI博士笔记系列推荐 周志华<机器 ...

  8. OpenCV使用Orbbec Astra 3D相机

    OpenCV使用Orbbec Astra 3D相机 使用Orbbec Astra 3D相机 介绍 安装说明 代码 使用Orbbec Astra 3D相机 介绍 本教程专门针对Orbbec 3D相机的A ...

  9. Python+OpenCV:图像修复(Image Inpainting)

    Python+OpenCV:图像修复(Image Inpainting) 理论 Most of you will have some old degraded photos at your home ...

最新文章

  1. linux hadoop etc目录,题目Linux平台下Hadoop的安装配置
  2. 掌握 PHP 中的正则表达式 二
  3. C语言学习之分别用if和switch编程,输入0-100分成绩,输出相应的成绩档次。
  4. golang协程进行同步方法
  5. WPS演示中万花筒效果的实现
  6. linux查看修改环境变量日志,linux查看和修改PATH环境变量的方法
  7. 使用BeetleX访问redis服务
  8. [Github项目推荐] 机器学习 Python 知识点速查表
  9. python语言浮点数可以不带小数部分吗_python 浮点数四舍五入需要注意的地方
  10. 清华大学数学教授吐槽不会做孙子的小学奥数:这学的不是数学,是戏法
  11. linux 双网卡 双交换机,linux双网卡bond及交换机配置
  12. html5中加入音频,在H5场景中插入自定义音频和视频(任意画面)
  13. transform 动画效果
  14. 戴爾新電腦走上時尚路線
  15. [Java][Liferay] 模拟用户
  16. Javascript特效:简单日历
  17. ntldr is missing什么意思应该如何解决
  18. 计算机开机太慢,为什么电脑开机很慢
  19. Matlab闪退打不开解决方法
  20. 如何修改apk服务器,如何修改apk服务器地址

热门文章

  1. 聚类分析与相关算法(Kmeans等)详解
  2. OpenJdk7编译
  3. scp传输文件,自动填充密码
  4. 公用技术——设计模式19——行为型模式——备忘录模式——待补充
  5. ES6 系列之 Babel 是如何编译 Class 的(上)
  6. PATH and LDFLAGS and CFLAGS
  7. 2008年1月19日 微软(北京).NET俱乐部 线下休闲活动-滑雪
  8. 用 chown 和 chmod 修改目录所属用户及权限
  9. 利用Crawlspider爬取腾讯招聘数据(全站,深度)
  10. Centos 安装新python