資源簡(jiǎn)介
本程序是基于vc6.0的MFC界面,運(yùn)用opencv庫,實(shí)現(xiàn)了surf提取特征點(diǎn)及匹配,匹配效果極好,調(diào)試通過,可以直接運(yùn)行

代碼片段和文件信息
#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;
}
//計(jì)算箱式濾波器在x、y、xy方向上的對(duì)高斯二階偏導(dǎo)的近似Dxx,Dyy,Dxy,參數(shù)依次為原始圖像的積分圖像、箱式濾波器、積分圖像的列數(shù)
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? {
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;
}
//計(jì)算新的箱式濾波器來近似高斯核,參數(shù)依次為濾波器初始各矩形框坐標(biāo)、濾波器新的各矩形框坐標(biāo)、舊濾波器大小、新濾波器的大小
CV_INLINE?void?icvResizeHaarPattern(?int*?t_sint*?t_dint?OldSizeint?NewSize?)
{
int?n?=?t_d[0]?=?t_s[0];
for?(?int?k?=?0;?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區(qū)別開來了//////////////////////
?string?filename(“G:\\surf響應(yīng)信息.txt“);
?ofstream?ofs(filename.c_str());
///////////////////////////////////////////////////////////////////////////////////////
?//計(jì)算關(guān)鍵點(diǎn)坐標(biāo),輸入原始圖像的積分圖像,輸出關(guān)鍵點(diǎn)的坐標(biāo),參數(shù)依次為原始圖像的積分圖像,內(nèi)存空間,進(jìn)行極大值抑制的參數(shù)
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?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論