OpenCV
文章平均质量分 75
通过OpenCV经典视觉库来开发视觉算法的相关应用
AutoXTruck
自动驾驶行业从业者,分享相关技术文章与行业心得体会,希望对你有所帮助。
展开
-
【OpenCV学习系列】之Background Subtraction
Background Subtraction简介代码分析小结参考原创 2021-02-24 12:16:06 · 2074 阅读 · 1 评论 -
【OpenCV实践之】描述符BEBLID
目录BEBLID简介BEBLID论文浅述C++代码部分实验结果小结参考文献BEBLID简介 局部特征描述子基本停滞许久没有出现新的算法,最近看到OpenCV-4.5.1集成了一个新的二进制描述子。BEBLID(Boosted efficient binary local image descriptor)在速度上面与精度上面要优于ORB算法。应用过相关ORB算法都知道,ORB算法由于其速度卓同时匹配性能很高而得名,广泛应用于工业界。那么,现在出现BEBLID描述子,匹配成功率高于ORB几乎能够媲美SI原创 2021-02-23 21:36:09 · 6842 阅读 · 11 评论 -
OpenCV实践之GMS网格运动统计策略的特征匹配算法
GMS算法简要介绍经典的特征匹配算法(SIFT、SURF、ORB等)存在的问题是鲁棒的算法速度较慢,快速的算法鲁棒性较差。局部特征匹配算法的核心问题在于邻域一致性的运用,稀疏邻域一致性特征又不能很好的定义邻域,因此导致特征匹配算法计算量大。Grid-based Motion Statistics(GMS)通过网格划分、运动统计特性的方法可以迅速剔除错误匹配,以此来提高匹配的稳定性。GMS核心思想...原创 2019-02-20 23:49:54 · 7747 阅读 · 31 评论 -
OpenCV-Python实践之ASIFT框架仿射特征匹配算法
Affine-SIFT仿射特征匹配算法简介图像之间经过较大视差的匹配任务在于解决局部仿射不变特征的提取与描述,目前Harris/Hessian-Affine与MSER局部不变特征提取主要策略是采用拟合椭圆归一化方式。关于Harris-Affine与MSER-Affine算法都是首先提取尺度不变或区域中心(角、斑)点,然后归一化收敛到仿射变形6个参数估计,并不是完全的仿射估计方式,具体原理可以参考...原创 2019-03-06 07:47:33 · 5461 阅读 · 22 评论 -
OpenCV实践之LATCH描述符匹配算法
LATCH描述符简介Learned Arrangements of Three Patch Codes(LATCH)是2015年CVPR关于二值化描述符优化变种二值特征描述子。经典二值描述子LBP等主要通过计算特征点局部窗口内n个邻域点对进行比较值来形成bit串,形成bit串后通过计算汉明码来提升计算速度。相关二值改进描述子使用滤波算法来降低局部邻域噪声的干扰,但是也一定程度降低局部邻域的唯一性...原创 2019-02-26 20:55:23 · 2518 阅读 · 4 评论 -
OpenCV-Python实践之Feature-Matching目标识别
SIFT+FLANN+RANSAC算法简述目标识别:简单点解释就是一幅图像中出现的不同目标能够清晰的判别出来。举例下图:不同的书籍就是不同的目标,如果在加上这些不同的目标在图中的具体位置,就是目标检测。经典解决目标识别的方法主要有:模板匹配法、ANN法、特征匹配法、基于知识的方法和基于数据的方法。模板匹配法很简单:就是给出一幅图书的模板图,通过计算该模板图在待识别图从上到下从左往右的相关参数(均...原创 2019-03-03 23:08:26 · 1486 阅读 · 0 评论 -
彩色图像主颜色分析
为什么要分析图像主颜色?在解答为什么需要分析图像中出现的主要颜色,我们先看一下图片:上图为图像主要成分的颜色分析显示,分别显示裤子、T恤、手提包的颜色。可以比较清晰的知道,在进行主颜色分析之前,首先对图像中出现的目标进行检测,然后通过彩色图像主颜色分析。现在来说下分析图像主颜色用途:通过大量分析图像主颜色,来了解个体、群体用户的喜好颜色等等。图像的主颜色分析有几种方式:可以通过聚类方法,或者...原创 2019-03-13 21:18:32 · 6355 阅读 · 6 评论 -
OpenCV-Python学习之Draw-Functions
OpenCV-Python绘图函数函数cv2.line()def line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None):"""line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img. @bri原创 2019-03-09 11:43:48 · 1971 阅读 · 0 评论 -
图像滤波算法系列实战总结之一
简述: 图像滤波是为了去除图像中存在的噪声,提升图像的有效信息清晰度。一般情况下,噪声在傅里叶变换频谱中处于图像中的高频段,所以衍生出一系列低通滤波算法,(Lower Pass Filter, LPF)算法在滤除噪声的同时也会一定程度的对边缘高频信息削弱。通常,滤波算法主要通过与图形进行卷积运算来进行图像滤波。早期滤波算法主要有:均值滤波、中值滤波、高斯滤波、双边滤波算法等。在介绍各个滤波算法...原创 2019-03-19 21:59:50 · 2333 阅读 · 1 评论 -
OpenCV实践之特征点评估代码解析
重复率评估指标简述 我的博客写了一些特征匹配(尺度+仿射)相关匹配算法,但是一直都没有写过如何评估特征点的鲁棒性策略。如何进行特征点提取算法的鲁棒性评估是写这篇博客目的所在。重复率指标就是采用最多的特征点检测性能的评估策略:repeatability=∑dist(mpoints′,npoints)min(mpoints′,npoints′)repeatability=\frac {\sum{...原创 2019-03-26 20:11:10 · 2721 阅读 · 6 评论 -
OpenCV-Python学习之图像基础(二)算术操作
图像添加(Image Addition): Image Addition操作是将两幅图像的像素值进行相加,可以使用OpenCV的add()函数或者是Numpy的简单相加操作:res = img1 + img2. 两幅相加图像的在像素值类型与图像深度属性必须一致,且第二幅图像只能是标量值。 使用OpenCV的add()函数与numpy的直接加操作在像素值越界时,计算结果会存在一点差别。Ope...原创 2019-04-10 15:09:15 · 406 阅读 · 0 评论 -
OpenCV-Python学习之图像基础(一)基础操作
图像像素、属性获取: OpenCV读取图像后,可以通过图像的像素坐标来对图像像素值进行访问。我们知道OpenCV读取彩色图像的通道顺序为BGR排序:获取图像坐标(100, 100)的像素值:import cv2img = cv2.imread('./data/messi5.jpg')# get the value from coordinatepixel_value = img[...原创 2019-04-10 17:16:52 · 430 阅读 · 0 评论 -
OpenCV-Python实践之图像梯度算子
图像梯度算子简介 相信只要是懂些图像处理的知识,都知道图像梯度的含义。不知道是否考虑过为什么图像梯度如此广泛认知与使用?为什么不使用图像纹理、图像色彩、图像相位等等,在这里我并不是说上述除了图像梯度之外,其它的图像信息不重要,我只是想说图像梯度最为广泛的被研究与使用。下面我们来看一幅图像: 从上图坐标为灰度图像,右边为Laplacian算子提取的图像梯度图;现在我们来看一下左边图片中的A...原创 2019-04-06 19:11:31 · 2552 阅读 · 0 评论 -
OpenCV-Python学习之视频流API接口
视频读取接口VideoCapture类Python调用VideoCapture类API接口:''' VideoCapture(params) : 0 为计算机默认摄像头 1 为自定义的视频文件或摄像头来源'''cap = cv2.VideoCapture(params) 我们知道Python调用底层C++的VideoCapture类API接口,下面我们...原创 2019-04-08 10:23:50 · 4619 阅读 · 0 评论 -
OpenCV学习之SVD技术进行图像分解与重构
简述 上一篇博文算法学习之SVD理论推导介绍了SVD矩阵分解的完整过程,感兴趣的可以去阅读一下。本文以图像为基础,利用SVD理论对二维图像矩阵进行分解,同时选取不同的特征值个数来对图像进行重构。主要使用OpenCV第三方视觉库完成SVD应用过程,原谅我这个调包小虾米。 使用OpenCV库的SVD功能API函数时,简短说一下SVD的分解矩阵,我们通过对图像矩阵AAA(m×nm×nm×n,其中...原创 2019-04-21 22:25:25 · 2652 阅读 · 1 评论 -
OpenCV-Python实践之Feature-Matching算法
特征匹配算法简介OpenCV库函数里面集成了相关特征匹配算法,目前有:Brute-Force Matcher(BF)算法、FLANN算法使用频率较高。暴力匹配算法比较简单:就是通过描述子descriptors1中任意特征去匹配descriptors2中的所有特征,得到距离的结果值,然后通过Ratio-test抑制来降低错误匹配点。FLANN算法是最近邻算法的快速近似,以此来提升匹配的计算效率,下...原创 2019-03-01 23:45:44 · 4911 阅读 · 0 评论 -
OpenCV实践之线特征匹配算法
线特征算法检测简介LSD(Line Segment Detector)直线检测分割算法,在图像梯度变化明显的区域来检测局部直线的轮廓,因此也称作直线分割。LSD算法在输入图像预处理进行下采样,目的在于降低图像中出现的锯齿效应。通过计算图像中的梯度幅值进行梯度排序,(边缘区域梯度幅值较大),然后通过区域增长算法来进行线特征的检测。具体算法细节可参考:LSD论文。LSD算法优点:①线性时间内检测出亚...原创 2019-02-27 21:13:52 · 14597 阅读 · 19 评论 -
OpenCV实践之SIFT/SURF算法
OpenCV之SIFT/SURF算法接口介绍 早先OpenCV版本对SIFT/SURF算法可以直接调用,自OpenCV2.x之后就将SIFT/SURF等申请专利算法封装在opencv_contrib库(点集下载)函数中,需要手动下载与编译!编译过程需要CMake与Visual Studio进行,关于具体的编译过程网上存在很多教程基本都是正确的,我这里只是简单强调一下下载opencv_cont...原创 2018-04-30 17:39:19 · 1485 阅读 · 0 评论 -
OpenCV学习系列之模板匹配
模板匹配算法介绍模板匹配算法主要为模板图像在基准图上进行由左往右、由上到下进行相关运算,最后得到一个进行相关运算后的系数矩阵:系数矩阵中的参数值用来度量模板图像在基准图中的子区域相似程度。采用相关系数来进行评判,模板匹配算法主要有基于灰度值的模板匹配、梯度值的模板匹配、相位相关匹配等方法。 灰度值匹配: 模板图像未经过任何预处理,直接取其像素值在原始图像上进行相关运算,灰度匹配算法优点...原创 2018-03-04 16:45:44 · 3339 阅读 · 0 评论 -
OpenCV视频追踪实例之akaze_tracking
使用AKAZE算法进行视频追踪(对比ORB算法)简述orb与akaze算法 David. Lowe提出的SIFT算法由于卓越的性能,在过去二十多年几乎应用于目标追踪、图像匹配等相关计算机视觉领域。2012年Pablo F. Alcantarilla所提出的KAZE算法在匹配鲁棒性与速度上要优于SIFT算法;但是,KAZE算法的时间依然较高:因此原作者在13年提出Accelerated-KAZ...原创 2018-03-01 23:02:25 · 4073 阅读 · 6 评论 -
OpenCV实践之ORB算法
ORB算法简述 ORB:An Efficient Alternative to SIFT or SURF是2011年ICCV上作者Rublee所提出,主要针对目前主流的SIFT或者SURF等算法的实时性进行改进。当然在实时性大为提升的基础上,匹配性能也在一定程度较SIFT与SURF算法降低。但是,在图像Two Views匹配对之间变换关系较小时,能够匹配性能逼近SIFT算法,同时计算耗时极大...原创 2018-04-24 21:56:33 · 9284 阅读 · 6 评论 -
OpenCV实践之HarrisAffine仿射匹配算法
HarrisAffine仿射匹配算法简述 之前我的一篇博客HarrisAffine仿射不变匹配算法 已经详细介绍HarrisAffine匹配算法的详细过程,在那篇博客末尾提供了HessianAffine匹配算法,但是并没有提供HarrisAffine仿射匹配算法。原因其实主要在于HarrisAffine的源代码我自己测试时候鲁棒性比较差,另一方面算法迭代仿射不变点耗时较长。最近有研究Open...原创 2018-05-05 14:44:08 · 3854 阅读 · 2 评论 -
OpenCV实践之MSER/MSCR极值区域检测算法
MSER/MSCR极值区域检测算法 OpenCV中features2d.hpp中MSER类接口实现了MSER极值区域检测算法,MSER类根据输入参数判断是否为彩色or灰度图像进行不同的算法检测。若输入为灰度图像,那么采取MSER极值区域检测算法,若输入为彩色图像,则采用MSCR极值区域检测算法。关于MSER接口函数类如下: OpenCV中封装MSER算法提供两个功能,分别对灰度图...原创 2018-05-05 15:32:17 · 3445 阅读 · 4 评论 -
OpenCV实践之MSER仿射匹配算法
MSER相关简述 极值稳定检测MSER算法是目前针对图像变形最为稳定的特征检测算法,主要采取分水岭算法来进行极值区域提取,具体细节就不多说了。大家可以参考MSER作者论文,当然也出现针对MSER算法的改进版本,分为两个方面:其一是对MSER算法进行加速,即计算效率提升;其二是针对彩色图像提出的MSCR算法,论文中述说对于彩色图像提取极值区域要优于MSER算法。但是,近两日我在OpenCV开放...原创 2018-05-05 18:47:38 · 3003 阅读 · 15 评论 -
OpenCV学习之OpponentColorDescriptor源码
自灰度SIFT描述子提出以来,现实空间中图像都为彩色模式下,灰度进行描述有许多色彩空间信息被丢弃。因此,ColorDescriptor描述子也相继研究,提出一系列CSIFT、HueSIFT、rgSIFT、RGB-SIFT、Opponent-SIFT等描述子,在2008年Koen E.A对当前彩色描述子进行评估,得出结论Opponent空间描述子性能最佳,具体细节见论文[Evaluation of ...原创 2018-05-13 17:17:20 · 879 阅读 · 0 评论 -
OpenCV实践之OpponentColorDescriptor描述子匹配
Opponent描述子简述 之前博客更新Two Views Image Match都是基于灰度模式下的匹配,例如SIFT、SURF等一系列灰度描述子。当然,彩色空间图像能够增加图像描述的信息,提升特征点的鲁棒性。同时,色彩空间信息也提高了计算的复杂度,如何有效的进行权衡,这取决于当前应用场景更加关注鲁棒性与唯一性还是计算的实时性问题。因此,出现一批彩色描述子来提升特征点信息的鲁棒性。本文基于...原创 2018-05-13 20:42:16 · 1811 阅读 · 0 评论 -
OpenCV学习之DynamicAdaptedFeatureDetector
DynamicAdaptedFeatureDetector简述 图像处理领域中,阈值参数一直都是很难解决的问题。主要原因在于针对不同的需求要设置不同的阈值参数来达到比较满意的结果。典型的例如:图像中角点检测阈值的设置。阈值太大或者太小都会导致检测角点数目要么过多或者过少。检测过多的角点肯定存在许多重复的点,过少的点会导致后续的匹配等信息不够等问题。所以,目前来看许多都是已实验结果的经验值来进...原创 2018-06-03 17:32:56 · 752 阅读 · 1 评论 -
OpenCV学习之GridAdaptedFeatureDetector
GridAdaptedFeatureDetector简述 博客有两周没有进行更新,最近换了工作新环境需要适应工作会比较忙。端午三天假期,第一天约见之前的朋友聊了一下。希望自己写博客计划能够一直坚持下去,ok话不多说。今天上午打开电脑,该学习一下OpenCV源码中的知识点。主要学习了OpenCV函数源码中FeatureDetector中里面有一个GridAdaptedFeatureDetect...原创 2018-06-17 10:23:26 · 1501 阅读 · 2 评论 -
OpenCV学习之PyramidAdaptedFeatureDetector
PyramidAdaptedFeatureDetector简述 OpenCV源码FeatureDetector类中的函数create()列举了四种创建特征检测初始化方式:Grid、Pyramid、Dynamic、HARRIS、Feature2d+detectorType共4种检测特征方式。其中Grid与Dyamic已经在之前的博客中有过简单的分析与实验验证,HARRIS检测与Feature2...原创 2018-06-17 12:18:20 · 700 阅读 · 5 评论 -
OpenCV学习之KeyPoint
OpenCV中CV_EXPORTS类别KeyPoint与KeyPointsFilter头文件分析 用OpenCV一段时间了,说实话KeyPoint接触也算比较多,一直没有时间对其数据结构进行分析。今天打开源码对其keypoint.cpp文件进行简单分析一下:keypoint.cpp主要包含两个类KeyPoint与KeyPointsFilter。其中KeyPoint包含基础的功能函数:读写存储...原创 2018-06-30 14:02:54 · 15653 阅读 · 0 评论 -
OpenCV使用Python/C++读取图片&PIL相互转换
Python-OpenCV 与C++_OpenCV读取图像Image接口imread()函数 opencv c++/python的imread函数可以很容易的读取不同的格式图像(JPG、PNG、TIF等):C++使用法则有两个函数进行图像读取imread()函数与cvLoadImage()函数,不过随着opencv的版本更新发展,cvLoadImage()函数使用渐渐降低,同时未来的open...原创 2018-11-03 16:18:27 · 4008 阅读 · 0 评论 -
OpenCV学习之Data Structure Conversion
OpenCV数据结构KeyPoint、Point2f、DMatch相互转换 最近使用OpenCV进行图像特征提取中会涉及到KeyPoint、Point2f、DMatch数据结构之间的转换与拆分等。网上已有大多数解决方案,查看OpenCV源码中KeyPoint类时候已经封装好KeyPoint与Point2f数据结构之间的转换,可以直接调用KeyPoint::convert()函数进行转换。下面...原创 2018-04-30 11:37:48 · 868 阅读 · 0 评论