首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MLESAC是RANSAC与OpenCV的集成

MLESAC是RANSAC与OpenCV的集成
EN

Stack Overflow用户
提问于 2014-05-04 05:05:10
回答 1查看 1.9K关注 0票数 3

是否有任何可用的代码来使用MLESAC而不是RANSAC和OpenCV来查找已知对象?

MLESAC应该比RANSAC更健壮。这里提供了一个使用示例:

http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html

EN

回答 1

Stack Overflow用户

发布于 2014-05-05 00:11:00

您可以使用MLESAC (以及PROSAC等)来自PCL库。http://docs.pointclouds.org/trunk/a02954.html我不使用PCL,所以不能举例说明。

我使用的是Karel Lebeda http://cmp.felk.cvut.cz/software/LO-RANSAC/index.xhtml的LO-RANSAC

代码语言:javascript
复制
int do_lo = 1; //local optimization
unsigned int tent_size = tentatives.size();
double err_threshold = 2.0; //in pixels
double confidence = 0.99;
int max_samples = 100000;//max trials
int inl_limit = 0;//no limit
if (tent_size >= 5)
{
  double H[3*3];
  unsigned stats[3];
  double *u2Ptr = new double[tent_size*6], *u2; u2=u2Ptr;
  typedef unsigned char uchar;
  unsigned char *inl2 = new uchar[tent_size];

  for( int i = 0; i < tentatives.size(); i++ )
    {
      *u2Ptr =  keypoints_object[ tentatives[i].queryIdx ].pt.x;
      u2Ptr++;

      *u2Ptr =  keypoints_object[ tentatives[i].queryIdx ].pt.y;
      u2Ptr++;
      *u2Ptr =  1.;
      u2Ptr++;

      *u2Ptr =   keypoints_scene[ tentatives[i].trainIdx ].pt.x;
      u2Ptr++;

      *u2Ptr =   keypoints_scene[ tentatives[i].trainIdx ].pt.y;
      u2Ptr++;
      *u2Ptr =  1.;
      u2Ptr++;
    }
  ransacH(u2, tent_size, err_threshold*err_threshold, confidence, max_samples, do_lo, , H, inl2,stats);
  for(i=0; i < tent_size; i++)
    if (inl2[i])
      inliers.push_back(good_matches[i]);

  delete[] u2; delete[] inl2;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23449823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档