资源简介
采用SIFT和RANSAC算法完成特征点的匹配和筛选,并求出物体的变换矩阵,通过变换矩阵计算出物体的边界。
代码片段和文件信息
#include “sift.h“
#include “my_function.h“
#include
#include
#include “math.h“
//#include
using namespace std;
class CvModelEstimator2
{
public:
CvModelEstimator2(int _modelPoints CvSize _modelSize int _maxBasicSolutions);
virtual ~CvModelEstimator2();
virtual int runKernel( const CvMat* m1 const CvMat* m2 CvMat* model )=0;
virtual bool runLMeDS( const CvMat* m1 const CvMat* m2 CvMat* model
CvMat* mask double confidence=0.99 int maxIters=2000 );
virtual bool runRANSAC( const CvMat* m1 const CvMat* m2 CvMat* model
CvMat* mask double threshold
double confidence=0.99 int maxIters=2000 );
virtual bool refine( const CvMat* const CvMat* CvMat* int ) { return true; }
virtual void setSeed( int64 seed );
protected:
virtual void computeReprojError( const CvMat* m1 const CvMat* m2
const CvMat* model CvMat* error ) = 0;
virtual int findInliers( const CvMat* m1 const CvMat* m2
const CvMat* model CvMat* error
CvMat* mask double threshold );
virtual bool getSubset( const CvMat* m1 const CvMat* m2
CvMat* ms1 CvMat* ms2 int maxAttempts=1000 );
virtual bool checkSubset( const CvMat* ms1 int count );
CvRNG rng;
int modelPoints;
CvSize modelSize;
int maxBasicSolutions;
bool checkPartialSubsets;
};
class CvFMEstimator : public CvModelEstimator2
{
public:
CvFMEstimator( int _modelPoints );
virtual int runKernel( const CvMat* m1 const CvMat* m2 CvMat* model );
virtual int run7Point( const CvMat* m1 const CvMat* m2 CvMat* model );
virtual int run8Point( const CvMat* m1 const CvMat* m2 CvMat* model );
protected:
virtual void computeReprojError( const CvMat* m1 const CvMat* m2
const CvMat* model CvMat* error );
};
CV_IMPL void cvConvertPointsHomogeneous( const CvMat* src CvMat* dst )
{
Ptr temp denom;
int i s_count s_dims d_count d_dims;
CvMat _src _dst _ones;
CvMat* ones = 0;
if( !CV_IS_MAT(src) )
CV_Error( !src ? CV_StsNullPtr : CV_StsBadArg
“The input parameter is not a valid matrix“ );
if( !CV_IS_MAT(dst) )
CV_Error( !dst ? CV_StsNullPtr : CV_StsBadArg
“The output parameter is not a valid matrix“ );
if( src == dst || src->data.ptr == dst->data.ptr )
{
if( src != dst && (!CV_ARE_TYPES_EQ(src dst) || !CV_ARE_SIZES_EQ(srcdst)) )
CV_Error( CV_StsBadArg “Invalid inplace operation“ );
return;
}
if( src->rows > src->cols )
{
if( !((src->cols > 1) ^ (CV_MAT_CN(src->type) > 1)) )
CV_Error( CV_StsBadSize “Either the number of channels or columns
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 119361 2012-04-28 21:07 sift_RANSAC\desc
文件 44695552 2015-07-16 15:48 sift_RANSAC\ipch\sift-d07782ae\sift-bea1e15c.ipch
文件 117 2012-04-28 21:46 sift_RANSAC\readme.txt
文件 55296 2015-07-16 17:47 sift_RANSAC\Release\sift.exe
文件 1502208 2015-07-16 17:47 sift_RANSAC\Release\sift.pdb
文件 16303 2015-06-02 16:55 sift_RANSAC\sift\copy.cpp
文件 39694 2015-03-06 09:59 sift_RANSAC\sift\desc
文件 1774114 2015-03-06 17:20 sift_RANSAC\sift\desc
文件 2768315 2015-03-17 10:20 sift_RANSAC\sift\desc
文件 17185 2015-07-16 17:54 sift_RANSAC\sift\main.cpp
文件 31652 2015-07-15 16:31 sift_RANSAC\sift\my_function.cpp
文件 3812 2015-07-09 10:40 sift_RANSAC\sift\my_function.h
文件 889 2004-04-28 05:21 sift_RANSAC\sift\README
文件 16242 2015-07-16 17:47 sift_RANSAC\sift\Release\cl.command.1.tlog
文件 585090 2015-07-16 17:47 sift_RANSAC\sift\Release\CL.read.1.tlog
文件 14188 2015-07-16 17:47 sift_RANSAC\sift\Release\CL.write.1.tlog
文件 1771187 2015-06-02 16:57 sift_RANSAC\sift\Release\copy.obj
文件 14642 2015-07-16 17:47 sift_RANSAC\sift\Release\li
文件 31736 2015-07-16 17:47 sift_RANSAC\sift\Release\li
文件 2 2015-07-16 17:47 sift_RANSAC\sift\Release\li
文件 4590 2015-07-16 17:47 sift_RANSAC\sift\Release\li
文件 2 2015-07-16 17:47 sift_RANSAC\sift\Release\li
文件 1895034 2015-07-16 17:47 sift_RANSAC\sift\Release\main.obj
文件 3382 2015-07-16 17:47 sift_RANSAC\sift\Release\mt.command.1.tlog
文件 4966 2015-07-16 17:47 sift_RANSAC\sift\Release\mt.read.1.tlog
文件 1990 2015-07-16 17:47 sift_RANSAC\sift\Release\mt.write.1.tlog
文件 1883005 2015-07-15 16:31 sift_RANSAC\sift\Release\my_function.obj
文件 381 2015-07-16 17:47 sift_RANSAC\sift\Release\sift.exe.intermediate.manifest
文件 51 2015-07-16 17:47 sift_RANSAC\sift\Release\sift.lastbuildstate
文件 4866 2015-07-16 17:47 sift_RANSAC\sift\Release\sift.log
............此处省略28个文件信息
相关资源
- 事务处理方面的经典教材Transaction P
- Transaction Processing_ Concepts and Technique
- 基于RANSAC算法的贝赛尔曲线拟合
- OPENCV实现ORB/SURF/SIFT + RANSAC 图像自动拼
- RANSAC算法剔除匹配误配点原理
- 论文研究-SIFT和改进的RANSAC算法在图像
- IEEE Transactions Latex Template
- harris+ncc+ransac
- IEEEtransaction模板(latex)
- harris角点
- Programming with Transactions SSD7Programming
- requires \“org.eclipse.emf.transaction 1.4.0
- Ransac算法
- sift、surf、sift+ransac方法影像匹配代码
- IEEE transaction 模板
- RANSAC&OLS
- TCPIP Illustrated Volume 3 - TCP for Transacti
- OpenCV3.0实现SIFT特征提取+RANSAC剔除误匹
- 基于SURF的RANSAC图像细配准
- RANSAC 提纯算法
评论
共有 条评论