[计算机视觉]Opencv中的Face Detection using Haar Cascades 标签(空格分隔): [图像处理] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 五种典型的haar-like特征,为何能用来检测人脸,人眼呢? 它给出的一个经验之谈是 1. the region of the eyes is often darker than the region of the nose and cheeks 2. the eyes a…
目录   利用基于Haar特征的级联分类器实现人脸检测:官方教程 目标 学习基于Haar特征的级联分类器(Cascade Callifiers)实现人脸检测: 扩展到人眼检测: 基础知识 Paul Viola.Michael Jones: Rapid Object Detection using a Boosted Cascade of Simple Features   OpenCV中提供了训练和检测两个部分:下面的代码主要是检测部分,也就是说利用OpenCV提供的训练好的模型进行检测:Ope…
首先说一下这个级联分类器,OpenCV中级联分类器是根据VJ 04年的那篇论文(Robust Real-Time Face Detection)编写的,查看那篇论文,知道构建分类器的步骤如下: 1.根据haar-like特征训练多个弱分类器 2.使用adaboost算法将多个弱分类器组合成一个强分类器 3.最终的分类器是由多个强分类器级联而成 下面这幅图是弱分类器组合成强分类器的示意图(图片来源于网络): 下面这张是多个强分类器级联的示意图(图片来源于网络): 在了解了级联分类器是怎么一回事后,…
[计算机视觉]关于OpenCV中GPU配置编译的相关事项 标签(空格分隔): [计算机视觉] 前一段发现了OpenCV中关于GPU以及opencl的相关知识,打算升级一下对OpenCV的使用,但是发现从OpenCV官网上下载的都是没有WITH_CUDA这一选项的.于是必须进行OpenCV带CUDA的重编译!下面就记录这一阶段出现的一系列问题. 关于OpenCV版本的问题 起初直接尝试使用一直用的OpenCV2.4.9的源码进行编译,选择的编译环境为Visual Studio2010 x64,因为…
CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核函数,GPU运行程序:5.传输结果到CPU:6.继续主机代码执行. 下图是两个向量相加的简单示例程序和处理流图. 注意的问题:cu,cpp文件的组织 内核函数和其wrapper函数置于cu文件中. 在cpp文件声明wrapper函数,并调用wrapper函数. wrapper函数的声明定义需加ext…
Paul Viola和Michael Jones在2001年首次将积分图应用在图像特征提取上,在他们的论文"Rapid Object Detection using a Boosted Cascade of Simple Features"中,积分图被当作一种新的图像特征表征方式,可以把检测的Haar特征非常高效的计算出来,用于实时人脸检测系统. 积分图是一种能够描述全局信息的矩阵表示方法,其构造方式是积分图像上位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和…
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_eWeRu9p9GhZd49WJ1bEOB7VluQdBdRKeehAO2Q3B7RatTXDruq-M9cR-W2yqATerDlIU1T3whYoyQfi http://www.cvchina.info/2011/07/04/whats-orb/ http://www.bubuko.com/in…
http://blog.csdn.net/welcome_xu/article/details/7650680 IplImage结构详细分析   IplImage 结构解读: typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */ int alphaChannel; /* 被OpenCV忽略 */ int…
前言 本文将主要讲解如何使用 OpenCV 实现图像分割,这也是图像金字塔在 OpenCV 中的一个重要应用. 关于图像分割 在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程.图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析.[1]图像分割通常用于定位图像中的物体和边界(线,曲线等).更精确的,图像分割是对图像中的每个像素加标签的一个过程,这一过程使得具有相同标签的像素具有某种共同视觉特性. 图像分…
三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMState();   int SADWindowSize=15;    BMState->SADWindowSize = SADWindowSize > 0 ? SADWindowSize : 9;   BMState->minDisparity = 0;   BMState->numb…
经过2天的努力终于算是大概弄清楚了opencv中的vs框架是大概是如何工作的了,下面贴一下我自己写的代码注释.非常详细.对初学者有帮助.尤其详细分析了RunBlobTrackingAuto()函数,在看注释之前应该首先大概了解一下 Blob Tracking Tests和Blob Tracking Modules的说明文档.这样比较容易理解.说明文档的位置在  opencv的安装位置的opencv\doc\vidsurv 代码注释为本人原创,转载请注明原为地址:http://blog.csdn.…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 19 Canny 边缘检测 目标 • 了解 Canny 边缘检测的概念 • 学习函数 cv2.Canny() 19.1 原理 Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在1986 年提出的.它是一个有很多步构成的算法,我们接下来会逐步介绍. 19.1.1 噪声去除 由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声,这个前面我们已经学过了. 1…
部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 23 图像变换 23.1 傅里叶变换目标本小节我们将要学习: • 使用 OpenCV 对图像进行傅里叶变换 • 使用 Numpy 中 FFT(快速傅里叶变换)函数 • 傅里叶变换的一些用处 • 我们将要学习的函数有:cv2.dft(),cv2.idft() 等原理 傅里叶变换经常被用来分析不同滤波器的频率特性.我们可以使用 2D 离散傅里叶变换 (DFT) 分析图像的频域特性.实现 DFT 的一个快速算法被称…
部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 29 理解图像特征 目标本节我会试着帮你理解什么是图像特征,为什么图像特征很重要,为什么角点很重要等.29.1 解释 我相信你们大多数人都玩过拼图游戏吧.首先你们拿到一张图片的一堆碎片,要做的就是把这些碎片以正确的方式排列起来从而重建这幅图像.问题是,你怎样做到的呢?如果把你做游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了.如果计算机可以玩拼图,我们就可以给计算机一大堆自然图片,然后就可以让计算机把它拼成一张大图…
部分 VI视频分析 OpenCV-Python 中文教程(搬运)目录 39 Meanshift 和 和 Camshift 目标 • 本节我们要学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象39.1 Meanshift Meanshift 算法的基本原理是和很简单的.假设我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处(或者是点最多的地方).如下图所示: 初始窗口是蓝色的“C1”,它的圆心为蓝色方…
部分 IX计算摄影学 OpenCV-Python 中文教程(搬运)目录 49 图像去噪目标 • 学习使用非局部平均值去噪算法去除图像中的噪音 • 学习函数 cv2.fastNlMeansDenoising(),cv2.fastNlMeansDenoisingColored()等原理 在前面的章节中我们已经学习了很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的.在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素.简单来说,像素级别的…
The OpenCV GPU module is a set of classes and functions to utilize GPU computational capabilities. It is implemented using NVIDIA* CUDA* Runtime API and supports only NVIDIA GPUs. 1.      getCudaEnableDeviceCount:returns the number of installed CUDA-…
任务刚刚做完,就迫不及待的来写写在OpenCV中常见的几类数据类型: 在使用OpenCV时我们时常会碰到IplImage这个数据类型,IplImage就是我们通常说的“图像”进行编码的基本结构,这些图像可能是灰度,彩色,四通道的,其中每个通道可以包含任意的整数或者浮点数.因此,该类型比常见易于理解,比三通道的RGB彩色图像更为通用(这与计算机的取值有关). 虽然OpenCV是由C语言实现的,但是它使用的结构体也是遵循面向对象的思想设计的.实际上,IplImage是由CvMat派生的,而CvMat…
SURF:speed up robust feature,翻译为快速鲁棒特征.首先就其中涉及到的特征点和描述符做一些简单的介绍: 特征点和描述符 特征点分为两类:狭义特征点和广义特征点.狭义特征点的位置本身具有常规的属性意义,比如角点.交叉点等等.而广义特征点是基于区域定义的,它本身的位置不具备特征意义,只代表满足一定特征条件的特征区域的位置.广义特征点可以是某特征区域的任一相对位置.这种特征可以不是物理意义上的特征,只要满足一定的数学描述就可以,因而有时是抽象的.因此,从本质上说,广义特征点可…
前言 本文将介绍 OpenCV 中的图像结构 IplImage 并提供一些很实用的技巧. 更多的矩阵处理函数还请参阅相关资料. IplImage 的类型定义 typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */ int alphaChannel; /* 被OpenCV忽略 */ int depth; /*…
前言 本文将介绍 OpenCV 中的矩阵结构 CvMat 并提供几个很常用的矩阵使用方法. 更多的矩阵处理函数还请参阅相关资料. CvMat 的类型定义 typedef struct CvMat { int type; // 数据类型 int step; // 行长度 int* refcount; /* 内部使用 */ int hdr_refcount; /* 内部使用 */ union // 指向数据区的指针 { uchar* ptr; short* s; int* i; float* fl;…
 这篇文章写得太好了 ,感觉自己实在没有办法去补充这方面的知识点 我打算把高斯滤波和双边滤波还好好补充下 这篇文章转载自一个美丽的才女:小魏 连接地址:http://blog.csdn.net/xiaowei_cqu/article/details/7785365   如果想要彻底明白,就看看这位顶级大神的博客:http://blog.csdn.net/poem_qianmo/article/details/21479533   [OpenCV]邻域滤波:方框.高斯.中值.双边滤波 邻域滤波(卷…
支持向量机(SVM)中最核心的是什么?个人理解就是前4个字--"支持向量",一旦在两类或多累样本集中定位到某些特定的点作为支持向量,就可以依据这些支持向量计算出来分类超平面,再依据超平面对类别进行归类划分就是水到渠成的事了.有必要回顾一下什么是支持向量机中的支持向量. 上图中需要对红色和蓝色的两类训练样本进行区分,实现绿线是决策面(超平面),最靠近决策面的2个实心红色样本和1个实心蓝色样本分别是两类训练样本的支持向量,决策面所在的位置是使得两类支持向量与决策面之间的间隔都达到最大时决策…
最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜索的流程整理一下,想到什么说什么吧. 首先在进行图片灰度化处理之前,我觉得有必要了解一下为什么要进行灰度化处理. 图像灰度化的目的是什么? 将彩色图像转化为灰度图像的过程是图像的灰度化处理.彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量中可取值0-255,这样一个像素点可以有1600…
背景分割器BackgroundSubtractor是专门用来视频分析的,会对视频中的每一帧进行"学习",比较,计算阴影,排除检测图像的阴影区域,按照时间推移的方法提高运动分析的结果.而且BackgroundSubtractor不仅可以用于背景分割,而且还可以提高背景检测的效果.在opencv中有三种分割器:KNN,MOG2,GMG. 通过mog2实现 import numpy as np import cv2 cap=cv2.VideoCapture(1) mog = cv2.crea…
介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一个图像到另一个图像平面.例如,与其直视前方的场景,不如自上而下地看.在这个场景中应用透视图变换来实现这一点. 另一个应用是训练深层神经网络.训练深度模型需要大量的数据.在几乎所有的情况下,模型都受益于更高的泛化性能,因为有更多的训练图像.人工生成更多数据的一种方法是对输入数据随机应用仿射变换(增强)…
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Matlab中的各种矩阵运算),所以将IplImage类型和CvMat类型转换为Mat类型更易于数据处理. Mat类型可用于直接存储图像信息,通过函数imread.imwrite.imshow等实现(与Matlab中的函数相…
说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好坏也直接影响着其他相关函数的性能,最典型莫如现在很好的EPF滤波器:GuideFilter.因此其优化的档次和程度是非常重要的,网络上有很多相关的代码和博客对该算法进行讲解和优化,提出了不少O(1)算法,但所谓的0(1)算法也有优劣之分,0(1)只是表示执行时间和某个参数无关,但本身的耗时还是有区别…
最近在将Karlsruhe Institute of Technology的Andreas Geiger发表在ACCV2010上的Efficent Large-Scale Stereo Matching代码仿真.Andreas提供的源码中没有使用opencv,导致我一时无法适应如何显示处理的中间结果.将对应的库加载后,仿照采集相机图像数据的方式,从内存中读取对应图像到IplImage类型指针指定的内存空间,方便代码的调试和效果观测.其中用到的部分资料如下. *******************…
/* 头文件:OurGaussmix2.h */ #include "opencv2/core/core.hpp" #include <list> #include"cv.h" using namespace cv;//InputArray 等的定义在cv里面 namespace ourGaussmix { class BackgroundSubtractor: public cv::Algorithm { public: virtual ~Backgr…