自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jackon的专栏

书写程序人生

  • 博客(0)
  • 资源 (36)
  • 收藏
  • 关注

空空如也

ASIFT+OpenCV图像特征匹配实战 - VC工程源码

ASIFT+OpenCV图像特征匹配实战VC工程源码 OpenCV包含头文件: #include "cv.h" #include "highgui.h" #include "cxcore.h" 核心代码如下: if (!m_pImage1||!m_pImage2) { AfxMessageBox("please,select 2 images!"); return; } UpdateData(TRUE); CvSize sz1 = cvSize(m_pImage1->width,m_pImage1->height); CvSize sz2 = cvSize(m_pImage2->width,m_pImage2->height); CvScalar s; IplImage *gimg1 = cvCreateImage(sz1,IPL_DEPTH_8U,1); cvCvtColor(m_pImage1,gimg1,CV_BGR2GRAY); IplImage *gimg2 = cvCreateImage(sz2,IPL_DEPTH_8U,1); cvCvtColor(m_pImage2,gimg2,CV_BGR2GRAY); size_t w1, h1; w1 = gimg1->width; h1 = gimg1->height; float * iarr1 = new float[w1*h1]; for(int i=0;i<h1;i++) { for(int j=0;j<w1;j++) { s=cvGet2D(gimg1,i,j); iarr1[i*w1+j] = s.val[0]; } } vector ipixels1(iarr1, iarr1 + w1 * h1); delete [] iarr1; size_t w2, h2; w2 = gimg2->width; h2 = gimg2->height; float * iarr2 = new float[w2*h2]; for(int i=0;i<h2;i++) { for(int j=0;j<w2;j++) { s=cvGet2D(gimg2,i,j); iarr2[i*w2+j] = s.val[0]; } } vector ipixels2(iarr2, iarr2 + w2 * h2); delete [] iarr2; float wS = IM_X; float hS = IM_Y; float zoom1=0, zoom2=0; int wS1=0, hS1=0, wS2=0, hS2=0; vector ipixels1_zoom, ipixels2_zoom; if (!m_bOrininal) { if (m_lWidth==0 || m_lHeight == 0) return; wS = m_lWidth; hS = m_lHeight; float InitSigma_aa = 1.6; float fproj_p, fproj_bg; char fproj_i; float *fproj_x4, *fproj_y4; int fproj_o; fproj_o = 3; fproj_p = 0; fproj_i = 0; fproj_bg = 0; fproj_x4 = 0; fproj_y4 = 0; float areaS = wS * hS; // Resize image 1 float area1 = w1 * h1; zoom1 = sqrt(area1/areaS); wS1 = (int) (w1 / zoom1); hS1 = (int) (h1 / zoom1); int fproj_sx = wS1; int fproj_sy = hS1; float fproj_x1 = 0; float fproj_y1 = 0; float fproj_x2 = wS1; float fproj_y2 = 0; float fproj_x3 = 0; float fproj_y3 = hS1; /* Anti-aliasing filtering along vertical direction */ if ( zoom1 > 1 ) { float sigma_aa = InitSigma_aa * zoom1 / 2; GaussianBlur1D(ipixels1,w1,h1,sigma_aa,1); GaussianBlur1D(ipixels1,w1,h1,sigma_aa,0); } // simulate a tilt: subsample the image along the vertical axis by a factor of t. ipixels1_zoom.resize(wS1*hS1); fproj (ipixels1, ipixels1_zoom, w1, h1, &fproj;_sx, &fproj;_sy, &fproj;_bg, &fproj;_o, &fproj;_p, &fproj;_i , fproj_x1 , fproj_y1 , fproj_x2 , fproj_y2 , fproj_x3 , fproj_y3, fproj_x4, fproj_y4); // Resize image 2 float area2 = w2 * h2; zoom2 = sqrt(area2/areaS); wS2 = (int) (w2 / zoom2); hS2 = (int) (h2 / zoom2); fproj_sx = wS2; fproj_sy = hS2; fproj_x2 = wS2; fproj_y3 = hS2; /* Anti-aliasing filtering along vertical direction */ if ( zoom1 > 1 ) { float sigma_aa = InitSigma_aa * zoom2 / 2; GaussianBlur1D(ipixels2,w2,h2,sigma_aa,1); GaussianBlur1D(ipixels2,w2,h2,sigma_aa,0); } // simulate a tilt: subsample the image along the vertical axis by a factor of t. ipixels2_zoom.resize(wS2*hS2); fproj (ipixels2, ipixels2_zoom, w2, h2, &fproj;_sx, &fproj;_sy, &fproj;_bg, &fproj;_o, &fproj;_p, &fproj;_i , fproj_x1 , fproj_y1 , fproj_x2 , fproj_y2 , fproj_x3 , fproj_y3, fproj_x4, fproj_y4); } else { ipixels1_zoom.resize(w1*h1); ipixels1_zoom = ipixels1; wS1 = w1; hS1 = h1; zoom1 = 1; ipixels2_zoom.resize(w2*h2); ipixels2_zoom = ipixels2; wS2 = w2; hS2 = h2; zoom2 = 1; } int num_of_tilts1 = m_lTilts1; int num_of_tilts2 = m_lTilts2; int verb = 0; // Define the SIFT parameters siftPar siftparameters; default_sift_parameters(siftparameters); vector< vector > keys1; vector< vector > keys2; int num_keys1=0, num_keys2=0; SetWindowText("Computing keypoints on the two images..."); CString str1,str2; time_t tstart, tend1,tend2; tstart = time(0); DWORD dstart = GetTickCount(); num_keys1 = compute_asift_keypoints(ipixels1_zoom, wS1, hS1, num_of_tilts1, verb, keys1, siftparameters); tend1 = time(0); m_lKeyNum1 = num_keys1; UpdateData(FALSE); str1.Format("Img1 Keypoints computation accomplished in %f s",difftime(tend1, tstart)); SetWindowText(str1); num_keys2 = compute_asift_keypoints(ipixels2_zoom, wS2, hS2, num_of_tilts2, verb, keys2, siftparameters); tend2 = time(0); m_lKeyNum2 = num_keys2; UpdateData(FALSE); str2.Format("Img2 Keypoints computation accomplished in %f s ,Matching the keypoints...",difftime(tend2, tstart)); SetWindowText(str2); //// Match ASIFT keypoints int num_matchings; matchingslist matchings; tstart = time(0); num_matchings = compute_asift_matches(num_of_tilts1, num_of_tilts2, wS1, hS1, wS2, hS2, verb, keys1, keys2, matchings, siftparameters); tend1 = time(0); DWORD dSpan = GetTickCount() - dstart; cout << "Keypoints matching accomplished in " << difftime(tend1, tstart) << " seconds." << endl; str2.Format("Keypoints matching accomplished in %f s",difftime(tend1, tstart)); SetWindowText(str2); m_lMatches = num_matchings; UpdateData(FALSE); str1.Format("Total time used:%d ms",dSpan); AfxMessageBox(str1); cvRelease((void**)&gimg1;); cvRelease((void**)&gimg2;); 参考网址:http://www.ipol.im/pub/art/2011/my-asift/

2012-10-16

叹为观止的软件文档编写指南(软件工程全套文档模板)

系统软件需求分析报告文档模板 概要设计报告文档模板 详细设计报告文档模板 详细设计报告文档模板 软件测试

2011-11-23

关于代码重构的好书籍(吐血推荐)

代码重构 软件复用 设计模式 架构 代码重构 软件复用 设计模式 架构 代码重构 软件复用 设计模式 架构

2011-09-13

VC++图形设计基础教程

MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程MF绘图教程

2010-12-23

用VC++打造自己的资源管理器

练习cteectrl 和 clistctrl的用法 打造资源管理器 非常好的实例

2010-12-23

SqlServer2008详解

SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解SqlServer2008详解

2010-12-16

Windows MFC编程详解(共20章内容)

MFC编程详解MFC编程详解 MFC编程详解MFC编程详解

2010-12-15

xml文件解析资料汇总(个人收集)

包括xml基础知识,课件,常见的解析类库的类库实例,技巧文摘学习指南等等,包括CMarkUp、tinyxml...

2010-12-15

MFC深入浅出-不错的学习mfc的书籍

图全 不错的一本学习MFC的资料 图全 不错的一本学习MFC的资料

2010-12-15

屏幕取词程序VC源代码

屏幕取词程序VC源码,有没有用下了就知道了

2010-12-15

编程高手之路系列教程汇总(完整版)

分虽然要的高点但绝对物有所值,材料非常全面非常系统 VB、C、C++、API、批处理等...

2010-12-14

如何成为优秀的软件人才

分析IT界的隐含的不为人知的秘密;解读中国程序员的悲哀,寻求软件人才的突破......

2010-12-14

软件人才管理的艺术(值得一读)

软件人才管理的艺术 软件人才管理的艺术 软件人才管理的艺术 软件人才管理的艺术

2010-12-14

sqlserver2008基础教程

非常好的基础教程,适合对于sqlserver2008进行全面系统的学习,或者温习。

2010-12-13

[SQL SERVER] 跨服务器查询详解

讲述了Sql Server跨服务器查询的N种方法非常实用

2010-12-13

com编程入门(值得收藏)

赵相宁老师的com编程入门 第一第二部分(word版)

2010-12-10

软件架构师应该知道的97件事(英文网页版)

软件架构师应该知道的97件事 软件架构师应该知道的97件事 软件架构师应该知道的97件事

2010-12-10

CMarkUp类使用方法

CMarkUp类是操作xml文件的非常方便的一个MFC封装类,此文非常详细的阐述了它的用法,非常实用。

2010-12-10

C++预编译技术详解(叹为观止)

非常详细系统地阐述了C++的预编译技术 预编译命令,结合VC6.0编译器进行了讲解

2010-12-08

C++指针详解(非常全非常系统)

指针ptr是一个int*类型的指针,它指向的类型是int。它指向的地址就是s的首地址。在32位程序中,s占一个字节,int类型占四个字节。最后一条语句不但改变了s所占的一个字节,还把和s相临的高地址方向的三个字节也改变了。这三个字节是干什么的?只有编译程序知道,而写程序的人是不太可能知道的。也许这三个字节里存储了非常重要的数据,也许这三个字节里正好是程序的一条代码,而由于你对指针的马虎应用,这三个字节的值被改变了,这会造成崩溃性的错误。 让我们再来看一例

2010-12-08

VC++提取网页中全部URL

VC++提取网页中全部URL VC++提取网页中全部URLVC++提取网页中全部URLVC++提取网页中全部URLVC++提取网页中全部URLVC++提取网页中全部URLVC++提取网页中全部URLVC++提取网页中全部URL

2010-11-29

VC++ 分析word文档的简单程序

VC++ 分析 word文档 的 简单程序 VC++ 分析 word文档 的 简单程序 读取word文档内容 显示出来 读取字体颜色 字号,将读取内容保存到文本文件,

2010-11-29

vc操作Word例程

VC++读写word文档 办公自动化编程相关 文档批处理等等

2010-11-29

全排列VC源代码,仅供参考

全排列 VC 源代码 全排列 VC 源代码 全排列 VC 源代码

2010-11-26

小毛驴学习指南(CHM格式,里面含有源码演示)

非常好的学习xml的入门书材料,CHM格式,里面含有源码演示,收藏并分享。

2010-11-23

VC++源码保存网页为MHT文件(包含图片及其它资源)

保存网页文件为mht文件

2010-11-10

rfc2616-HTTP1.1协议

rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rfc2616rf

2010-11-09

微软英汉双解计算机百科辞典.pdf

微软英汉双解计算机百科辞典.pdf 微软英汉双解计算机百科辞典.pdf 微软英汉双解计算机百科辞典.pdf

2010-11-09

C++判断文档是否加密

vc对word进行操作 判断word文档是否加密

2010-07-27

dsoframer.ocx

用于ole ,office办公软件,放在控件或者网页中,需要注册:在命令行中输入:regsvr32 dsoframer.ocx ,注册成功后再注册,regsvr32 ole32.dll 即可。另外,再送上dsoframer.ocx 的vc源代码,下吧!不会亏得!

2010-07-26

王爽《汇编语言》(第二版)(下)

学习汇编语言的好资料,废话少说,赶快下吧!

2010-07-26

lcc编译器,非常好用的C语言编译器

lcc 编译器 c c++,非常好用的C语言编译器,绝对可用,放心下载

2009-09-11

very useful 数据库原理课件

很有用的数据库课件 ,简要介绍数据库的基本原理,对数据库的学习具有提纲挈领的作用,能够引导你对数据库原理的认识。

2009-08-19

软件开发标准文档(超级有用)

用于整个软件开发过程的一系列文档 可能会对你有所帮助

2009-08-13

绝好数字图像处理PPT

不下会后悔的学习数字图像处理的的课件 推荐等级:*****

2008-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除