![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
文章平均质量分 87
视觉一只白
学习深度学习与图像处理方面,有兴趣的可以一起交流。
展开
-
基于距离变换和分水岭算法的图像分割
一、图像分割的定义根据灰度、颜色、纹理和形状等特征,把图像分成若干个特定的、具有独特性质的区域,这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性,并提出感兴趣目标的技术和过程。 它是由图像处理到图像分析的关键步骤。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像索赋予相同的编号。目的是将图像中像素根据一定的...原创 2018-03-24 10:44:28 · 14671 阅读 · 1 评论 -
opencv 形态学处理
一、话说形态学图像形态学中的几个基本操作:腐蚀、膨胀、开操作、闭操作。1.1 腐蚀结构A被结构B腐蚀的定义为, A⨀B={z|(B)z⊆A}A⨀B={z|(B)z⊆A}可以理解为,移动结构B,如果结构B与结构A的交集完全属于结构A的区域内,则保存该位置点,所有满足条件的点构成结构A被结构B腐蚀的结果。 1.2 膨胀结构A被结构B膨胀的定义为, A⨁B={z|(B^)z⋂A≠∅}A⨁B={z|(B^...原创 2018-04-06 10:11:35 · 9752 阅读 · 2 评论 -
opencv 直线拟合
一、话说直线拟合霍夫直线检测容易受到线段形状与噪声的干扰而失真,这个时候我们需要另辟蹊径,通过对图像进行二值分析,提取骨架,对骨架像素点拟合生成直线,这种做法在一些场景下非常有效,而且效果还比较好。前面已经讲过霍夫变换,这里就不再叙述,直接上干货。二、距离变换距离变换是二值图像处理与操作中常用手段,在骨架提取,图像窄化中常有应用。距离变换的结果是得到一张与输入图像类似的灰度图像,但是灰度值只出现在...原创 2018-04-18 15:12:13 · 16130 阅读 · 5 评论 -
opencv 浅谈图像修复
一、话说图像修复在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏。如果我们想让这些受到破坏的额图片尽可能恢复到原样,Opencv能帮我们做到吗?OpenCV真的有这个妙手回春的功能!别以为图像修补的工作只能用PS或者美图秀秀那些软件去做,其实由程序员自己写代码去做更加高效!图像修复技术的原理...原创 2018-04-24 10:51:11 · 4157 阅读 · 1 评论 -
opencv LBP特征与行人识别
一、话说LBP特征局部二值模式(Local Binary Pattern, LBP)是一种有效的纹理描述算子,它具有旋转不变性和灰度不变性的显著的有点。已经广泛的应用于纹理分类、纹理分割、人脸图像分析等领域。本文就LBP算法做简单的讲解,并在opencv中加以实现。二、LBP算子局部二值模式是一种灰度范围内的纹理描述方式。算法的思想是利用结构化思想提取窗口特征,再利用统计化做最终整体特征的提取。最...原创 2018-04-20 11:20:30 · 3068 阅读 · 1 评论 -
opencv 漫水填充
一、话说漫水填充漫水填充是一种用特定的颜色填充连通区域,通过设置可连通像素的上下限以及连通方式达到不同的填充效果的方法。漫水填充经常用来标记或者是分离图像的一部分,以便对其进行进一步处理货分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或者只处理指定的像素点,操作的结果总是某个连续的区域。他的基本作用有两个:1、标记或分离目标区域;2、获取掩码区域,只处理掩码指定的像素点,加速处理过程...原创 2018-04-21 10:50:27 · 2786 阅读 · 1 评论 -
opencv 无缝克隆
一:API函数介绍OpenCV3.x的图像计算模块多了新算法API-无缝克隆(Seamless Cloning),主要是针对图像编辑,局部修改等应用场景实现迁移对象与原图像场景的无缝克隆。相关函数与参数说明如下:void seamlessClone( InputArray src, InputArray dst, InputArray mask, Point p, OutputArray blen...原创 2018-05-03 11:21:02 · 1323 阅读 · 0 评论 -
opencv Kmeans之图像分割
一、话说kmeansKMeans算法MacQueen在1967年提出的,是最简单与最常见数据分类方法之一并且最为一种常见数据分析技术在机器学习、数据挖掘、模式识别、图像分析等领域都用应用。如果从分类角度看KMeans属于硬分类即需要人为指定分类数目,而MeanSift分类方法则可以根据收敛条件自动决定分类数目。从学习方法上来说KMeans属于非监督学习方法即整个学习过程中不需要人为干预的学习方法,...原创 2018-05-04 10:07:20 · 841 阅读 · 0 评论 -
opencv mean-shift图像分割
一、话说mean-shift均值漂移算法是一种通用的聚类算法,它的基本原理: 对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。可以利用均值偏移算法,可实现彩色图像分割。 (本质是经过迭代,将收敛点的像素值代替原来的像素值,从而去除了局部相似的纹理,同时保留了边缘等差异较大的特...原创 2018-05-05 10:34:27 · 1390 阅读 · 0 评论 -
opencv fast特征点检测
一、话说FastFAST算法的思想是,若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。即当你发现周围人的表演跟你不同时,你就要考虑下是不是走错片场了。在FAST算法中有一个重要的区间:在这个区间中,像素会过亮或过暗,在接下来步骤讲解中会用到。二、原理1确定候选角点某个像素 ,其像素值为 ,以 为圆心,半径为3,确定一个圆,圆上有16个像素,记为 。确定一个阈值,记为 。...原创 2018-05-13 11:21:13 · 2279 阅读 · 0 评论 -
opencv 彩色图像的高斯反向投影
一、话说反向投影图像反向投影的最终目的是获取ROI然后实现对ROI区域的标注、识别、测量等图像处理与分析,是计算机视觉与人工智能的常见方法之一。图像反向投影通常是彩色图像投影效果会比灰度图像效果要好,原因在于彩色图像带有更多对象细节信息,在反向投影的时候更加容易判断、而转为灰度图像会导致这些细节信息丢失、从而导致分割失败。最常见的是基于图像直方图特征的反向投影。我们这里介绍一种跟直方图反向投影不一...转载 2018-05-07 20:50:41 · 472 阅读 · 0 评论 -
opencv 仿射变换和透视变换
一、话说仿射变换和透视变换对于平面区域,有两种方式的几何转换:一种是基于2×3矩阵进行的变换,叫仿射变换;另一种是基于3×3矩阵进行的变换,叫透视变换或者单应性映射。关于仿射变换和透射变换的矩阵变换,这篇博文不做重点讨论,因为图像本质就是矩阵,对矩阵的变换就是对图像像素的操作,很简单的数学知识。仿射变换可以形象的表示成以下形式。一个平面内的任意平行四边形ABCD可以被仿射变换映射为另一个平行四边形...原创 2018-05-15 10:09:13 · 6507 阅读 · 0 评论 -
导向滤波的原理及实现
一、双边滤波双边滤波很有名,使用广泛,简单的说就是一种同时考虑了像素空间差异与强度差异的滤波器,因此具有保持图像边缘的特性。先看看我们熟悉的高斯滤波器:其中W是权重,i和j是像素索引,K是归一化常量。公式中可以看出,权重只和像素之间的空间距离有关系,无论图像的内容是什么,都有相同的滤波效果。再来看看双边滤波器,它只是在原有高斯函数的基础上加了一项,如下其中 I 是像素的强度值,所以在强度差距大的地...原创 2018-06-12 17:29:45 · 4688 阅读 · 1 评论 -
hog+svm训练自己的分类器
一、原理简述HOG: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征. SVM: (Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识...原创 2018-09-03 20:58:02 · 11547 阅读 · 21 评论 -
图像处理常用的颜色空间
1、BGR颜色空间所具有的特性如下:1.这是一个加色空间,通过B,G,R,之间的线性组合获得颜色。2.三通道通过撞击表面的光亮相关联。2、HSV颜色空间HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。、这个模型中颜色的参数分别是:色调(H),饱...原创 2019-03-18 10:01:13 · 6331 阅读 · 0 评论 -
opencv 透视变换
一、话说透视变换 透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping)。我们知道在图像的仿射变换中需要变换矩阵是一个2x3的两维平面变换矩阵,而透视变换本质上空间立体三维变换,根据其次坐标方差,要把三维坐标投影到另外一个视平面,就需要一个完全不同的变换矩阵M,所以这个是透视变换跟OpenCV中几何仿射变换最大的不同。 Open...原创 2018-04-22 11:03:41 · 24561 阅读 · 5 评论 -
opencv 轮廓
一、话说轮廓关于轮廓,我们一定能想起前面的边缘检测,但直接进行边缘检测后会出现一个尴尬的情况:只计算出了边缘,但对机器来说不知道哪些是物体的轮廓,而很多时候我们确实肥肠希望能找出物体的轮廓。轮廓检测能较好的化解这一尴尬的情况。对于轮廓,官方指导中给出了这样的解释:“轮廓可以理解为图像中具有相同颜色或密度的位于边界的连续点的集合,轮廓是形状分析和对象识别的有利工具。”在OpenCV中,我们常用fin...原创 2018-04-05 12:03:42 · 547 阅读 · 0 评论 -
如何学习opencv
本文授权转载自贾老师的微信公众号"OpenCV学堂"。更多信息可扫描文末二维码关注公众号(知乎已将二维码转换成链接,可自动跳转到微信)。一:学习OpenCV三个阶段人工智能带火了计算机视觉的人才需求,作为计算机视觉应用开发框架OpenCV也越来越受到欢迎,市场需求大增,很多人听说了之后就迫不及待的想加入这波大军,这其中很多人他可能懂应用编程,但是计算机视觉零基础,一般都是我要识别个什么,而且还有时...转载 2018-04-12 09:20:03 · 22998 阅读 · 3 评论 -
线性滤波与模糊
一、模糊与模糊对应的词汇是锐化。所以到现在有四个关联的词汇了:卷积,滤波,模糊和锐化。我们先不考虑锐化,所以有:频率角度:模糊是为了削弱噪点的影响,而噪点通常是高频的滤波:使用滤波的手段,抑制高频,就可以削弱噪点的影响卷积:实现滤波作用的一种工具然后再来考虑锐化:让滤波器能抑制低频和中频,通过高频,就能实现锐化所以模糊还是锐化,得看滤波器是啥样子的。噪点只是少数派,我们要以大局为重,因此小林会重点...原创 2018-03-30 10:06:09 · 1496 阅读 · 0 评论 -
Harr 分类器简述
1. 基本概念 Haar分类器 = Haar-like特征 + 积分图(Integral Image)方法 + AdaBoost + 级联 Haar分类器算法的要点如下: 1)使用Haar-like特征做检测 2)使用积分图(Integral Image)对Haar-like特征求值进行加速 3)使用AdaBoost算法训练区分人脸和非人脸的强分类器 4...原创 2018-03-15 11:04:23 · 1120 阅读 · 0 评论 -
Hog,SIFT以及LBP特征简述
一、三者原理上的区别1.SIFT:Scale-Invariant Feature Taransform,尺度不变特征变换。尺度空间的极值检测:搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和旋转鲁棒性较强的点。特征点定位:在每个候选位置上,通过一个拟合精细模型(尺度空间DoG函数进行曲线拟合)来确定位置尺度,关键点的选取依据他们的稳定程度。特征方向赋值:基于图像局部的梯度方向,分配给...转载 2018-03-15 09:30:46 · 613 阅读 · 0 评论 -
opencv 非线性滤波与模糊
线性滤波因其是线性计算,所以容易构造,但却是一种平庸的方法,实现的效果也是很平庸。要想实现蒂花之秀,就要不走寻常路,所以小林祭出非线性滤波。非线性滤波在OpenCV中主要有中值滤波和双边滤波,他们相比线性滤波,在去除噪点方面更胜一筹。一、中值滤波中值滤波的基本思想是,将待处理像素点的邻域像素值由小到大排列,然后取其中值作为待处理像素的像素值。如何我们将核的大小设置为3,中值滤波就会对核中的9个数字...原创 2018-03-31 10:02:09 · 254 阅读 · 0 评论 -
目标跟踪与检测小结
一、目标检测目标检测即为从序列图像中将变化区域从背景图像中提取出来。运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。1.静态背景:背景差分法,帧间差分法,光流法。在opencv中常用的是absdiff,GMM(高斯混合模型),Lucas-Kanade 方法等算法。2.动态背景(需要进行图像的全局运动估计与补偿):块匹配法,光流估计法。在opencv中常用...原创 2018-03-22 09:21:55 · 6979 阅读 · 0 评论 -
opencv 绘制直方图
一、话说直方图说到直方图,同学们一定会想到统计学里的直方图(没有想起来的抓紧去翻下中学数学课本)。所谓直方图啊,就是把一大坨东西分成好几部分(横坐标),然后看看每一部分有多少(纵坐标)。比如说康娜酱的班里要做个人爱好的统计,喜欢跳绳的有5人,喜欢唱歌的有8人,喜欢读书的有6人,超喜欢康娜酱的有1人(才川同学了解一下)。那么图像中的直方图又是个啥子呢?喜欢摄影的同学一定见过。图像中常见的直方图是亮度...原创 2018-04-01 21:21:26 · 871 阅读 · 0 评论 -
opencv 浅谈反向投影
一、话说反向投影首先,讲解下它的英文名,projection除了项目工程的意思外,还有投影的意思,数学中也用 表示投影。反向投影其实是直方图运算的逆过程。直方图运算是统计每个灰度值对应的像素个数,而反向投影则是将像素个数回送到该像素个数对应灰度区间的像素位置。来看一个例子。假设有下面这个图像矩阵:然后计算直方图,将灰度值划分为如下四个区间:[0,2] [3,5] [6,7] [8,1...原创 2018-04-09 10:55:07 · 1993 阅读 · 1 评论 -
opencv 基本类型概述
一、点类在大多数程序中,点类是通过类似形式的别名来实例化的cv :: Point2i或cv :: Point3f,最后一个字母表示所需的原语从中构建点。 (这里,b是无符号字符,s是a短整数,i是32位整数,f是32位浮点数,d是64位整数,位浮点数。)二、颜色类cv :: Scalar实际上是一个四维点类。 像其他人一样,它实际上是与模板类关联,但访问它的别名返回实例其中所有成员都是双精度浮点的...原创 2018-03-27 11:21:56 · 843 阅读 · 1 评论 -
opencv 角点检测
一、话说角点三种基本的图像特征边缘,对应下图黑框部分角点,对应下图红框部分团块,对应下图蓝框部分下面介绍三种经典的角点检测的算法(前方公式高能,非战斗人员可直接跳到API和Demo部分)Harri算法Shi-Tomasi算法亚像素级角点检测二、Harri算法Harri算法作为一种角点检测的经典算法,核心思想还是对像素进行梯度运算,总结角点处梯度的特征,前面讲到了XY角点的梯度特征,小林就以这个特征...原创 2018-04-15 11:04:51 · 1452 阅读 · 0 评论 -
opencv 凸包
一、话说凸包凸包(Convex Hull)是一个计算几何(图形学)中常见的概念。简单来说,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它是能包含点集中所有点的。理解物体形状或轮廓的一种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects)。二、处理凸包的一般步骤预处理获取轮廓调用函数获得凸包画出凸包(可选),计算凸缺陷(可选)关于凸包,在...原创 2018-04-03 10:09:48 · 2856 阅读 · 0 评论 -
opencv 图像和大数组类型
一、The cv::Mat Class: N-Dimensional Dense Arrays 1.1 Creating an Array Mat m; m.create(3, 10, CV_32FC3); m.setTo(Scalar(100.0f, 100.0f, 100.0f)); Mat n(3, 10, CV_32FC3, Scalar(100.0f, 100.0f, 100.0...原创 2018-03-28 10:32:34 · 579 阅读 · 1 评论 -
opencv 提取直线与验证码
一、原理图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。我们可以通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀:输出的像素值是结构元素覆盖下输入图像的最大像素值。腐蚀:输出的像素值是结构元素覆盖下输入图像的最小像素值。二、结构元素上述膨胀...原创 2018-04-11 10:36:53 · 897 阅读 · 0 评论 -
opencv 霍夫变换
一、霍夫线变换坐标系的角度:说起直线,我们会想到笛卡尔坐标系(即x-y坐标系)下的直线方程,细分之则有点斜式、截距式等, 是我们最熟悉的一种。但直线垂直于x轴时斜率 不存在,这给我们带来许多不便之处。这时极坐标就carry全场了,它与笛卡尔坐标系的转换关系: ,变形可得 , 为原点到直线的距离,也常用 表示,示意图如下:由此极坐标下,直线可用 表示。这就启发我们,同一直线上的点具有相同...原创 2018-04-04 11:20:12 · 690 阅读 · 0 评论 -
opencv 数组操作
一、More Things You Can Do with Arrays 正如我们在前一章中看到的,数组上有许多基本操作,现在由数组类的成员函数处理。 然而,除了这些之外,还有更多的操作最自然地表示为“朋友”函数,这些函数要么将数组类型作为参数,要么将数组类型作为返回值,要么将数组类型作为返回值。 Mat img,m0,m1,m2,m3,img1; img = imread("D:\\cv_st...原创 2018-03-29 09:35:57 · 1972 阅读 · 0 评论 -
opencv 绘画和注释
一、绘画 circle(img, Point(200, 200), 50, Scalar(0, 0, 255), 2); line(img, Point(100, 200), Point(200, 300), Scalar(0, 255, 0), 2); rectangle(img, Rect(100, 200, 100, 100), Scalar(255, 0, 0), 2);最简单的就是话...原创 2018-03-29 09:56:27 · 361 阅读 · 0 评论 -
ubuntu安装clions和opencv
一、安装clions到官网下载安装包:点击下载解压文件到当前文件夹:tar -zxvf clion-2019.1.3.tar.gz 进入解压后的文件夹,运行.sh文件即开始安装过程cd clion-2019.1.3/bin/ sh ./clion.sh 然后一直点击继续就可完成安装。二、安装opencv到官网进行下载:点击下载,选择相应的版本,然后...原创 2019-05-12 19:20:38 · 2512 阅读 · 3 评论