
open cv
文章平均质量分 51
alpha_Escher
这个作者很懒,什么都没留下…
展开
-
尺度空间-多尺度特征空间
特征点尺度变换高斯核是唯一可以产生多尺度空间的核,高斯模板具有圆对称性,通过高斯卷积操作对原始像素值重新分配权重,距离中心越远的相邻像素值权重分配相对较小。二维矩阵变换的高斯平滑操作可以通过在水平和竖直方向上分别进行一维高斯矩阵变换相加得到。尺度是自然客观存在的,不是主观创造的,高斯卷积只是表现尺度空间的一种形式。 示例代码如下:void CreateScaleSpace(cv::M...原创 2018-06-17 14:32:35 · 6581 阅读 · 0 评论 -
33运动与跟踪-LK光流
33运动与跟踪-LK光流一.基于特征点的目标跟踪的一般方法 基于特征点的跟踪算法大致可以分为两个步骤: 1)探测当前帧的特征点; 2)通过当前帧和下一帧灰度比较,估计当前帧特征点在下一帧的位置; 3)过滤位置不变的特征点,余下的点就是目标了。很显然,基于特征点的目标跟踪算法和1),2)两个步骤有关。特征点可以是Harris角点(见我的另外一篇博文),也可以是边缘点...原创 2018-05-15 20:16:58 · 1389 阅读 · 0 评论 -
31运动与跟踪-角点检测
31运动与跟踪-角点检测特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系。点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做“关键特征点”(keypoint feature),或“兴趣点”(interest point),或“角点”(conrner)。关于角点的具体描述可以有几种:一阶导数(即灰度的梯度)的局部...原创 2018-05-08 18:43:34 · 446 阅读 · 0 评论 -
30局部与分割-三角剖分delaunay和voronoi划分
30局部与分割-三角剖分delaunay和voronoi划分简介Delaunay三角剖分是1934年发明的将空间点连接为三角形,使得所有三角形中最小角最大的一个技术。如果你熟悉计算机图形学,你便会知道Delaunay三角剖分是变现三维形状的基础。如果我们在三维空间渲染一个,我们可以通过这个物体的投影来建立二维视觉图,并用二维Delaunay三角剖分来分析识别该物体,或者将它与实物相...原创 2018-04-29 17:19:36 · 2031 阅读 · 0 评论 -
图像矩
图像矩1.概述图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、方向、形状等,图像矩广泛应用于模式识别、目标分类、目标识...转载 2018-05-19 14:50:58 · 4365 阅读 · 0 评论 -
34运动与跟踪-运动模板
34运动与跟踪-运动模板OpenCV中运动与跟踪这一章节中,在前面的介绍中,主要给出了LK光流法,以及基于概率统计,窗口搜索的meanshif算法以及meanshif算法的改进版-camshift算法,这两天主要在看运动模板的跟踪运动方法,下面就简要的介绍下。 运动模板的方法是美国的MIT实验室提出来的,是一种有效的跟踪普通运动的方法,尤其可应用在姿态识别中。运动模板的方法首先需要的是知道...原创 2018-05-19 11:52:20 · 340 阅读 · 0 评论 -
距离变换--扫描
距离变换–扫描一:相关原理图像的距离变换实现了像素与图像区域的距离变换,使得最后生成的图像在该自己元素位置处的像素为0,临近的背景的像素具有较小的值,且随着距离的增大它的的数值也就越大。对于距离图像来说,图像中的每个像素的灰度值为该像素与距离其最近的背景像素间的距离,也就是说,给每个像素赋值为离它最近的背景像素点与其距离,一幅二值图像的距离变换可以提供每个像素到最近的非零像素的距离。 ...原创 2018-05-17 12:56:21 · 739 阅读 · 0 评论 -
29局部与分割-均值漂移分割
29局部与分割-均值漂移分割相关原理的的详细介绍:原理请见网页http://www.docin.com/p-631981950.html. 可以用于对图像进行:均值偏移滤波 相关函数接口:void cvPyrMeanShiftFiltering( const CvArr* src, CvArr* dst, double sp, double sr, int max_level...原创 2018-04-25 19:38:35 · 1139 阅读 · 0 评论 -
32运动与跟踪-亚像素级角点检测
32运动与跟踪-亚像素级角点检测如果我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,则通常需要更高的精度,而函数 cvGoodFeaturesToTrack()只能提供简单的像素的坐标值,就是说,我们有时候会需要实数坐标值而不是整数坐标值。图像测量常用的领域为三维重建、摄像机标定、推向拼接以及在卫星图像中查找特定的信号,如一栋建筑的精确位置。亚像素级角点的位置在摄像机标定、...原创 2018-05-09 20:03:47 · 393 阅读 · 0 评论 -
28局部与分割-图像修补inpaint
28局部与分割-图像修补inpaint算法的核心在于:提取带修补区域的边界,分别从最外层的边界到最里层的边界,然后依次进行修补。算法的思想如下:δΩi = boundary of region to inpaint//修复区域的边缘δΩ = δΩiwhile (δΩ not empty){ p = pixel of δΩ closest to δΩi//修复距离边缘最近的...原创 2018-04-21 14:02:14 · 1415 阅读 · 0 评论 -
27局部与分割-分水岭算法
27局部与分割-分水岭算法基本原理:Watershed就是传说中的分水岭算法, 它将一幅图像看成是一块有湖泊和山川组成的地形。 图像灰度值大的像素对应海拔高的山地, 灰度值低的像素对应于海拔低的盆地。Watershed分割是模拟湖水上涨并在湖泊相遇处筑坝的过程。一般水是从湖泊的最低处灌进去,最低点对应于图像的局部最低点。 但确定局部最低点的自动话算法得到的结果往往不尽如人意, 所以常常...原创 2018-04-18 19:28:27 · 364 阅读 · 0 评论 -
距离变换-distanceTransform
距离变换-distanceTransform1:Opencv中distanceTransform方法用于计算图像中每一个非零点距离离自己最近的零点的距离,distanceTransform的第二个Mat矩阵参数dst保存了每一个点与最近的零点的距离信息,图像上越亮的点,代表了离零点的距离越远。实例代码如下:#include <opencv2/imgproc/imgproc.h...原创 2018-05-26 13:53:04 · 21005 阅读 · 1 评论 -
Gamma校正
Gamma校正gamma校正(幂律变换)是一种重要的非线性变换,其是对输入图像灰度值进行指数变换,进而校正亮度偏差,通常应用于扩展暗调的细节。一般情况下,当Gamma校正的值大于1时,图像的高光部分被压缩而暗调部分被扩展;当Gamma校正的值小于1时,图像的高光部分被扩展而暗调部分被压缩,在最简单的情况下,gamma校正通过以下的幂律表达式来定义: 函数图像如下: 其中c是常数,输...原创 2018-05-26 14:48:56 · 11113 阅读 · 2 评论 -
灰度比特平面
灰度比特平面将灰度图像的8bit平面分开来显示: 示例代码如下:#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream&g...原创 2018-05-26 15:35:27 · 403 阅读 · 0 评论 -
肤色检测
肤色检测肤色检测技术利用了计算对人体肤色像素的分析过程,随着人脸检测技术,表情识别及手势识别等技术的快速发展,肤色应用领域日趋增多。肤色检测技术常用的方法有基于颜色空间,光谱特征及肤色反射模型等方法,这些方法的主要步骤都是先进行颜色空间的变换,然后在建立肤色模型。肤色检测中颜色空间有RGB、YCrCb、HSV和Lab等,通常在处理的时候是将RGB 颜色空间变换成相应的颜色空间。肤色YCbC...原创 2018-06-16 02:00:13 · 4886 阅读 · 0 评论 -
白平衡算法实现
白平衡是电视摄像领域一个非常重要的概念,通过它可以解决色彩还原和色调处理的一系列问题。白平衡是随着电子影像再现色彩真实而产生的,在专业摄像领域白平衡应用的较早,现在家用电子产品(家用摄像机、数码照相机)中也广泛地使用,然而技术的发展使得白平衡调整变得越来越简单容易,但许多使用者还不甚了解白平衡的工作原理,理解上存在诸多误区。它是实现摄像机图像能精确反映被摄物的色彩状况,有手动白平衡和自动白平衡等方...转载 2018-06-15 17:31:06 · 23206 阅读 · 1 评论 -
图像算法---白平衡AWB
图像算法—白平衡AWB本文转载wzwxiaozheng的白平衡算法,主要包括两部分:色温曲线和色温计算。原文http://blog.youkuaiyun.com/wzwxiaozheng/article/details/38434391 1,白平衡算法—色温曲线 本文大体讲解了白平衡的算法流程,适用于想了解和学习白平衡原理的筒子们. 一般情况下要实现AWB算法需要专业的图像和算法基础,本文力图通过多...转载 2018-06-15 13:46:46 · 1771 阅读 · 0 评论 -
车牌区域检测
车牌区域检测出至《OpenCV图像处理编程实例》1:对于场景内车辆目标图像srcImage,首先将图像转换到HSI颜色空间,HSI颜色空间依据色彩的三个基本性质:色调(Hue)、饱和度(Saturation)和亮度(Illumination).色调(H)是描述纯色的属性:饱和度(S)是指纯色被白色稀释的程度的度量,其值越大,色彩纯度越高;亮度(I)是描述光照的强度。 对于一幅三颜色R...原创 2018-06-01 13:29:37 · 1977 阅读 · 0 评论 -
图割grabcut算法
图割grabcut算法1.绪论图切割算法是组合图论的经典算法之一。近年来,许多学者将其应用到图像和视频分割中,取得了很好的效果。本文简单介绍了图切算法和交互式图像分割技术,以及图切算法在交互式图像分割中的应用。图像分割指图像分成各具特性的区域并提取出感兴趣目标的技术和过程,它是由图像处理到图像分析的关键步骤,是一种基本的计算机视觉技术。只有在图像分割的基础上才能对目标进行特征提取和参数...转载 2018-06-14 23:26:13 · 2570 阅读 · 0 评论 -
分水岭分割算法
分水岭分割算法在计算机视觉中我们常常关注的目标特征是颜色和灰度,刻画图像中的两个区域视觉相似性有许多方法,如形状描绘子,颜色特征,距特征等。对于某种场景下的应用,具有独特的纹理对象可以使用一个很好的纹理特征符。针对颜色不同的区域中的单体对象相同的扩展,我们可以使用颜色特征来测量对象的不用部分的相似性。如果物体各个子区域存在单一的颜色分布,我们可以使用颜色特征来测量对象不同部分的相似性。如果物体...原创 2018-06-08 09:30:31 · 2671 阅读 · 0 评论 -
floodfill分割
floodfill分割floodfill泛洪填充算法是在很多图形绘制软件中常用的填充算法,通常来说是自动选中与种子像素相关的区域,利用指定的颜色区域颜色替换,可用于标记或分离图像的某部分。windows的图像编辑软件中的油漆桶这一功能,以及类似photoshop的魔术棒选择工具,都是通过floodfill泛洪填充来改进和延伸的。 示例代码如下:#include "opencv2/im...原创 2018-06-13 23:14:13 · 551 阅读 · 0 评论 -
形态学滤波角点提取
形态学滤波角点提取形态学边缘检测的原理是利用膨胀与腐蚀变化区域特征来完成边缘检测,膨胀操作是将目标物体向周围领域扩展,而腐蚀操作是将目标物体向领域收缩,图像的边缘恰好反应在形态学腐蚀与膨胀中变化的区域,因此只需要将膨胀得到的结果图与腐蚀的得到的结果图进行差运算,就可以得到物体的边缘。形态学边缘检测可以形态学梯度操作函数morphologyEx直接得到,具体是通过计算形态学膨胀结果图与腐蚀结果图...原创 2018-06-04 09:48:12 · 753 阅读 · 0 评论 -
图像噪声
图像噪声一:椒盐噪声椒盐噪声是数字图像中的常见噪声,一般是由图像传感器,传输信道及解码处理等产生的黑白相同的亮暗点噪声,椒盐噪声常由图像切割产生。椒盐噪声是指两种噪声:盐粒噪声(salt noise)和胡椒噪声(pepper noise)。盐噪声一般是白色噪声,椒噪声一般是黑色噪声,前者是高灰度噪声,后者属于低灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点。图像去除脉冲干扰及...原创 2018-05-27 11:48:46 · 2018 阅读 · 0 评论 -
信息熵阈值分割
信息熵阈值分割把信息熵的概念带入图像就是,图像的信息熵越大(信息量大),所包含的细节越多,图像就越清晰。 最大信息熵阈值分割的示例代码如下:#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/...转载 2018-05-26 18:14:31 · 2448 阅读 · 0 评论 -
14手势梯度方向直方图
14手势梯度方向直方图根据输入的手势图像,在每一个区域求取其梯度方向,计算出梯度方向直方图,并可视化。具体代码如下:#include <cv.h>#include <highgui.h> #include <stdlib.h> #include <stdio.h> #include <math.h>using ...转载 2018-04-05 17:07:35 · 224 阅读 · 0 评论 -
13孔洞填充method1
13孔洞填充有的时候,我们需要对图像进行孔洞填充,一般想到的方法都是,使用findcontours函数,查找最外层轮廓,然后画出找到的轮廓。这确实是一种方法,但似乎不够高效。下面贴出一个函数,可以更好的实现这个功能。话不多说,上代码。开发环境 opencv2.4.13+vs2013 其他vs或者opencv版本应该也可以跑出来void chao_fillHole(const...转载 2018-04-05 15:09:08 · 1006 阅读 · 0 评论 -
25局部与分割-帧差法
25局部与分割-帧差法主要思想:通过当前帧的灰度图(currentGrayFrame)和前一帧的灰度图(previousGrayFrame)的差,进行像素级的比较优点:实时性高缺点:1、运动物体本身颜色相近时,会出现较大的空洞。2、无法应对光照骤变的情况<span style="font-family:'Microsoft YaHei';font-size...转载 2018-04-10 20:04:55 · 398 阅读 · 0 评论 -
24局部与分割-像素片段
24局部与分割-像素片段可以用来统计视频中固定直线段上像素值的变化:#include <stdio.h>#include <cv.h>#include <highgui.h>void help() { printf("\nRead out RGB pixel values and store them to disk\nCall:\n...转载 2018-04-10 19:49:38 · 231 阅读 · 0 评论 -
23局部与分割-背景减除
23局部与分割-背景减除<1>原理介绍:在很多基础应用中背景检出都是一个非常重要的步骤。例如顾客统计,使用一个静态摄像头来记录进入和离开房间的人数,或者是交通摄像头,需要提取交通工具的信息等。在所有的这些例子中,首先要将人或车单独提取出来。 技术上来说,我们需要从静止的背景中提取移动的前景。如果你有一张背景(仅有背景不含前景)图像,比如没有顾客的房间,没有交通工具的道...原创 2018-04-10 13:10:44 · 515 阅读 · 0 评论 -
22轮廓-计算轮廓的面积和周长
22计算轮廓的面积和周长代码如下:for(contour;contour!=NULL;contour=contour->h_next){ double s=cvContourArea(contour,CV_WHOLE_SEQ); double l=cvArcLength(contour,CV_WHOLE_SEQ,-1);//后面参数0表示轮廓不...原创 2018-04-07 15:55:46 · 4456 阅读 · 0 评论 -
21轮廓-查找并绘制轮廓
21查找并绘制轮廓1在二值图像中寻找轮廓:void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, ...转载 2018-04-07 15:48:54 · 417 阅读 · 0 评论 -
20轮廓-hu不变矩的测试程序
20轮廓-hu不变矩的测试程序程序对使用轮廓的hu矩进行测试:#include <cv.h> #include <cxcore.h> #include <highgui.h> #include <cvaux.h> #include <iostream> #include <string> #...转载 2018-04-07 15:30:40 · 1134 阅读 · 0 评论 -
19轮廓-视频颜色跟踪
19轮廓-视频颜色跟踪相关代码如下:#include "opencv2/opencv.hpp"using namespace cv;//设置HSV颜色区间int blue_min_h = 90;int blue_min_s = 100;int blue_min_v = 100;int blue_max_h = 120;int blue_max_s = 255;int ...转载 2018-04-07 15:12:02 · 250 阅读 · 1 评论 -
18轮廓-绘制方形,原型
18轮廓-绘制方形,原型用CvSeq的函数创建圆和矩形,这两个图像用点序列来表示。 有关序列的读写方法可以自行学习,这里只给出一个示例#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> using namespace st...转载 2018-04-07 14:59:11 · 183 阅读 · 0 评论 -
17模板匹配寻找手掌区域
17模板匹配寻找手掌区域寻找手掌区域,利用模板匹配策略,通过cvMatchTemplate()函数找出手掌区域,本例中,结果一在main()函数中调用了Find_Hand_Region()函数去除了不相关区域,结果二未调用,具体代码如下:#include <cv.h>#include <highgui.h> #include <stdlib.h&...转载 2018-04-07 14:36:36 · 462 阅读 · 0 评论 -
16识别手势(EMD)
16识别手势(EMD)尝试识别手势。实现例15功能,但是利用EMD匹配策略,本例仅对Compare_Gesture_Hist()函数做了适当修改,具体代码如下:void Compare_Gesture_Hist(IplImage *sobel1, IplImage *sobel2, IplImage *test, IplImage** canny, IplImage* hist_i...转载 2018-04-07 14:32:02 · 518 阅读 · 0 评论 -
26局部与分割-平均背景法和codebook背景学习法
25局部与分割-平均背景法和codebook背景学习法主要原理:1:平均背景法:首先统计给定样本图像的平均值和平均差,这里的平均值和平均差都是针对单个像素而言,对应平均值和平均差分别有一副mask图像对应。最后给定一幅判定图像,遍历图像中的每一个像素点,依据平均值和平均差是否在给定的范围内,如果在范围内,则是前景,否则为背景。2:codebook背景学习法(内存占用比较大): <...转载 2018-04-16 16:48:06 · 599 阅读 · 1 评论 -
1 直方图的计算与显示&开操作&漫水填充算法
1 直方图的计算与显示根据输入的图像计算出一个色相饱和度(hue-saturation)直方图,然后利用网格的方式将该直方图以网格形式显示出来,具体代码如下: 1. 函数介绍void cvFloodFill(IplImage * img,//原图像CvPoint seedpoint,//种子点CvScalar newVal,...转载 2018-04-04 11:19:47 · 292 阅读 · 0 评论 -
2.EMD直方图度量相似性
2.EMD度量相似性根据输入的图像计算色相饱和度(hue-saturation)直方图,然后利用该直方图创建EMD接口参数signature,最后利用EMD来度量两个分布之间的相似性,程序中src1与src2已经过处理,有40的亮度值偏移,具体代码如下:相关代码#include <cv.h>#include <highgui.h> #include...转载 2018-04-04 23:13:23 · 1424 阅读 · 1 评论 -
12RGB肤色区域检测器
12RGB肤色区域检测器 1. 在室内条件下,利用一些手和脸来建立RGB直方图; 2. 利用函数cvCalcBackProject()找到肤色区域; 3. 利用本书第五章图像处理相关函数来清除噪声,并利用函数cvFloodFill()找到图像中肤色最大区域。具体代码如下:#include <cv.h>#include <highgui.h> #...转载 2018-04-05 14:56:58 · 1524 阅读 · 0 评论