Opencv图像识别从零到精通(37)----KNN算法
一 KNN简介 K最近邻(k-Nearest Neighbor,KNN)分类算法,该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。 KNN算法的过程为: 选择一种距离计算方式, 通过数据所有的特征计算新数据与已...
2017-03-03 12:36 阅读(740)
Opencv图像识别从零到精通(36)----DFT离散傅里叶变换
这篇就是图像的时域到频域的开始,也是信号处理中比较常见的傅立叶变换。一、傅立叶图像 对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分。也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。 这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。傅立叶变换就是一个用来将函数分解的工具。 2维图像的傅立叶...
2016-08-27 17:40 阅读(2869)
Opencv图像识别从零到精通(35)---SURF
SIFT在前面已经说过了,可以说在实现过程中是精益求精,用了各种手段来删除不符合条件的特征点,同时也得到了很好的效果但是实时性不高,于是就有了SURF(speeded up robusr features).SURF是一种尺度,旋转不变的detector和descriptor.最大的特点是快!在快的基础上保证性能(repeatability,distinctiveness和robustne...
2016-08-25 17:09 阅读(3329)
Opencv图像识别从零到精通(34)---SIFI
一、理论知识 Scale Invariant Feature Transform,尺度不变特征变换匹配算法,对于算法的理论介绍,可以参考这篇文章http://blog.csdn.net/qq_20823641/article/details/51692415,里面很详细,可以更好的学习。这里就不多介绍。后面就挑选重点的来说二、SIFT 主要思想 SIFT算法是一种提取局部特征的...
2016-08-24 15:11 阅读(1594)
Opencv图像识别从零到精通(33)----moravec角点、harris角点
一、角点 图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints)、特征点(feature points) 被大量用于解决物体识别,图像识别、图像匹配、视觉跟踪、三维重建等一系列的问题。我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析。如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那...
2016-08-22 12:23 阅读(1846)
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 阅读(2572)
Opencv图像识别从零到精通(31)----图像修补,分离合并通道
一、图像修复简介 图像修复是图像复原中的一个重要内容,其目的是利用图像现有的信息来恢复丢失的信息。可用于旧照片中丢失信息的恢复,视频文字去除以及视频错误隐藏等。简言之,图像修复就是对图像上信息缺损区域进行信息填充的过程,其目的就是为了对有信息缺损的图像进行复原,并且使得观察者无法察觉到图像曾经缺损或者已经修复 图像修复技术简单来说,就是利用那些被破坏区域的边缘,即是...
2016-08-19 17:29 阅读(1719)
Opencv图像识别从零到精通(30)---重映射,仿射变换
一、序言面对图像处理的时候,我们会旋转缩放图像,例如前面所提高的resize 插值改变,也是几何变换:几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。...
2016-08-17 17:09 阅读(3193)
Opencv图像识别从零到精通(29)-----图像金字塔,向上上下采样,resize插值
金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低 一、两个金字塔高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔拉普拉斯金字塔(Laplacianpyra...
2016-08-16 15:50 阅读(2211)
Opencv图像识别从零到精通(28)----Kmeans
K-means算法算是个著名的聚类算法了,不仅容易实现,并且效果也不错,训练过程不需人工干预,实乃模式识别等领域的居家必备良品啊,今天就拿这个算法练练手。属于无监督学习中间接聚类方法中的动态聚类流程:1.随机选取样本中的K个点作为聚类中心2.计算所有样本到各个聚类中心的距离,将每个样本规划在最近的聚类中3.计算每个聚类中所有样本的中心,并将新的中心代替原来的中心4.检查...
2016-08-15 16:59 阅读(1505)
Opencv图像识别从零到精通(27)---grabcut
图割graph cuts ----grad cut Graph Cuts算法是用来确定网络流的最小分割,即寻找一个容量最小的边的集合,去掉这个集合中的所有边就可以阻挡这个网络了。需要注意的是,通常所说的Graph Cuts算法是指的采用最大流-最小分割来优化的模型,其它的Graph Cutting算法一般用graphpartitioning这个名词来代替。 首先还得先...
2016-08-14 19:51 阅读(1538)
Opencv图像识别从零到精通(26)---分水岭
分水岭是区域分割三个方法的最后一个,对于前景背景的分割有不错的效果。 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢...
2016-08-13 21:39 阅读(5818)
Opencv图像识别从零到精通(25)------区域分裂与合并
区域分割一般认为有漫水填充,区域分裂与合并,分水岭,这篇是中间的区域分裂和合并。 区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,当图像中某个区域的特征不一致时就将该区域分裂成4 个相等的子区域,当相邻的子区域满足一致性特征时则将它们合成一个大区域,直至所有区域不再满足分裂合并的条件为止. 当分裂到不能再分的情况时,分裂结束,然后它将查找相邻...
2016-08-12 14:24 阅读(2922)
Opencv图像识别从零到精通(24)------漫水填充,种子填充,区域生长、孔洞填充
可以说从这篇文章开始,就结束了图像识别的入门基础,来到了第二阶段的学习。在平时处理二值图像的时候,除了要进行形态学的一些操作,还有有上一节讲到的轮廓连通区域的面积周长标记等,还有一个最常见的就是孔洞的填充,opencv这里成为漫水填充,其实也可以叫种子填充,或者区域生长,基本的原理是一样的,但是应用的时候需要注意一下,种子填充用递归的办法,回溯算法,漫水填充使用堆栈,提高效率,同时还提供了一种方式...
2016-08-11 21:36 阅读(3104)
Opencv图像识别从零到精通(23)----轮廓
当看到轮廓的时候,发现没有办法具体到什么, 因为关系轮廓的东西似乎有很多,例如检测轮廓,提取轮廓,轮廓跟踪,轮廓面积,周长,标记,匹配,还有一系列的外接最小矩形,圆形,椭圆,图像矩,填充孔洞等,不得不说东西真的很好。轮廓其实最容易和边缘检测联系到一起,有很多的相同,但是我理解的是边缘是检测,是预处理,而轮廓就可能是你要用的特征。一、函数:一个是找,一个是画void findContou...
2016-08-07 17:42 阅读(2825)
Opencv图像识别从零到精通(22)-----hough变换检测直线与圆
今天要看的是霍夫变换,常用用来检测直线和圆,这里是把常见的笛卡尔坐标系转换成极坐标下,进行累计峰值的极大值,确定。HoughLines,HoughLinesP,HoughCircles,三个函数,首先先看看原理,最后会用漂亮的matlab图,来回归一下,霍夫直线变换。霍夫线变换:众所周知, 一条直线在图像二维空间可由两个变量表示. 例如:在 笛卡尔坐标系...
2016-08-05 15:58 阅读(2360)
Opencv图像识别从零到精通(21)-----canny算子边缘检测
最后来看看canny算子,这个是被成为最好的算子,因为过程多,有准测,后面会列出来,也是边缘检测的最后一个,所以这里作为结尾,来看看各个边缘检测的效果。边缘检测结果比较Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel...
2016-08-03 13:17 阅读(2145)
Opencv图像识别从零到精通(20)---laplace LOG DOG边缘检测
经过了上一篇的简单的边缘检测,现在来看一下二阶导数的边缘检测,分别是Laplace LOG DOG,看到他们心里还是有点遗憾,要是自己能加快一点学习的步伐,在面试的时候也许就可以轻松回答了,亲爱的你们只是来的晚了2天。希望和我一样的同学,要加快脚步,认真学习了。废话不再多说,让我看看是怎么回事。一、Laplacian Laplacian算子定义为表示成...
2016-08-01 16:01 阅读(2151)
Opencv图像识别从零到精通(19)----Robert,prewitt,Sobel边缘检测
图像的边缘检测,是根据灰度的突变或者说不连续来检测,对于其中的算子有一阶导数和二价导数,这里先说基础的三种方法。 一梯度 首先介绍下梯度,梯度并非是一个数值,梯度严格意义上是一个向量,这个向量指向当前位置变化最快的方向,可以这么理解,当你站在一个山上,你有360°的方向可以选择,哪个方向下降速度最快(最陡峭),便是梯度方向,梯度的长度,表示为向量的长度,表...
2016-07-31 17:45 阅读(5062)
Opencv图像识别从零到精通(18)-------击中击不中
在我们学习了膨胀腐蚀和基于膨胀腐蚀的变化之后,我比较喜欢的一个是击中击不中,因为喜欢所以就要单独列出来,心里总是觉得他可以有很多的用处,以后模版匹配,特征检测都会用,更深入的是,他会加深对膨胀腐蚀的理解,是一个很好的例子。下面先看一个算法步骤和原理:Hit-miss算法步骤:击中击不中变换是形态学中用来检测特定形状所处位置的一个基本工具。它的原理就是使用腐蚀;如果要在一幅图像A上找...
2016-07-30 13:59 阅读(1912)