11 2011 档案
【转载】SURF算法源码分析(草稿)
摘要:原文:http://blog.sina.com.cn/s/blog_916b71bb0100vnxl.htmlSURF是继SIFT之后很有影响力的算法。从作者论文的实验上看,速度比SIFT提高了5~10倍,准确度有几个百分点的提升。SURF算法的速度提升极其明显,个人认为这个是最大的卖点。速度提升的关键,就是使用了积分图。积分图是个好东西,最成熟的Haar特征人脸检测算法也是使用积分图。OpenCV 1.1提供了SURF算法的实现,性能固然不错,只是实现的不太容易看懂。在开发工作中有个原则,就是不要写太复杂的代码,否则调试起来很麻烦。在这里,我选择的是OpenSURF实现,它的结构清晰,也是基 阅读全文
posted @ 2011-11-29 11:33 Ming明、 阅读(4373) 评论(1) 推荐(2) 编辑
【转载】SIFT算法分析(草稿)
摘要:原文:http://blog.sina.com.cn/s/blog_916b71bb0100upwx.html特征提取在CV(computer vision)领域非常重要。SIFT是非常出名的特征提取算法,它来自论文IJCV'04的“Distinctive image features from scale-invariant keypoints”,在scholar.google.com上查到的引用次数一万多次,很高了!我准备在这个帖子里,根据这篇论文和SIFT算法的一个开源实现,详细描述SIFT算法。本文中的SIFT实现在http://blogs.oregonstate.edu/he 阅读全文
posted @ 2011-11-29 11:31 Ming明、 阅读(1276) 评论(0) 推荐(0) 编辑
【转载】面试_现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
摘要:转自:http://blog.csdn.net/kittyjie/article/details/4732415问题:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。分析:这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。先从最简装的一块石头考虑,很显然,X(1,1) = 1X(1,2) = 2X(1,3) = 3.X(1,i) = i再考虑二块石头,显而易见X(2,1) = 1对于X(2,2),我们可这样考虑,当我们扔第一次后,有两种可能:破和不破.如果石 阅读全文
posted @ 2011-11-28 20:22 Ming明、 阅读(1326) 评论(0) 推荐(0) 编辑
卷积和积分运算
摘要:先看到卷积运算,知道了卷积就是把模版与图像对应点相乘再相加,把最后的结果代替模版中心点的值的一种运算。但是,近来又看到了积分图像的定义,立马晕菜,于是整理一番,追根溯源一下吧。1 卷积图像1.1 源头首先找到了一篇讲解特别好的博文,原文为:卷积 贴过正文来看:--------------------... 阅读全文
posted @ 2011-11-25 11:30 Ming明、 阅读(44114) 评论(8) 推荐(5) 编辑
Surf算法
摘要:前期看了许久的sift算法,总算是有些了解了过程。对于具体算法的一些实现,仍旧是不太明白。对于kd树的建立,和匹配依旧是自己不想写算法,而是利用已经写好的算法做个小实验。vlfeat算法,有实现好的带有匹配的sift算法吗?有知道的童鞋们吗?告知~正文开始:surf借鉴了sift中简化近似的思想,将DOH中的高斯二阶微分模板进行了近似简化,使得模板对图像的滤波只需要进行几个简单的加减法运算,并且,这种运算与滤波模板的尺寸有关。实验证明surf算法较sift算法在运算速度上要快3倍左右。1 积分图像surf算法中要用到积分图像的概念。借助积分图像,图像与高斯二阶微分模板的滤波转化为对积分图像的加 阅读全文
posted @ 2011-11-24 19:13 Ming明、 阅读(8983) 评论(1) 推荐(1) 编辑
《程序员求职成功路》之字符串__strtok函数相关理解【转载】
摘要:程序员求职成功路这本书,不错。其中第三章数据结构与算法,介绍了几种操作字符串的函数,面试时让自己实现撒:char* __cdecl strtok (char*string,constchar* control){unsigned char*str;const unsigned char*ctrl = control;unsigned char map[32];int count;#ifdef _MT_ptiddata ptd = _getptd();#else /* _MT */staticchar*nextoken;#endif /* _MT *//* Clear control map * 阅读全文
posted @ 2011-11-18 21:46 Ming明、 阅读(290) 评论(0) 推荐(0) 编辑
VLFeat——SIFT图像特征提取(VC++实现)【转载】
摘要:由于VLFeat说明文档中只提供了matlab的调用SIFT函数的实例,没有VC++的调用说明,本文是根据实验,在VS2010环境下,结合opencv开源库计算图像的SIFT的描述子,具体实现细节如下所示:1.配置VLFeat环境已经在之前的一篇博文VLFeat-----meansift开源库 中介绍了详细的配置过程,可以参考;2.包含头文件:extern "C"{#include <vl/generic.h>#include <vl/stringop.h>#include <vl/pgm.h>#include <vl/sift.h 阅读全文
posted @ 2011-11-17 21:57 Ming明、 阅读(7818) 评论(0) 推荐(0) 编辑
VLFeat-----mean sift开源库【配置】【转载】
摘要:前段时间,同学介绍说图像识别,你用vlFeat试试吧,效果不错。于是下载下来,怎么搞,都没搞好。那个抑郁了许久。于是把vlfeat扔了,自己研究起sift算法来,除了kd树中最小优先级队列有些疑惑外,算法基本可以自己实现了。但是,导师说效果不够理想。于是重回vlfeat试试。酷毙人生啊。找了这个博客,没想到配置了下,竟然可以跑起来了。当人遭受众多苦难后,人品就真的攒起来了原文为:http://blog.sina.com.cn/s/blog_7c7b71530100to24.html正文如下:The VLFeat open source library implements popular co 阅读全文
posted @ 2011-11-17 21:54 Ming明、 阅读(2583) 评论(3) 推荐(0) 编辑
VS 2008 下安装OpenCV 2.3.0 .【转载】
摘要:本来在vs2008下装了opencv1.0,opencv2.0 现在折腾着要用2.3.很悲惨的鼓捣了半天都不成功,扯皮的很。后来用下面的方法试了试解决了,有点小不同吧,但是具体的忘了。遇到麻烦的童鞋留言吧。原文请看:http://blog.csdn.net/hangyuanbiyesheng/article/details/6660330以下为转来的正文:原来用的是OpenCV 2.0,现在要装OpenCV 2.3,参照VC 2008 Express下安装OpenCV 2.0的标准进行安装。http://www.opencv.org.cn/index.php/VC_2008_Express%E 阅读全文
posted @ 2011-11-17 21:49 Ming明、 阅读(3282) 评论(0) 推荐(0) 编辑
opencv imread
摘要:原文:opencv imread这几天看一个鸟程序,大量使用opencv,无奈之下略微学习一下。从网上找了个最简单的程序,读取并显示图片,竟然不能完成显示任务。然经努力,最终解决问题。代码如下:#include "cv.h"#include "highgui.h"#include <string>#pragma comment(lib, "cv210.lib")#pragma comment(lib, "cxcore210.lib")#pragma comment(lib, "highgui2 阅读全文
posted @ 2011-11-14 12:49 Ming明、 阅读(17594) 评论(1) 推荐(0) 编辑
【转】OpenCV HOGDescriptor 参数图解 .
摘要:原文请看:OpenCV HOGDescriptor 参数图解最近要做图像特征提取,可能要用下HOG特征,所以研究了下OpenCV的HOG描述子。OpenCV中的HOG特征提取功能使用了HOGDescriptor这个类来进行封装,其中也有现成的行人检测的接口。然而,无论是OpenCV官方说明文档还是各个中英文网站目前都没有这个类的使用说明,所以在这里把研究的部分心得分享一下。 首先我们进入HOGDescriptor所在的头文件,看看它的构造函数需要哪些参数。View Code CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,... 阅读全文
posted @ 2011-11-14 12:20 Ming明、 阅读(1888) 评论(0) 推荐(0) 编辑
【转】让任务管理器画出正弦曲线
摘要:题外话:向大师兄讨了《编程之美》,翻看了两页后,赫然发现,喝水时,不小心将水撒到了书上。心情忐忑不敢言语。看到的第一个小问题,就让偶的心纠结着晚上睡不着觉,百思不明,看下文详解。原文请看:让任务管理器画出正弦曲线这是微软亚洲研究院编写的一本书《编程之美》上的第一个例子。效果是让Windows任务管理器的CPU利用率画出一条正弦曲线。下面是效果图:一、原理通过观察,任务管理器里CPU利用率曲线的刷新频率是每秒一次,每次绘制一秒内的平均值,并且和上一个点连起来。如果一秒内0.5秒执行程序,0.5秒休眠,那么这一秒的曲线将位于50%的地方。如果要画出正弦曲线,我们只需要计算出每一秒内曲线上的点的高度 阅读全文
posted @ 2011-11-14 11:21 Ming明、 阅读(1617) 评论(0) 推荐(0) 编辑
堆排序
摘要:1 数据结构(从百度粘贴过来,依旧很乱很乱)数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行 阅读全文
posted @ 2011-11-08 18:46 Ming明、 阅读(507) 评论(0) 推荐(0) 编辑
一种查找中值的方法——Rank_Select
摘要:看Kd树时,建立Kd-tree需要为第split维的值排序,并查找位于正中间的那个数据点。询问了好多同学,他们说,可以首先用堆排序,然后找第(n-1)/2的数。觉得挺有道理。但是,还看到一种方法,就是Rank_Select方法。代码如下:Rank_Select方法static void insertion_sort( double* array, int n ){ double k; int i, j; for( i = 1; i < n; i++ ) { k = array[i]; j = i-1; while( j >= 0... 阅读全文
posted @ 2011-11-08 16:34 Ming明、 阅读(2327) 评论(1) 推荐(0) 编辑
KD Tree
摘要:Kd-树 其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树。举一示例:假设有六个二维数据点 = {(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点位于二维空间中。为了能有效的找到最近邻,Kd-树采用分而治之的思想,即将整个空间划分为几个小部分。六个二维数据点生成的Kd-树的图为:对于拥有n个已知点的kD-Tree,其复杂度如下:构建:O(log2n)插入:O(log n)删除:O(log n)查询:O(n1-1/k+m) m---每次要搜索的最近点个数一 Kd-树的构建Kd-树是一个二叉树,每 阅读全文
posted @ 2011-11-08 15:53 Ming明、 阅读(22455) 评论(17) 推荐(4) 编辑