SIFT+RANSAC识别物体,并标注边界
采用SIFT和RANSAC算法完成特征点的匹配和筛选,并求出物体的变换矩阵,通过变换矩阵计算出物体的边界。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 119361 2012-04-28 21:07 sift_RANSACdescriptor.txt
文件 44695552 2015-07-16 15:48 sift_RANSACipchsift-d07782aesift-bea1e15c.ipch
文件 117 2012-04-28 21:46 sift_RANSAC
eadme.txt
文件 55296 2015-07-16 17:47 sift_RANSACReleasesift.exe
文件 1502208 2015-07-16 17:47 sift_RANSACReleasesift.pdb
文件 16303 2015-06-02 16:55 sift_RANSACsiftcopy.cpp
文件 39694 2015-03-06 09:59 sift_RANSACsiftdescriptor.txt
文件 1774114 2015-03-06 17:20 sift_RANSACsiftdescriptor_1.txt
文件 2768315 2015-03-17 10:20 sift_RANSACsiftdescriptor_2.txt
文件 17185 2015-07-16 17:54 sift_RANSACsiftmain.cpp
文件 31652 2015-07-15 16:31 sift_RANSACsiftmy_function.cpp
文件 3812 2015-07-09 10:40 sift_RANSACsiftmy_function.h
文件 889 2004-04-28 05:21 sift_RANSACsiftREADME
文件 16242 2015-07-16 17:47 sift_RANSACsiftReleasecl.command.1.tlog
文件 585090 2015-07-16 17:47 sift_RANSACsiftReleaseCL.read.1.tlog
文件 14188 2015-07-16 17:47 sift_RANSACsiftReleaseCL.write.1.tlog
文件 1771187 2015-06-02 16:57 sift_RANSACsiftReleasecopy.obj
文件 14642 2015-07-16 17:47 sift_RANSACsiftReleaselink.command.1.tlog
文件 31736 2015-07-16 17:47 sift_RANSACsiftReleaselink.read.1.tlog
文件 2 2015-07-16 17:47 sift_RANSACsiftReleaselink.read.2.tlog
文件 4590 2015-07-16 17:47 sift_RANSACsiftReleaselink.write.1.tlog
文件 2 2015-07-16 17:47 sift_RANSACsiftReleaselink.write.2.tlog
文件 1895034 2015-07-16 17:47 sift_RANSACsiftReleasemain.obj
文件 3382 2015-07-16 17:47 sift_RANSACsiftReleasemt.command.1.tlog
文件 4966 2015-07-16 17:47 sift_RANSACsiftReleasemt.read.1.tlog
文件 1990 2015-07-16 17:47 sift_RANSACsiftReleasemt.write.1.tlog
文件 1883005 2015-07-15 16:31 sift_RANSACsiftReleasemy_function.obj
文件 381 2015-07-16 17:47 sift_RANSACsiftReleasesift.exe.intermediate.manifest
文件 51 2015-07-16 17:47 sift_RANSACsiftReleasesift.lastbuildstate
文件 4866 2015-07-16 17:47 sift_RANSACsiftReleasesift.log
............此处省略28个文件信息
#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_RANSACdesc
文件 44695552 2015-07-16 15:48 sift_RANSACipchsift-d07782aesift-bea1e15c.ipch
文件 117 2012-04-28 21:46 sift_RANSAC
eadme.txt
文件 55296 2015-07-16 17:47 sift_RANSACReleasesift.exe
文件 1502208 2015-07-16 17:47 sift_RANSACReleasesift.pdb
文件 16303 2015-06-02 16:55 sift_RANSACsiftcopy.cpp
文件 39694 2015-03-06 09:59 sift_RANSACsiftdesc
文件 1774114 2015-03-06 17:20 sift_RANSACsiftdesc
文件 2768315 2015-03-17 10:20 sift_RANSACsiftdesc
文件 17185 2015-07-16 17:54 sift_RANSACsiftmain.cpp
文件 31652 2015-07-15 16:31 sift_RANSACsiftmy_function.cpp
文件 3812 2015-07-09 10:40 sift_RANSACsiftmy_function.h
文件 889 2004-04-28 05:21 sift_RANSACsiftREADME
文件 16242 2015-07-16 17:47 sift_RANSACsiftReleasecl.command.1.tlog
文件 585090 2015-07-16 17:47 sift_RANSACsiftReleaseCL.read.1.tlog
文件 14188 2015-07-16 17:47 sift_RANSACsiftReleaseCL.write.1.tlog
文件 1771187 2015-06-02 16:57 sift_RANSACsiftReleasecopy.obj
文件 14642 2015-07-16 17:47 sift_RANSACsiftReleaseli
文件 31736 2015-07-16 17:47 sift_RANSACsiftReleaseli
文件 2 2015-07-16 17:47 sift_RANSACsiftReleaseli
文件 4590 2015-07-16 17:47 sift_RANSACsiftReleaseli
文件 2 2015-07-16 17:47 sift_RANSACsiftReleaseli
文件 1895034 2015-07-16 17:47 sift_RANSACsiftReleasemain.obj
文件 3382 2015-07-16 17:47 sift_RANSACsiftReleasemt.command.1.tlog
文件 4966 2015-07-16 17:47 sift_RANSACsiftReleasemt.read.1.tlog
文件 1990 2015-07-16 17:47 sift_RANSACsiftReleasemt.write.1.tlog
文件 1883005 2015-07-15 16:31 sift_RANSACsiftReleasemy_function.obj
文件 381 2015-07-16 17:47 sift_RANSACsiftReleasesift.exe.intermediate.manifest
文件 51 2015-07-16 17:47 sift_RANSACsiftReleasesift.lastbuildstate
文件 4866 2015-07-16 17:47 sift_RANSACsiftReleasesift.log
............此处省略28个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)