学习OpenCV
文章平均质量分 82
学习OpenCV的心得与体会,个人拙见,希望和大家共同进步
小熊不去实验室
体感互动攻城狮一枚,主要研究:体感互动设备,互动开发平台,开发互动项目,希望向各位大牛多多学习~
展开
-
学习OpenCV——直方图&最大熵分割
原来一直觉得OpenCV里的直方图函数十分简单,今天临时需要用才发现原来OpenCV的calcHist功能如此强大,不仅能计算常见的1D Hist, calcHist理论上支持32维以下的Hist.(32维啊 有木有!)void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask,原创 2013-04-10 21:51:18 · 9045 阅读 · 7 评论 -
学习OpenCV——BOW特征提取函数(特征点篇)
没日没夜的改论文生活终于要告一段落了,比起改论文,学OpenCV就是一件幸福的事情。OpenCV的发展越来越完善了,已经可以直接使用BOW函数来进行对象分类了。简单的通过特征点分类的方法: 一、train1.提取+/- sample的原创 2012-12-31 21:36:05 · 25843 阅读 · 32 评论 -
DoG 、Laplacian、图像金字塔详解
DoG(Difference of Gaussian)DoG (Difference of Gaussian)是灰度图像增强和角点检测的方法,其做法较简单,证明较复杂,具体讲解如下:Difference of Gaussian(DOG)是高斯函数的差分。我们已经知道可以通过将图像与高斯函数进行卷积得到一幅图像的低通滤波结果,即去噪过程,这里的Gaussian和高斯低通滤波器的高斯一样,是一原创 2012-12-17 22:14:25 · 8056 阅读 · 5 评论 -
学习OpenCV——肤色检测:椭圆模型 (&最大连通区域)
简介: 刚开始尝试利用肤色信息进行CV方面的跟踪或者检测,但总是发现肤色信息的除了实时效果比较好,其他的抗噪,鲁棒性都不尽如人意。但是正如tornadomeet所说:其实计算机视觉的最终实现是一个长期的过程,是AI领域一个经典的问题,所以在AI完全突破之前,任何对CV有用的信息都值得去深入研究,除非有一种算法能够在所有情况下都工作。 皮肤检测----肤色椭圆模型原创 2012-12-07 17:25:44 · 23197 阅读 · 7 评论 -
学习OpenCV——皮肤检测类:CvAdaptiveSkinDetector
OpenCV原来自带的皮肤检测类CvAdaptiveSkinDetector,可以通过颜色阈值分割肤色部分,皮肤检测算法是在HSV空间进行,没什么技术含量。 OpenCV自带是算法的参考文献有网友说是An adaptive real-time skin detector based on Hue thresholding: A comparison on two motion tracki原创 2012-12-03 15:37:10 · 9118 阅读 · 0 评论 -
OpenCV2.4.3新鲜出炉
OPENCV2.4.3终于发布了,距上次发布已经4个月了,相比之前提升灰常之大。下载地址为:OpenCV-2.4.3.exe OpenCV2.4.3增加了许多新特性,变得更加NB了,主要参考:http://code.opencv.org/projects/opencv/wiki/ChangeLog#243这次版本的变化内容有不少是来源于google summer code(GSoC原创 2012-11-08 10:17:59 · 9809 阅读 · 5 评论 -
Compressive Tracking——CT跟踪
感谢香港理工大学的Kaihua Zhang,这是他即将在ECCV 2012上出现的paper:Real-time Compressive Tracking。 这里是他的介绍:一种简单高效地基于压缩感知的跟踪算法。首先利用符合压缩感知RIP条件的随机感知矩对多尺度图像特征进行降维,然后在降维后的特征上采用简单的朴素贝叶斯分类器进行分类。该跟踪算法非常简单,但是实验结果很鲁棒,速度大概能到达4原创 2012-10-26 21:57:28 · 11491 阅读 · 30 评论 -
学习OpenCV——初始化视频第一帧
在很多视频跟踪或分割中,总是需要初始化第一帧,即在第一帧上画一个框,或者标注前景与背景啊等等,今天就把初始化第一帧,在第一帧上画一个框的代码实现了一下,顺便复习一下OpenCV里面的鼠标召回事件,在此贴上代码,与大家分享,也方便以后查找。#include "opencv2/opencv.hpp"#include "opencv2/highgui/highgui.hpp"#include原创 2012-10-25 19:14:45 · 4536 阅读 · 5 评论 -
学习OpenCV——Kalman滤波
背景:卡尔曼滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。这种滤波方法以它的发明者鲁道夫.E.卡尔曼(Rudolph E. Kalman)命名,但是根据文献可知实际上Peter Swerling在更早之前原创 2012-10-16 10:54:37 · 36955 阅读 · 14 评论 -
图的最小割:Graph-cut:Min-Cut Problem
基于图的最小割算法论文:Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images是YYB这个牛人在2000年提出的一种经典的基于的图的最小割算法,现在被广泛使用,现在在这里发表个人拙见,欢迎大家提意见。算法的核心其实就是这个图:构造一个图,可以把所有n原创 2012-10-08 12:05:10 · 11216 阅读 · 25 评论 -
批量处理图像
有很多时候,我们需要对一个文件夹内的所有图像进行处理,这时一张张的Ctrl+F5就让人太蛋疼了,所以就产生了图像批量处理。不扯了,直接上代码:stdafx.h:// stdafx.h : include file for standard system include files,// or project specific include files that are used原创 2012-09-13 15:14:06 · 3052 阅读 · 8 评论 -
学习OpenCV——计算邻接区域列表(build_adjoin)
最近遇到一个问题,就是在图像分割完成后,需要把相邻的区域都列出来用于下一步计算,也就是说,我需要找到与任意一个区域相邻的所有区域。最后在XX的启发下终于完成,主要就是:1. 初始化每个像素有8条edge,分别连接相邻的元素;2. 计算所有edge指向的元素是否属于同一个region,如果属于放弃,如果不属于,则存放在一个regNum*regNum大小的Mat中; 代码:#inclu原创 2012-09-12 21:14:38 · 3142 阅读 · 7 评论 -
学习OpenCV——Kmean(C++)
从前也练习使用过OpenCV的Kmean算法,但是那版本低,而且也是基于C的开发。这两天由于造论文的需要把它重新翻出来在研究一下C++,发现有了些改进kmeansC++:doublekmeans(InputArraydata, intK, InputOutputArray bestLabels, TermCriteriacriteria, intattempts, int原创 2012-09-12 16:08:31 · 15014 阅读 · 0 评论 -
学习OpenCV——Mat数据操作之普通青年、文艺青年、暴力青年.& Mat注意事项
转自:http://blog.csdn.net/yang_xian521/article/details/7161335普通青年的操作的办法通常是M.at(i, j)文艺青年一般会走路线M.ptr( i )[ j ]暴力青年通常直接强制使用我第40讲提到的M.data这个指针实验代码如下: t = (double)getTickCount(); Mat转载 2012-08-31 09:08:38 · 3621 阅读 · 0 评论 -
PCA-Shift(特征点篇)
SIFT 后来有两种扩展,都用到PCA的概念。1. PCA-SIFT PCA-SIFT与标准sift有相同的亚像素位置(sub-pixel),尺度(scale)和主方向(dominant orientations),但在第4步计算描述子的时候,它用特征点周围的41×41的像斑计算它的主元,并用PCA-SIFT将原来的2×39×39维的向量降成20维,以达到更精确的表示方式 一原创 2012-08-31 19:42:40 · 6166 阅读 · 2 评论 -
Max-Flow Min-Cut
网络与流的概念 对于有向图D=(V,A),如果V中有一发点(源)Vs,一收点(汇)Vt,其余均为中间节点,且对A中的每条弧均有权W(Vi,Vj)(简记为Wij,并称为弧容量),则称这样的赋权有向图D为容量网络,记为D=(V,A,W),通过D中弧(Vi,Vj)的物流量为fij,称为弧(Vi,Vj)的流量。所有弧上流量的集合f={fij}称为该网络D的一个流。最大流最小割定理(max flo翻译 2012-08-31 19:48:53 · 15163 阅读 · 1 评论 -
数字转化为标准string(opencv)
format 函数Returns a text string formatted using the printf-like expression.string format( const char* fmt, ... )Parametersfmt – printf -compatible formatting specifiers.The function act原创 2012-08-31 19:52:27 · 5985 阅读 · 0 评论 -
libsvm+detector_(libsvm参数说明)
细分析了cvhop.cpp中的compute函数,可以直接调用它来获得样本HOG,然后训练得到检测算子1.制作样本2.对每一张图片调用hog.compute(img, descriptors,Size(8,8), Size(0,0));可以生成hog descriptors,把它保存到文件中for(int j=0;jfprintf(f,"%f,",descriptors原创 2012-05-26 19:52:12 · 6171 阅读 · 11 评论 -
学习OpenCV——学习grabcut算法
由于make paper的需要,又把以前只大概了解的grabcut算法重新拿出来研究了一下~grabcut主要是通过Min Cut: Global minimal enegry in polynomial time实现,具体参考论文OpenCV中的GrabCut算法是依据《"GrabCut" - Interactive Foreground Extraction using Itera原创 2012-08-30 20:23:26 · 9309 阅读 · 3 评论 -
图像的一般格式
摘要:描述了各种图像文件结构,尤其着重讲述了PPM文件格式以及PPM文件的读写。因为最近在使用PPM文件做图像处理,以前并未接触到,所以会特别关注。 一般的图像文件结构主要都包含有文件头、文件体和文件尾等三部分: 文件头:软件ID、软件版本号、图像分辨率、图像尺寸、图像深度、彩色类型、编码方式、压缩算法 文件体:图像数据、彩色变换表 文件尾:用户名、注释、转载 2012-07-10 10:28:07 · 2311 阅读 · 0 评论 -
使用VS2010调用matlab的mat格式文件
做实验需要将matlab实现的meanshift的结果中的region的Iabels矩阵,需要把labels.mat读入VS2010中,实现功能,在此把实现过程记录下来:C++读取mat文件:1. vs2010的配置新建一个工程,在属性管理器中选择 工程->属性->VC++目录。设置包含目录为:D:\MATLAB\R2010a\extern\include(我的原创 2012-07-07 20:26:28 · 7185 阅读 · 4 评论 -
比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍 .
转自:http://blog.csdn.net/carson2005/article/details/7647500TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标转载 2012-06-20 19:47:13 · 10979 阅读 · 4 评论 -
学习OpenCV——PCA主成分分析
机器学习方面的降维讲解(PCA原理,奇异值分解):http://blog.csdn.net/abcjennifer/article/details/8002329 在图形识别方面,主成分分析(Principal Comonents Analysis,PCA)算是比较快速而且又准确的方式之一,它可以对抗图形平移旋转的事件发生,并且藉由主要特征(主成分)投影过后的数据做数据的比对,在多个特征信转载 2012-06-12 15:17:39 · 4731 阅读 · 3 评论 -
学习OpenCV——配置CUDA环境
大家都把GPU&CUDA说的很NB狠NB,于是,下一步想通过GPU加速程序运行。这一个星期,都在配置OpenCV的CUDA环境,今天终于以失败告终,原因是实验室的机器显卡不支持CUDA。。。伤不起啊,一星期啊!!!支持CUDA的GPU:http://developer.nvidia.com/cuda-gpus 虽然,最终失败了,但是总归还是有收获的,现把它总结起来,提醒自己,也给大家一原创 2012-06-07 17:43:54 · 6450 阅读 · 5 评论 -
学习OpenCV——Laplacian图像融合
网上看到一个很有意思的利用opencv实现图像融合的方法:1.设计一个mask(一半全1,一半全0),并计算level层的gaussion_mask[i];2.计算两幅图像每一层的Laplacian[i],并与gaussion_mask[i]相乘,合成一幅result_lapacian[i];3.对两幅图像不断求prydown,并把最高层保存在gaussion[i],与gaussion原创 2012-06-07 11:14:14 · 6111 阅读 · 8 评论 -
Facel_ASEF
超龄儿童们 六一到了 祝:表面强大 内心彷徨;容颜未老 心已沧桑 比骡子累 比蚂蚁忙 ;起的比鸡早,睡的比鸡晚 比驴干的多 比猪吃的差; 无论曾经佩戴小红花还是满脸泥巴 无论你是岁数大 还是心眼小 超龄儿童们放纵一下自己吧 别憋着了 平常装大人挺辛苦 过节了 想吃手就吃手想尿床就尿床吧 六一快乐!!!恭喜blog摆脱千里之外,冲进前2W名!言归正传,这几天总体来说没干撒,主要就是在包海燕的原创 2012-06-01 11:21:28 · 4247 阅读 · 4 评论 -
学习OpenCV——粒子滤波(网上两篇文章总结)
粒子滤波的理论实在是太美妙了,用一组不同权重的随机状态来逼近复杂的概率密度函数。其再非线性、非高斯系统中具有优良的特性。opencv给出了一个实现,但是没有给出范例,学习过程中发现网络上也找不到。learning opencv一书中有介绍,但距离直接使用还是有些距离。在经过一番坎坷后,终于可以用了,希望对你有帮助。 本文中给出的例子跟 我的另一篇博文是同一个应用例子,都是对二维坐标进行平滑、预原创 2012-05-30 15:23:35 · 4026 阅读 · 3 评论 -
Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper .
真正了解了什么叫最简单的就是最美好的真正的好文章不需要大堆公式堆积显得充实,而是最最平实的思想!这篇文章的:原文PDF、数据集、幻灯片、视频。感兴趣的可以了解一下。这篇文章的目的就是以最简单的思路将图像达到去雾效果。用Matlab编了一下,效果图特别好啊哈:下面是摘录的:CVPR的中文名是计算机视觉与模式识别会议,是计算机视觉领域最顶尖的国际转载 2012-05-17 17:23:56 · 2977 阅读 · 0 评论 -
学习OpenCV——OpenMP
转自:http://www.cnblogs.com/yangyangcv/archive/2012/03/23/2413335.html openMP的一点使用经验最近在看多核编程。简单来说,由于现在电脑CPU一般都有两个核,4核与8核的CPU也逐渐走入了寻常百姓家,传统的单线程编程方式难以发挥多核CPU的强大功能,于是多核编程应运而生。按照我的理解,多核编程可以认为是对多转载 2012-05-17 13:16:17 · 4726 阅读 · 1 评论 -
LBP纹理特征
LBP方法(Local binary patterns)是一个计算机视觉中用于图像特征分类的一个方法。LBP方法在1994年首先由T. Ojala, M.Pietikäinen, 和 D. Harwood 提出[43][44],用于纹理特征提取。后来LBP方法与HOG特征分类器联合使用,改善了一些数据集[45]上的检测效果。对LBP特征向量进行提取的步骤如下:首先将检测窗口划分为16×16转载 2012-05-16 21:19:40 · 8064 阅读 · 2 评论 -
学习OpenCV——鼠标事件(画框)
#include "cv.h"#include "highgui.h"bool check_line_state=false;IplImage* workImg;IplImage* imgshow;CvRect ROI_rect;void on_mouse4(int event, int x,int y,int flags,void* param){ int原创 2012-05-16 19:51:55 · 9833 阅读 · 5 评论 -
学习OpenCV——hand tracking手势跟踪
这几日,岛上风云突变,我这个倒霉孩子终究木有躲过感冒的魔掌,中枪鸟~~~这几天只写了个简单的手势跟踪的代码。原理是:背景差分+肤色检测。背景差分:取前30帧图像取平均值,计算前30帧之差的和,再求均值。在背景平均值上下浮动的阈值之外的被检测出来。肤色检测:利用YCrCb空间。两个结果相与操作。这种方式的优点:1.有效解决了肤色检测结果中总是检测到人脸的情况;原创 2012-05-14 20:13:43 · 24357 阅读 · 32 评论 -
学习OpenCV——Fast检测与Surf&Brief匹配(娱乐)
这几天一直徘徊在Fast,Surf,Shift,Brief,ORB几种特征检测算法之中,被搞得焦头烂额!!!各个实验都在前面的blog中。OpenCV已经实现了他们,所以就用OpenCV试验一下,各种方法,查看一下效果,我的初衷是Match,Fast检测的特征点,发现无法提取descriptor,⊙﹏⊙b汗!!!但是,却又发现可以将Keypoints检测与Match的过程分开(虽然原创 2012-05-08 18:51:43 · 27059 阅读 · 29 评论 -
学习OpenCV——ORB简化版&Location加速版
根据前面surf简化版的结构,重新把ORB检测的代码给简化以下,发现虽然速度一样,确实能省好多行代码,关键是有BruteForceMatchermatcher的帮忙,直接省的写了一个函数;NB类型:classgpu::BruteForceMatcher_GPU再加上findHomography,之后perspectiveTransform就可以location,但是这样速度很慢;原创 2012-05-08 13:42:43 · 9098 阅读 · 13 评论 -
学习OpenCV——用OpenCv画漫画
闲的时候用OpenCV画漫画也挺有意思,虽然效果不好(达不到上面所实现的效果),参数需要调整,还是大头贴而且噪声小的图像比较合适而且可以熟悉一下关于各种滤波的操作比如:双边滤波;#include "cv.h"#include "highgui.h"using namespace cv;using namespace std;int main(){ str原创 2012-05-07 23:49:13 · 7632 阅读 · 2 评论 -
学习OpenCV——Hog.detectMultiScale的心得
这几天一直为一个问题挠头,搞得好几天没心情,今天想明白了一点赶紧记下来,省的以后忘了。这几天一直折磨我的问题就是Hog.detectMultiScale()函数。我看到网上的有些HoG的文章从一幅完整图像中检测出目标对象时,一个很NB的框框,框的还那么准,比如OpenCV自带的sample:http://blog.csdn.net/sangni007/article/details/745原创 2012-05-07 23:25:56 · 20483 阅读 · 41 评论 -
学习OpenCV——Surf简化版
之前写过一遍关于学习surf算法的blog:http://blog.csdn.net/sangni007/article/details/7482960但是代码比较麻烦,而且其中还涉及到flann算法(其中的Random KDTree+KNN),虽然能看明白,但是比较费劲,今天在文档中找到一个简化版本:1.SurfFeatureDetector detector( minHessian )原创 2012-05-07 22:08:43 · 8340 阅读 · 9 评论 -
hamming distance
仔细阅读ORB的代码,发现有很多细节不是很明白,其中就有用暴力方式测试Keypoints的距离,用的是HammingLUT,上网查了才知道,hamming距离是相差位数。这样就好理解了。我理解的HammingLUT lut;result=lut((a),(b),size_t size):result=a与b的hamming distance+size;unsigned int hamd原创 2012-05-07 19:01:07 · 5459 阅读 · 5 评论 -
学习OpenCV——ORB & BRIEF(特征点篇)&Location
首先介绍什么是ORB:(此部分转自http://www.cvchina.info/2011/07/04/whats-orb/)ORB是是ORiented Brief的简称。ORB的描述在下面文章中:Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski,ORB: an efficient alternativ原创 2012-05-04 10:50:10 · 26539 阅读 · 36 评论 -
学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以原创 2012-05-03 09:45:52 · 12072 阅读 · 6 评论