
CV/PR/opencv
文章平均质量分 75
hitwengqi
这个作者很懒,什么都没留下…
展开
-
第五章 - 图像形态学 - 图像金字塔(cvPyrDown、cvPyrUp)
图像金字塔被广泛应用于各种视觉应用中。图像金字塔是一个图像集合,集合中图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样。(当然,降为一个像素肯定是中止条件) 本例程用到两个库函数cvPyrDown、cvPyrUp。Py原创 2011-10-09 23:25:08 · 12592 阅读 · 2 评论 -
第七章 - 直方图与匹配 - 模板匹配(cvMatchTemplate)
模板匹配是通过在输入图像上滑动模板图像块对实际的图像块和输入图像进行匹配,应用场景:比如要在一堆图像中寻找指定人脸,就可以利用此算法在图像中找到此人脸的最佳匹配,确定相似度。并且可以利用函数cvMinMaxLoc()找到最佳匹配的位置。对于特定的应用来说,如视频中应用自动部分检测或跟踪(视频中的车牌识别),可以试试所有这些方法,找到最合适的method,这里要考虑算法的性能。---------原创 2011-10-28 16:18:47 · 23520 阅读 · 9 评论 -
第八章 - 轮廓 - 内存与序列
虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边界的像素,但是它并没有将轮廓作为一个整体,因此本章要学习如何把这些像素组装成轮廓。具体会涉及到内存存储器(Memory Storage)和序列(Sequence)两种数据结构,内存存储器是OpenCV在创建动态对象时存取内存的技术,而处理轮廓时需要使用序列,因此要熟悉这两个东西。内存:1、底层实现是一个有许多相同大小的内存块组原创 2011-10-29 17:45:38 · 3086 阅读 · 0 评论 -
第六章 - 图像变换 - 未实现算法
1、重映射2、CartToPolar与PolarToCart(笛卡尔坐标与极坐标的变换)3、离散余弦变换DCT(cvDCT)4、积分图像(cvIntegral)5、距离变换(cvDistTransform)6、陆地移动距离(EMD)- cvCalcEMD2,还可以度量两个分布之间的相似性7、反向投影(cvCalcBackProject)-- 参考学习OpenCV例程ch7_原创 2011-10-19 19:39:39 · 3969 阅读 · 0 评论 -
第八章 - 轮廓 - 查找轮廓、表示轮廓、绘制轮廓
1、查找轮廓轮廓(contour)到底是什么? 一个轮廓对应一系列的店,也就是图像中的一条曲线,OpenCV中一般用序列来存储轮廓信息,序列中的每一个元素是曲线中一个点的位置。轮廓树? OpenCV将得到的轮廓聚合成一个轮廓树,把轮廓的包含关系编码到树结构中,保护的轮廓在树中体现为节点。轮廓树有4种拓扑结构,CV_RETR_EXTERNAL、CV_RETR_CC原创 2011-10-31 19:25:35 · 10168 阅读 · 0 评论 -
【OpevCV数据结构归总】
OpenCV里面用到了很多图像相关的数据结构,熟练掌握它们是学习图像的基础。1、IplImageIplImageIplImage IPL 图像头 typedef struct _IplImage{int nSize; /* IplImage大小 */int ID; /* 版本 (=0)*/int nChannels; /*原创 2011-10-19 20:09:02 · 7471 阅读 · 0 评论 -
第八章 - 轮廓 - 深入分析轮廓
本小节学习轮廓的常用操作,识别和处理,深入理解轮廓的相关算法及原理。1. 多边形逼近当需要对图像进行形状分析时,需要使用多边形逼近一个轮廓,使得顶点数目变少,算法原理比较简单,核心就是不断找多边形最远的点加入形成新的多边形,直到最短距离小于指定的精度。OpenCV里面用函数cvApproxPoly()实现。ApproxPoly用指定精度逼近多边形曲线 CvSeq* cvAp原创 2011-11-02 19:10:58 · 14037 阅读 · 1 评论 -
第九章 – 图像局部与分割 – 背景场景和分割前景目标的方法(平均背景法)(例程待实现)
平均背景法的基本思路是计算每个像素的平均值和标准差作为它的背景模型,利用平均值和标准差来描述每一个像素的变化。平均背景法使用四个OpenCV函数:cvAcc() 累积图像cvAbsDiff() 计算一定时间内的每帧图像之差cvInRange() 将图像分割成前景区域和背景区域cvOr() 将不同的彩色通道图像合成为一个掩模?图像待实现函数:void Allocate原创 2011-11-11 20:35:54 · 7779 阅读 · 4 评论 -
OpenCV中Lab空间简介及RGB转Lab
Lab颜色模式简介:From:http://wenku.baidu.com/view/67b1b11f650e52ea551898f7.htmlOpenCV中使用cvCvtColor加CV_BGR2Lab转成CIELAB后取值范围: 有时根据需要,我们使用 cvCvtColor( img, img, CV_BGR2Lab );把色彩空间从RG转载 2012-08-28 11:43:00 · 31397 阅读 · 6 评论 -
常用色彩空间分类总结
原创 2012-08-27 11:31:15 · 2416 阅读 · 0 评论 -
opencv2.4.2+vs2010 安装
环境: XP SP3 +32位系统+ VS2010 + opencv2.4.2步骤1: 到这来选择下载 opencv2.4.2.exe .步骤2: 双击exe解压到自己想安装的目录,我这来是解压完后的目录为: C:\ProgramFiles\opencv2.4.2步骤3: 配置环境变量,在系统环境变量和用户环境变量下均配置下面2个环境变量(没有测试过是否2个转载 2012-09-21 10:35:34 · 2520 阅读 · 3 评论 -
数字图像处理知识体系小结
站得高,才能看得远!花了点时间整理了一下数字图像处理知识体系,从宏观上把握图像处理,使自己的学习思路就更加清晰。1.本文大部分内容来自:http://blog.youkuaiyun.com/byxdaz/article/details/43752282.有些内容待添加,特别是opencv相关的算法实现。目录一、数字图像基础...3二、数字图像存储与显示...3三、图像变原创 2012-12-13 21:26:22 · 40119 阅读 · 2 评论 -
第六章 - 图像变换 -梯度和Sobel导数(cvSobel)
cvSobel可用于边缘检测,即简单的梯度算法(边缘提取算法)。(以下两段摘自网络) 首先,我们来开一下计算机是如何检测边缘的。以灰度图像为例,它的理论基础是这样的,如果出现一个边缘,那么图像的灰度就会有一定的变化,为了方便假设由黑渐变为白代表一个边界,那么对其灰度分析,在边缘的灰度函数就是一个一次函数y=kx,对其求一阶导数就是其斜率k,就是说边缘的一阶导数是一个常原创 2011-10-16 12:40:30 · 12440 阅读 · 6 评论 -
Niblack算法的快速实现技巧
From:http://blog.youkuaiyun.com/ieogxw/article/details/3871750在许多文本图像的预处理过程中, 二值化过程是至为关键的一个环节。二值化算法的效果会对后续的处理如版面分析,字符定位以及识别等产生决定性的影响。 二值化的算法有很多,大体分为两类: 全局阈值算法(如otsu算法)和局部阈值算法(如niblack)。而在转载 2013-04-08 19:17:09 · 7808 阅读 · 1 评论 -
第七章 - 直方图与匹配 - 直方图的计算与显示(cvCalcHist)
分析图像、物体和视频信息过程,我们常把看到的物体用直方图(histogram)表示,直方图可以用来描述各种不同的事情,如物体的色彩分布、物体边缘梯度模板,以及表示目标位置的概率分布。直方图广泛应用在计算机视觉应用中,简单说,直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中,bin中的数值是从数据中计算出的统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。直方图获得的是数据原创 2011-10-27 20:49:13 · 18028 阅读 · 5 评论 -
第六章 - 图像变换 - 直方图均衡化(cvEqualizeHist)
我们可以对图像做点事情尝试扩大其动态范围,对这个操作最常用的技术是直方图均衡化,可以将比较淡的图像变换为比较深的图像(即增强图像的亮度及对比度)。直方图均衡化后面潜在的数学原理是一个分布(输入的亮度直方图)被映射到另一个分布(一个更宽,理想统一的亮度值分布),映射函数是一个累积分布函数。对于连续分布,结果将是准确的均衡化。在cvEqualizeHist中,原始图像及目标图像必须是单通道,大小相同的原创 2011-10-22 22:18:34 · 11822 阅读 · 6 评论 -
第六章 - 图像变换 - 卷积和离散傅里叶变换DFT(cvDFT)
利用DFT可以大大加快卷积运算的速度,因为卷积定理说明空间域的卷积运算可以转换为频域的乘法运算。-------------------------------------------------------------------------------GetOptimalDFTSizeGetOptimalDFTSize对于给定的矢量尺寸返回最优原创 2011-10-22 21:05:50 · 17734 阅读 · 4 评论 -
第五章 - 图像形态学 - 漫水填充算法(cvFloodFill)
漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。cvCopyImagecvFloodFill原创 2011-10-09 23:25:52 · 11036 阅读 · 2 评论 -
第六章 - 图像变换 - 卷积边界(cvCopyMakeBorder)
cvCopyMakeBorder()函数可以复制图像并制作边界,将特定图像轻微变大,然后以各种方式自动填充图像边界,当Bordertype=IPL_BORDER_REPLICATE时,原始图像边缘的行和列被复制到大图像的边缘,当Bordertype=IPL_BORDER_CONS原创 2011-10-16 10:44:13 · 8738 阅读 · 1 评论 -
第六章 - 图像变换 - 卷积(cvFilter2D)
第五章终于翻篇了,看自己写的东西还是觉得思维很混乱,有些东西理解的不深入,一直处于似的非懂的状态。但是第一遍的学习希望能建立一个知识框架,了解一个大概,毕竟刚入门图像,等到第二遍的时候再细细考究每一个算法的实现。--------------------------------原创 2011-10-15 23:06:56 · 17234 阅读 · 6 评论 -
第六章 - 图像变换 - 霍夫线变换(cvHoughLines2)
霍夫变换是一种在图像中寻找直线、圆及其他简单形状的方法,霍夫线变换是利用Hough变换在二值图像中找到直线。利用CV_HOUGH_PROBABILISTIC,对应PPHT(累计概率霍夫变换)?这个算法的具体实现有待深究!!!----------------------原创 2011-10-16 22:35:41 · 16817 阅读 · 0 评论 -
第六章 - 图像变换 - Canny算子边缘检测(cvCanny)
Canny是常用的边缘检测方法,其特点是试图将独立边的候选像素拼装成轮廓。(参考:摘自网络)John Canny于1986年提出Canny算子,它与Marr(LoG)边缘检测方法类似,也属于是先平滑后求导数的方法。John Canny研究了最优边缘检测方法所需的特原创 2011-10-16 15:21:29 · 60549 阅读 · 0 评论 -
第六章 - 图像变换 -拉普拉斯变换(cvLaplace)
拉普拉斯变换也可以用作边缘检测,用二次导数的形式定义。拉普拉斯变换(Laplace Transform),是工程数学中常用的一种积分变换。关于拉普拉斯和傅里叶变换的对比及意义参考这里-------------------------------------------原创 2011-10-16 13:58:56 · 21381 阅读 · 0 评论 -
第五章 - 图像形态学 - 自适应阈值(cvAdaptiveThreshold)
自适应阈值:是一种改进了的阈值技术,其中阈值本身是一个变量,自适应阈值T(x,y)的每个像素点都不同,通过计算像素点周围的b*b区域的加权平均,然后减去一个常数来得到自适应阈值。 cvAdaptiveThreshold方法:Provides adaptiv原创 2011-10-09 20:02:23 · 29641 阅读 · 5 评论 -
第五章 - 图像形态学 - 阈值化(cvThreshold),通道求和
阈值化: 希望对图像中的像素做出最后决策,或直接剔除一些低于或高于一定值的像素,在OpenCV中,cvThreshold()可以完成这个任务,基本思想是给定一个数组和一个阈值,然后根据数组中每个元素的值是低于还是高于阈值来进行处理。本例程chapte原创 2011-09-29 11:06:31 · 7982 阅读 · 0 评论 -
第六章 - 图像变换 - 霍夫圆变换(cvHoughCircles)
霍夫圆变换与直线变换大体上是类似的,但是累加平面会被三维累加容器代替,(x,y,r),x,y确定圆心,r确定半径,但这意味着需要大量内存速度较慢,OpenCV通过一个比较灵活的霍夫梯度法来解决圆变换问题,利用到cvSobel。累加器概念不是很明白??-------------原创 2011-10-18 09:20:16 · 40539 阅读 · 16 评论 -
第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
本例程涉及到几个数据结构及方法,CvMemStorage、cvPyrSegmentation()、CvConnectedComp、cvGetSeqElem(). CvMemStorageCvMemStorageGrowing memory storage原创 2011-09-27 22:19:16 · 8041 阅读 · 8 评论 -
第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)
拉伸、收缩、扭曲、旋转是图像的几何变换,在三维视觉技术中大量应用到这些变换,又分为仿射变换和透视变换。仿射变换通常用单应性建模,利用cvWarpAffine解决密集映射,用cvTransform解决稀疏映射。仿射变换可以将矩形转换成平行四边形,它可以将矩形的边压扁但必须保持边是平行的,也可以将矩形旋转或者按比例变化。透视变换提供了更大的灵活性,一个透视变换可以将矩阵转变成梯形。当然,平行四边形也是原创 2011-10-19 20:01:17 · 50833 阅读 · 12 评论 -
第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[2] - 透视变换(cvWarpPerspective)
透视变换(单应性?)能提供更大的灵活性,但是一个透视投影并不是线性变换,因此所采用的映射矩阵是3*3,且控点变为4个,其他方面与仿射变换完全类似,下面的例程是针对密集变换,稀疏图像变换则采用cvPerspectiveTransform函数来处理。---------------------------------------------------------------------------原创 2011-10-20 12:36:51 · 33482 阅读 · 8 评论 -
第六章 - 图像变换 - 图像映射到极指数空间(cvLogPolar)
对于二维图形,Log-polar转换表示从笛卡尔坐标到极坐标的变化,广泛应用在计算机视觉中。此函数模仿人类视网膜中央凹视力,并且对于目标跟踪等可用于快速尺度和旋转变换不变模板匹配。本例程实现极坐标变化,并反转。-------------------------------------------------------------------------------------------原创 2011-10-21 22:33:13 · 12054 阅读 · 3 评论 -
第九章 – 图像局部与分割 – 视频中是直线像素采样(cvInitLineIterator )
本章开始学习新的内容,如何从图像中将目标或部分目标分割出来,也希望将感兴趣的目标区域分割出来,比如将一个人的脸或手分割出来。背景减除(差分)是最基本的图像处理操作,处理方法是建立背景模型,然后将背景模型和当前的图像进行比较,减去这些已知的背景信息,则剩下的目标物大致就是所求的前景目标了,但是该方法受累于一个不常成立的假设:所有像素点都是独立的。本例程考察图像中的像素点在一段时间内如何变化,从视频中原创 2011-11-08 20:55:32 · 5552 阅读 · 5 评论