• 大小: 6.69MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-13
  • 语言: C/C++
  • 标签: SURF  Opencv1.0  vc6.0  

资源简介

本程序是基于vc6.0的MFC界面,运用opencv库,实现了surf提取特征点及匹配,匹配效果极好,调试通过,可以直接运行

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “cvsurf.h“
//#include 
#include 
using namespace std;

#define ScanOctave (3)
#define FilterScale (4)
#define SamplingStep (1)

CV_INLINE CvSURFPoint cvSURFPoint( int x int y int laplacian int size int octave int scale )
{
    CvSURFPoint p;
    p.x = x;
    p.y = y;
    p.laplacian = laplacian;
    p.size = size;
    p.octave = octave;
    p.scale = scale;
    return p;
}
//计算箱式滤波器在x、y、xy方向上的对高斯二阶偏导的近似Dxx,Dyy,Dxy,参数依次为原始图像的积分图像、箱式滤波器、积分图像的列数
CV_INLINE double icvCalHaarPattern( int* originint* tint widthStep )
{
double d = 0;
int *p0 = 0 *p1 = 0 *p2 = 0 *p3 = 0;
int n = t[0];
for ( int k = 0; k < n; k++ )
{
p0 = origin+t[1]+t[2]*widthStep;
p1 = origin+t[1]+t[4]*widthStep;
p2 = origin+t[3]+t[2]*widthStep;
p3 = origin+t[3]+t[4]*widthStep;
d += (double)((*p3-*p2-*p1+*p0)*t[6])/(double)(t[5]);
t+=6;
}
return d;
}
//计算新的箱式滤波器来近似高斯核,参数依次为滤波器初始各矩形框坐标、滤波器新的各矩形框坐标、旧滤波器大小、新滤波器的大小
CV_INLINE void icvResizeHaarPattern( int* t_sint* t_dint OldSizeint NewSize )
{
int n = t_d[0] = t_s[0];
for ( int k = 0; k < n; k++ )
{
t_d[1] = t_s[1]*NewSize/OldSize;
t_d[2] = t_s[2]*NewSize/OldSize;
t_d[3] = t_s[3]*NewSize/OldSize;
t_d[4] = t_s[4]*NewSize/OldSize;
t_d[5] = (t_d[3]-t_d[1]+1)*(t_d[4]-t_d[2]+1);
t_d[6] = t_s[6];
t_d+=6;
t_s+=6;
}
}

template
CV_INLINE int
icvSign( Number x )
{
return (( x < 0 ) ? -1 : 1);
}

///////////////////源文件输出文档txt与Doc文档里的输出txt区别开来了//////////////////////
 string filename(“G:\\surf响应信息.txt“);
 ofstream ofs(filename.c_str());
///////////////////////////////////////////////////////////////////////////////////////

 //计算关键点坐标,输入原始图像的积分图像,输出关键点的坐标,参数依次为原始图像的积分图像,内存空间,进行极大值抑制的参数
CvSeq* icvFastHessianDetector( const CvMat* sumCvMemStorage* storagedouble quality )
{
double t = (double)cvGetTickCount();
CvSeq* points = cvCreateSeq( 0 sizeof(CvSeq) sizeof(CvSURFPoint) storage );
CvMat* hessians[ScanOctave*(FilterScale+2)];
CvMat* traces[ScanOctave*(FilterScale+2)];
int size size_cache[ScanOctave*(FilterScale+2)];
int scale scale_cache[ScanOctave*(FilterScale+2)];
double *hessian_ptr *hessian_ptr_cache[ScanOctave*(FilterScale+2)];
double *trace_ptr *trace_ptr_cache[ScanOctave*(FilterScale+2)];
int dx_s[] = { 3 0 2 3 7 0 1 3 2 6 7 0 -2 6 2 9 7 0 1 };
int dy_s[] = { 3 2 0 7 3 0 1 2 3 7 6 0 -2 2 6 7 9 0 1 };
int dxy_s[] = { 4 1 1 4 4 0 1 5 1 8 4 0 -1 1 5 4 8 0 -1 5 5 8 8 0 1 };
int dx_t[] = { 3 0 2 3 7 0 1 3 2 6 7 0 -2 6 2 9 7 0 1 };
int dy_t[] = { 3 2 0 7 3 0 1 2 3 7 6 0 -2 2 6 7 9 0 1 };
int dxy_t[] = { 4 1 1 4 4 0 1 5 1 8 4 0 -1 1 5 4 8 0 -1 5 5 8 8 0 1 };
double dx = 0 dy = 0 dxy = 0;
int k = 0;
int hessian_rows hessian_rows_cache[ScanOctave*(FilterScale+2)];
int hessian_cols hessian_cols_cache[ScanOctave*(FilterScale+2)];
/* hessian detector */
for ( int o = 0; o < ScanOc

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-03-05 16:50  surf+MFC\
     文件       57208  2011-09-11 21:36  surf+MFC\1.jpg
     文件       97697  2008-04-22 15:35  surf+MFC\book.pgm
     文件       50728  2012-07-03 06:55  surf+MFC\book.png
     文件       22921  2013-02-28 10:23  surf+MFC\cvsurf.cpp
     文件         728  2008-04-24 03:50  surf+MFC\cvsurf.h
     目录           0  2013-03-05 16:49  surf+MFC\Debug\
     文件       60906  2013-02-28 10:23  surf+MFC\Debug\cvsurf.obj
     文件           0  2013-02-28 10:23  surf+MFC\Debug\cvsurf.sbr
     文件     6456320  2013-03-05 16:49  surf+MFC\Debug\lsm.bsc
     文件      159815  2013-03-05 16:49  surf+MFC\Debug\lsm.exe
     文件      477960  2013-03-05 16:49  surf+MFC\Debug\lsm.ilk
     文件       26107  2013-01-15 14:53  surf+MFC\Debug\lsm.obj
     文件     7273884  2013-01-15 14:53  surf+MFC\Debug\lsm.pch
     文件      656384  2013-03-05 16:49  surf+MFC\Debug\lsm.pdb
     文件        7712  2013-03-05 16:49  surf+MFC\Debug\lsm.res
     文件           0  2013-01-15 14:53  surf+MFC\Debug\lsm.sbr
     文件       59010  2013-03-05 16:49  surf+MFC\Debug\lsmDoc.obj
     文件           0  2013-03-05 16:49  surf+MFC\Debug\lsmDoc.sbr
     文件       25653  2013-01-15 14:53  surf+MFC\Debug\lsmView.obj
     文件           0  2013-01-15 14:53  surf+MFC\Debug\lsmView.sbr
     文件       21902  2013-01-15 14:53  surf+MFC\Debug\lsmView2.obj
     文件           0  2013-01-15 14:53  surf+MFC\Debug\lsmView2.sbr
     文件       26426  2013-01-15 14:53  surf+MFC\Debug\MainFrm.obj
     文件           0  2013-01-15 14:53  surf+MFC\Debug\MainFrm.sbr
     文件       19349  2013-01-17 12:56  surf+MFC\Debug\OpenDialog.obj
     文件           0  2013-01-17 12:56  surf+MFC\Debug\OpenDialog.sbr
     文件      105991  2013-01-15 14:53  surf+MFC\Debug\StdAfx.obj
     文件     1369703  2013-01-15 14:53  surf+MFC\Debug\StdAfx.sbr
     文件      648192  2013-03-05 16:49  surf+MFC\Debug\vc60.idb
     文件      536576  2013-03-05 16:49  surf+MFC\Debug\vc60.pdb
............此处省略33个文件信息

评论

共有 条评论