![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Opencv图像识别从零到精通
文章平均质量分 87
小木匠_
这个作者很懒,什么都没留下…
展开
-
Opencv图像识别从零到精通(28)----Kmeans
K-means算法算是个著名的聚类算法了,不仅容易实现,并且效果也不错,训练过程不需人工干预,实乃模式识别等领域的居家必备良品啊,今天就拿这个算法练练手。属于无监督学习中间接聚类方法中的动态聚类流程:1.随机选取样本中的K个点作为聚类中心2.计算所有样本到各个聚类中心的距离,将每个样本规划在最近的聚类中3.计算每个聚类中所有样本的中心,并将新的中心代替原来的中心4.检查原创 2016-08-15 16:59:07 · 3636 阅读 · 0 评论 -
Opencv图像识别从零到精通(18)-------击中击不中
在我们学习了膨胀腐蚀和基于膨胀腐蚀的变化之后,我比较喜欢的一个是击中击不中,因为喜欢所以就要单独列出来,心里总是觉得他可以有很多的用处,以后模版匹配,特征检测都会用,更深入的是,他会加深对膨胀腐蚀的理解,是一个很好的例子。下面先看一个算法步骤和原理:Hit-miss算法步骤:击中击不中变换是形态学中用来检测特定形状所处位置的一个基本工具。它的原理就是使用腐蚀;如果要在一幅图像A上找原创 2016-07-30 13:59:10 · 7365 阅读 · 0 评论 -
Opencv图像识别从零到精通(20)---laplace LOG DOG边缘检测
经过了上一篇的简单的边缘检测,现在来看一下二阶导数的边缘检测,分别是Laplace LOG DOG,看到他们心里还是有点遗憾,要是自己能加快一点学习的步伐,在面试的时候也许就可以轻松回答了,亲爱的你们只是来的晚了2天。希望和我一样的同学,要加快脚步,认真学习了。废话不再多说,让我看看是怎么回事。一、Laplacian Laplacian算子定义为表示成原创 2016-08-01 16:01:37 · 8872 阅读 · 2 评论 -
Opencv图像识别从零到精通(21)-----canny算子边缘检测
最后来看看canny算子,这个是被成为最好的算子,因为过程多,有准测,后面会列出来,也是边缘检测的最后一个,所以这里作为结尾,来看看各个边缘检测的效果。边缘检测结果比较Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel原创 2016-08-03 13:17:39 · 10139 阅读 · 0 评论 -
Opencv图像识别从零到精通(22)-----hough变换检测直线与圆
今天要看的是霍夫变换,常用用来检测直线和圆,这里是把常见的笛卡尔坐标系转换成极坐标下,进行累计峰值的极大值,确定。HoughLines,HoughLinesP,HoughCircles,三个函数,首先先看看原理,最后会用漂亮的matlab图,来回归一下,霍夫直线变换。霍夫线变换:众所周知, 一条直线在图像二维空间可由两个变量表示. 例如:在 笛卡尔坐标系原创 2016-08-05 15:58:38 · 5751 阅读 · 0 评论 -
Opencv图像识别从零到精通(30)---重映射,仿射变换
一、序言面对图像处理的时候,我们会旋转缩放图像,例如前面所提高的resize 插值改变,也是几何变换:几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。原创 2016-08-17 17:09:01 · 7416 阅读 · 2 评论 -
Opencv图像识别从零到精通(36)----DFT离散傅里叶变换
这篇就是图像的时域到频域的开始,也是信号处理中比较常见的傅立叶变换。一、傅立叶图像 对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分。也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。 这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。傅立叶变换就是一个用来将函数分解的工具。 2维图像的傅立叶原创 2016-08-27 17:40:48 · 10499 阅读 · 0 评论 -
Opencv图像识别从零到精通(31)----图像修补,分离合并通道
一、图像修复简介 图像修复是图像复原中的一个重要内容,其目的是利用图像现有的信息来恢复丢失的信息。可用于旧照片中丢失信息的恢复,视频文字去除以及视频错误隐藏等。简言之,图像修复就是对图像上信息缺损区域进行信息填充的过程,其目的就是为了对有信息缺损的图像进行复原,并且使得观察者无法察觉到图像曾经缺损或者已经修复 图像修复技术简单来说,就是利用那些被破坏区域的边缘,即是原创 2016-08-19 17:29:45 · 17446 阅读 · 1 评论 -
Opencv图像识别从零到精通(32)----直方图对比,模版匹配,方向投影
0、预备知识归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。函数原型:void normalize(InputArray src,OutputArray dst, double alpha=1,doublebeta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )原创 2016-08-20 15:07:09 · 7742 阅读 · 0 评论 -
Opencv图像识别从零到精通(23)----轮廓
当看到轮廓的时候,发现没有办法具体到什么, 因为关系轮廓的东西似乎有很多,例如检测轮廓,提取轮廓,轮廓跟踪,轮廓面积,周长,标记,匹配,还有一系列的外接最小矩形,圆形,椭圆,图像矩,填充孔洞等,不得不说东西真的很好。轮廓其实最容易和边缘检测联系到一起,有很多的相同,但是我理解的是边缘是检测,是预处理,而轮廓就可能是你要用的特征。一、函数:一个是找,一个是画void findContou原创 2016-08-07 17:42:07 · 9516 阅读 · 0 评论 -
Opencv图像识别从零到精通(33)----moravec角点、harris角点
一、角点 图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints)、特征点(feature points) 被大量用于解决物体识别,图像识别、图像匹配、视觉跟踪、三维重建等一系列的问题。我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析。如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那原创 2016-08-22 12:23:57 · 6934 阅读 · 1 评论 -
Opencv图像识别从零到精通(24)------漫水填充,种子填充,区域生长、孔洞填充
可以说从这篇文章开始,就结束了图像识别的入门基础,来到了第二阶段的学习。在平时处理二值图像的时候,除了要进行形态学的一些操作,还有有上一节讲到的轮廓连通区域的面积周长标记等,还有一个最常见的就是孔洞的填充,opencv这里成为漫水填充,其实也可以叫种子填充,或者区域生长,基本的原理是一样的,但是应用的时候需要注意一下,种子填充用递归的办法,回溯算法,漫水填充使用堆栈,提高效率,同时还提供了一种方式原创 2016-08-11 21:36:49 · 19371 阅读 · 0 评论 -
Opencv图像识别从零到精通(25)------区域分裂与合并
区域分割一般认为有漫水填充,区域分裂与合并,分水岭,这篇是中间的区域分裂和合并。 区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,当图像中某个区域的特征不一致时就将该区域分裂成4 个相等的子区域,当相邻的子区域满足一致性特征时则将它们合成一个大区域,直至所有区域不再满足分裂合并的条件为止. 当分裂到不能再分的情况时,分裂结束,然后它将查找相邻原创 2016-08-12 14:24:31 · 16723 阅读 · 0 评论 -
Opencv图像识别从零到精通(34)---SIFI
一、理论知识 Scale Invariant Feature Transform,尺度不变特征变换匹配算法,对于算法的理论介绍,可以参考这篇文章http://blog.csdn.net/qq_20823641/article/details/51692415,里面很详细,可以更好的学习。这里就不多介绍。后面就挑选重点的来说二、SIFT 主要思想 SIFT算法是一种提取局部特征的原创 2016-08-24 15:11:49 · 4965 阅读 · 0 评论 -
Opencv图像识别从零到精通(35)---SURF
SIFT在前面已经说过了,可以说在实现过程中是精益求精,用了各种手段来删除不符合条件的特征点,同时也得到了很好的效果但是实时性不高,于是就有了SURF(speeded up robusr features).SURF是一种尺度,旋转不变的detector和descriptor.最大的特点是快!在快的基础上保证性能(repeatability,distinctiveness和robustne原创 2016-08-25 17:09:59 · 12482 阅读 · 0 评论 -
Opencv图像识别从零到精通(26)---分水岭
分水岭是区域分割三个方法的最后一个,对于前景背景的分割有不错的效果。 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢原创 2016-08-13 21:39:30 · 17941 阅读 · 0 评论 -
Opencv图像识别从零到精通(27)---grabcut
图割graph cuts ----grad cut Graph Cuts算法是用来确定网络流的最小分割,即寻找一个容量最小的边的集合,去掉这个集合中的所有边就可以阻挡这个网络了。需要注意的是,通常所说的Graph Cuts算法是指的采用最大流-最小分割来优化的模型,其它的Graph Cutting算法一般用graphpartitioning这个名词来代替。 首先还得先原创 2016-08-14 19:51:48 · 5018 阅读 · 0 评论 -
Opencv图像识别从零到精通(17)----开运算、闭运算、顶帽、黑帽、形态学梯度、形态学角点、细化、填充
经过了上一篇的膨胀、腐蚀以后,我们就可以用他们组合起来,形成了更多的形态效果,这样就不会太多的改变原来图像的大小,总结了一下,主要包含开运算、闭运算、顶帽、黑帽、形态学梯度、形态学角点、细化、填充这些方面。1.开运算对图像进行先腐蚀后膨胀的操作就是图像的开运算。它的功能是有利于移走黑色前景下的白色小物体。2.闭运算对图像进行先膨胀后腐蚀的操作原创 2016-07-27 11:30:10 · 6144 阅读 · 1 评论 -
Opencv图像识别从零到精通(16)------膨胀腐蚀
形态学操作就是基于形状的一系列图像处理操作。有很多的,这里先看最简单的操作。膨胀与腐蚀(Dilation与Erosion)。能实现多种多样的功能,主要如下:消除噪声,通过低尺寸结构元素的腐蚀操作很容易去掉分散的椒盐噪声点分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。寻找图像中的明显的极大值区域或极小值区域求出图像的梯度(1)腐蚀操作原创 2016-07-26 19:12:02 · 4774 阅读 · 0 评论 -
Opencv图像识别从零到精通(15)-----阈值分割、固定阈值Threshold、自适应阈值分割adaptiveThreshold、OSTU大津法
阈值分割是一种区域分割技术,将灰度根据主观愿望分成两个或者多个灰度区间,利用图像中背景和目标物体的灰度上的差异,旋转一个合适的阈值进行分割。一般的分割有全局分割和局部分割,这是不同的思路,在Opencv中给出了threshold(),adapativeThreshold(),这两个函数中的tpye会给出很多的方法double threshold(InputArray src, Output原创 2016-07-24 18:24:25 · 14365 阅读 · 1 评论 -
Opencv图像识别从零到精通(19)----Robert,prewitt,Sobel边缘检测
图像的边缘检测,是根据灰度的突变或者说不连续来检测,对于其中的算子有一阶导数和二价导数,这里先说基础的三种方法。 一梯度 首先介绍下梯度,梯度并非是一个数值,梯度严格意义上是一个向量,这个向量指向当前位置变化最快的方向,可以这么理解,当你站在一个山上,你有360°的方向可以选择,哪个方向下降速度最快(最陡峭),便是梯度方向,梯度的长度,表示为向量的长度,表原创 2016-07-31 17:45:44 · 21665 阅读 · 1 评论 -
Opencv图像识别从零到精通(29)-----图像金字塔,向上上下采样,resize插值
金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低 一、两个金字塔高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔拉普拉斯金字塔(Laplacianpyra原创 2016-08-16 15:50:53 · 9761 阅读 · 0 评论 -
Opencv图像识别从零到精通(1)------- 安装教程与调试显示成功
不得不说,opencv的安装需要很久,也会出现很多的错误,也是参考了很多的安装教程,最后显示图像的时候,还是很开心的。先来1.下载和安装OpenCV SDKVS2010是默认已经安装的,因为没有什么技巧,这里就不说了。在官网:http://opencv.org/上找到OpenCV windows版下载下来下载完后得到文件OpenCV 2.4.X,双击后会原创 2016-05-13 08:05:03 · 13852 阅读 · 3 评论 -
Opencv图像识别从零到精通(2)-----准备知识
首先你安装好了,然后用一个测试文件(没有测试文件可以找后面教程中的图像显示的代码粘贴),可以正常的运行。 然后还不要着急去学习怎么图像处理,因为还要知道一些常识。 在这个文件下D:\ProgramFiles\opencv\build\include\opencv2会看到很多东西,这些都是需要的模块,里面有很多的要用的东西原创 2016-07-11 11:03:56 · 15301 阅读 · 0 评论 -
Opencv图像识别从零到精通(3)———单图像显示和多图像显示
其实,对于图像显示,对于我们在安装调试opencv的时候,就是作为一个例子,相信看到第三节的话,应该有了正确的配置环境,还有就是对opencv的结构有了一定的理解,那么下面就是进去图像处理的阶段,但是为了更好的学习,所以用已经见过而且能够实现的例子来说问题,相信更加让你感觉到亲近吧。说实话,即使显示成功了一张图片,但是你对里面的东西也不知道的,只有好好的理解,那么到了出现错误的时候才可以更快的原创 2016-07-12 20:53:21 · 8506 阅读 · 0 评论 -
Opencv图像识别从零到精通(4)----cMake与源代码与image watch
其实在学习opencv图像的时候,不是那么需要看源代码。但是还是有想学习一下的人,所以就写出来如何去看源代码,其实名字应该是代码追踪,就是我们在设置断点调试的时候,可以看到内部的定义,一堆一堆,在后面会送上imshow()与imread()的源代码可以用来欣赏学习。 自己看了好多教程,重载了一次软件还,终于能够F11到自己想要的源代码了 vs2010,原创 2016-07-13 18:06:56 · 5979 阅读 · 3 评论 -
Opencv图像识别从零到精通(5)-----Mat_ROI、颜色转换、多图显示、保存输出
其实在看到Mat类的时候,感觉总是怎么那么多功能,没办法就是那么头疼,不过功能多,那么用法也就多,相对的会在图像处理中有很大的重要,所以后面不知不觉中就会回去看看他,这里用ROI来进步说一下Mat,看看实例的应用,这样更舒服一些。然后再说一下颜色转化,因为在图像中,我们会看到彩色图像和灰度图像,他们有处理的共同的方法,也有自己的方法,每种类型都有自己的特征,所以在他们之间的转化是很重要的,这里原创 2016-07-14 16:22:08 · 10667 阅读 · 0 评论 -
Opencv图像识别从零到精通(6)----访问图像像素
图像处理,从开始我们就接触了Mat类,这一个图像容器类,同时也是个矩阵类,那么如何访问图像的像素呢?或者说如何去操作这个矩阵呢?普遍上是说有暗中方法,一个是指针ptr,一个是AT,一个是迭代器,这个是一一来说。不过在进行访问前,要知道像素的存储方式,下面来一张图,是最好的解释,这个是基础,因为后面在对行列进行访问的时候,你不知道存储方式,就一定会出现。一、灰度图像,单通道二原创 2016-07-15 20:49:21 · 6505 阅读 · 5 评论 -
Opencv图像识别从零到精通(7)----图像平移、旋转、镜像
根据vc6.0c++的学习经验,如果可以很好的自己编程,让图像进行平移旋转这些操作,那么就好像能够清楚的看见图像的内部结构,当然这里你怎么访问像素,这个可以自己选一种适合的,最多的是ptr指针,at也是挺多的。看着很简单的变换,可以对图像处理上手的更快,当然对于旋转可能就稍微i难了一点,不过opencv提供了resize(0,remap()等这样的函数,可以方便的让我们进行学习,特别是旋转的时候,原创 2016-07-16 16:49:23 · 20533 阅读 · 4 评论 -
Opencv图像识别从零到精通(8)-----灰度直方图
次数据结构表示了由其图像坐标 和 指定的2D点。可定义为:Point pt;pt.x = 10;pt.y = 8;或者Point pt = Point(10, 8);void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, O原创 2016-07-17 16:51:31 · 22536 阅读 · 4 评论 -
Opencv图像识别从零到精通(9)----对比度亮度改变
一张图像来说,会有不同的亮暗程度,很多时候都要增强一下,增强的方法有很多,从大量可以说是线性变换和非线性变换,当然这是说空间域的,频率域的暂时不考虑。线性变换增强,也是对点的操作,如下图两种常用的点过程(即点算子),是用常数对点进行 乘法 和 加法 运算:两个参数 0" style="border:0px; vertical-align:mid原创 2016-07-18 12:03:38 · 4881 阅读 · 0 评论 -
Opencv图像识别从零到精通(10)-----直方图均衡化与直方图拉伸
一、直方图均衡化 直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。许多图像的灰度值是非均匀分布的,其中灰度值集中在一个小区间内的图像是很常见的,直方图均衡化是一种通过重新均匀地分布各灰度值来增强图像对比度的方法,经过直方图均衡化的图像对二值化阈值原创 2016-07-19 16:32:55 · 11864 阅读 · 1 评论 -
Opencv图像识别从零到精通(11)---一个窗口多图显示
前面介绍了如何批量的读取图片,从而也会有批量的显示一堆图片,那么在平时我们显示图片的时候,会发现都是一个图片一个窗口,会出来很多,这时候就会想到matlab中我们经常会使用subplot显示多张图片在一个窗口,之前http://blog.csdn.net/qq_20823641/article/details/51910066这篇文章也提供了一种方法,可以参考一下,经过进一步学习,从简单到复杂,再原创 2016-07-20 11:56:35 · 6111 阅读 · 0 评论 -
Opencv图像识别从零到精通(12)-----滑动条控制直方图、对比度、亮度、图像相加
经过前面的学习,有了对比度,直方图的基础,所以就想着用这滑动条做一个综合的实例,用滑动条去控制直方图,去滑动条控制对比度和亮度,用滑动条控制融合,也是对基础的一点提高,其中还有很多值得改进的,可以动态显示结果之类的,这里就不多介绍。以后有机会再优化。 学习之前,要知道几个函数的使用方法,其他的出现的函数或者用法,请参考前面的基础例子-----------------------原创 2016-07-21 11:19:44 · 3448 阅读 · 1 评论 -
Opencv图像识别从零到精通(13)----点线圆矩形与鼠标事件
图像中不可少的元素就是点、线、圆、椭圆、矩形,多边形,同时这些也是物体的特征组成单位,在图像识别中必不可少。所以要首先去认识这个元素怎么定义和使用,同时鼠标是电脑的窗口,我们很多的处理都会用到鼠标。本文主要有下面三个部分: (1) 点、线、圆、椭圆、矩形的基础应用 (2)点、线、圆、椭圆、矩形的进阶应用 (3)鼠标事件一、点、线、圆、椭圆、矩形的基础应原创 2016-07-22 08:14:00 · 5598 阅读 · 3 评论 -
Opencv图像识别从零到精通(14)-----线性滤波和非线性滤波
一,噪声的介绍和卷积 二、各个滤波函数的解读,定义与源代码 三、综合所有的滤波,加滑动条控制核大小来blur 四、Matlab 辅助表达 一,噪声的介绍 图像噪声是图像在摄取或传输时所受的随机信号干扰,是图像中各种妨碍人们对其信息接受的因素。很多时候将图像噪声看成是多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概原创 2016-07-23 15:48:02 · 5183 阅读 · 1 评论 -
Opencv图像识别从零到精通(37)----KNN算法
一 KNN简介 K最近邻(k-Nearest Neighbor,KNN)分类算法,该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。 KNN算法的过程为: 选择一种距离计算方式, 通过数据所有的特征计算新数据与已原创 2017-03-03 12:36:39 · 8714 阅读 · 1 评论