Opencv2图像算法库分析要点Word文件下载.docx
- 文档编号:21625409
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:22
- 大小:1.64MB
Opencv2图像算法库分析要点Word文件下载.docx
《Opencv2图像算法库分析要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《Opencv2图像算法库分析要点Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
8.1单镜头标定………………………………………………………………………………………………………………………..………………17
8.2双镜头标定………………………………………………………………………………………………………………..……..……………….18
9.双目视觉及3D重建………………………………………………………………………………………………………………….………………….19
9.1双目视觉………………………………………………………………………………………………………………………………..………….19
9.23D重建………………………………………………………………………………………………………………………………..……………20
10.并行运算/GPU加速……………………………………………………………………………………………………………………..…………….21
第三章Opencv2尚未包括的算法模块(截止至版本2.4.8)…………………………………………………………………………………….22
11.结构光3D重建……………………………………………………………………………………..…………………………………………………..22
12.小波分解与重构…………………………………………………………………………………………….…………………………………………..23
13.图像压缩…………………………………………………………………………………………………………………………………………………..23
附:
参考资料……………………………………………………………………………………………………………...……...………………………………..23
修订历史记录
日期
版本号
修订内容
修订人
2014-3-15
V1.0
新建
罗海风、王智谦
文件批准动态
批准人
第一章简介
本文档简要介绍opencv2(具体截止至版本2.4.8)中涉及到的主要算法基本原理、应用范围和涉及领域。
从算法应用角度将opencv2函数库中各算法进行整理归类,归纳成十个主要的算法库。
同时介绍一些未被opencv2实现的常用图像算法模块,对这些算法进行简要的应用和性能描述。
第二章Opencv2主要算法归类
1.图像基本操作
主要包括图像各种预处理操作。
如直方图、图像腐蚀膨胀、区域分割、滤波、二值化、边缘检测、图像增强等基础算法,通常用于其他算法的预处理操作。
1.1直方图相关算法
直方图是对数据进行统计,将统计值组织到一系列事先定义好的bin(直方图中的柱子)中。
bin中的数值是从数据中计算出的特征的统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。
无论如何,直方图获得的是数据分布的统计图。
直方图是一幅图像中各像素灰度出现频次的统计结果,它只反映图像中不同灰度值出现的次数,而没反映某一灰度所在的位置。
也就是说,它只包含了该图像的某一灰度像素出现的概率,而丢失了其所在的位置信息。
提供功能有:
产生图像直方图、图像背投影直方图、对比直方图、直方图均衡化,EMD(EarthMoversDistance,即陆地移动距离)直方图,归一化。
直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
图1.1直方图效果图
1.2腐蚀与膨胀相关算法(Erosion与Dilation)
所谓的灰度级膨胀和腐蚀即将而知图像的二值形态学运算推广到灰度图像上。
对于一幅图像的腐蚀(膨胀)运算定义为对每个像素赋值为某个领域内输入图像灰度级的最小(或最大值)。
在二值变换中的结构元素只代表一个领域,而在灰度级变化中,结构元素是一个二元函数,它规定了希望的局部灰度级性质。
在求的邻域内最大值(或最小值)的同时,将结构元素的值相加(相减)。
膨胀是在模板卷积的基础上做或运算,腐蚀则是做与运算。
他们的运用广泛:
消除噪声,分割独立的图像元素,以及连接相邻的元素;
寻找图像中的明显极大值区域或极小值区域。
图1.2腐蚀膨胀效果图
1.3区域分割
分水岭变换是一个流行的图像处理算法,用于快速分割图像为同类区域。
它背后的原理是,如果将图像视为拓扑结构的地图,那么均质区域对应的是被陡峭边缘包围的平坦盆地。
设想一个个“集水盆”中存在积水,且水位不断升高,淹没梯度较低的地方,当水漫过程停止后,图像就可以被分割成几块连通区域。
分水岭算法有不同的实现方法。
GabCut图像分割算法,它同时能够将一幅图像分割为背景及前景物体。
GabCut在计算时更加复杂,但是产生的结果要精确许多对于期望从表态图像中提取前景物体的应用,如将一幅图中的物体剪贴到另一幅图中,这是最佳算法。
图1.3a图像分割:
分水岭算法效果图
图1.3b图像分割:
1.4滤波(Filtering)
滤波是信号处理及图像处理中的一个基本操作,旨在特定的应该程序中,选择性地提取图像中被认为传达重要信息的部分。
滤波去除图像中的噪声,提取感兴趣的视觉特征,允许图像重采样。
在频域分析的框架下,滤波操作的作用是增强部分频段,同时限制(或衰减)其他频段。
OPENCV主要滤波器:
低通滤波器、中值滤波器、方向滤波器检测边缘、积卷变换等。
其中利用方向滤波器和拉普拉斯变换可以对图像的边缘进行检测。
图1.4a高斯滤波效果图
图1.4b中值滤波效果图
图1.4cfilter2D变换效果图
1.5二值化
将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。
其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。
所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
OpenCV中有两个函数可以实现图片的二值化:
adaptiveThreshold、threshold
图1.5二值化效果图
1.6边缘检测
图像最基本的特征是边缘,边缘是图像分割所依赖的最重要特征。
经典的边缘检测方法,是对原始图像按像素的某领域构造边缘检测算子。
OPENCV主要提供通过Sobel算子、Laplace算子、Canny算子来实现图像的边缘的检测。
图1.6aCanny算子边缘检测效果图
图1.6b三中边缘检测算子效果图(Sobel/Laplace/Canny):
1.7图像增强
直方图均衡化是图像增强处理中常见的方法之一,其基本的思想是通过均衡化处理调整图像灰度分布,达到改善图像对比度的目的。
由于图像对比度是决定一幅图像主观质量的重要因素,因此直方图均衡化被广泛应用于图像的增强处理。
图1.7Laplace算子图像锐化效果图
2.几何形态抽取
主要包括图像中各种几何形态的提取、拟合和识别,基本类型为直线、圆、椭圆、轮廓、连通区域等。
图像通过阈值分割和边缘提取来分割图像,使用此两种方法时物体的边界都明确返回得到或通过一些后处理推导得到。
由边界点组的轮廓,生成大量的数据,但是通常并不感兴趣如此大数数据的信息,此类算子将轮廓数据拟合成几何基本单元的方法。
图2a椭圆拟合
图2b圆形拟合
3.简单模板匹配
模板与目标图案的初级扫描匹配。
仅适用于直接匹配,对模板旋转、缩放等支持效果不好。
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.使用OpenCV函数matchTemplate在模板块和输入图像之间寻找匹配,获得匹配结果图像。
OpenCV通过函数matchTemplate实现了模板匹配算法.可用的方法有6个:
平方差匹配method=CV_TM_SQDIFF;
标准平方差匹配method=CV_TM_SQDIFF_NORMED;
相关匹配method=CV_TM_CCORR;
标准相关匹配method=CV_TM_CCORR_NORMED;
相关匹配method=CV_TM_CCOEFF;
标准相关匹配method=CV_TM_CCOEFF_NORMED。
图3a输入原始图像(左)模版图像(右)
图3b不同频率分量上匹配效果图
图3c匹配效果图
4.检测特征点及特征匹配
基于特征描述点的模板匹配。
适用于任意情况下的模板匹配,支持旋转、缩放等各种复杂情况,但运算耗时较大。
特征点又称兴趣点、关键点,它是在图像中突出且具有代表意义的一些点,通过这些点我们可以用来识别图像、进行图像配准、进行3D重建等。
它依赖于这个想法,即不再观察整幅图像,而是选择某些特殊的点,然后对它们执行局部分析。
如果能检测到足够多的这种点,同时它们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就很有效。
可以做到如:
使用二维特征点(Features2)和间映射(Homography)寻找已知物体;
平面物体检测等。
视频例子:
图4特征点匹配效果图
5.视频序列处理
基于视频序列的图像算法,主要包括前后景区分、动作跟踪等。
提取视频中的每个单独帧,那其它OPENCV不同图像处理函数可以应用到每个帧上。
可以对视频序列实施时序分析的算法,比较相邻帧以进行物跟踪,随时间累积图像统计数据以提取前景物体。
OPENCV提供一个易用的框架以提取视频文件和USB摄像头中的图像帧。
图5a视频中特征点跟踪效果图
图5b应用跟踪视频中提取前景物体效果图
6.级联分类器
Opencv自带完整的分类器模块,包括用于物体检测的分类器和分类器训练算法。
用于对放置位置、大小、旋转等不定的目标物体进行检测(最常见的是人脸检测),检测准确度取决于分类器训练样本规模和质量。
图6a人脸检测和人眼检测效果图
图6b人脸检测效果图。
注意到有时存在误检和漏检。
7.机器学习
主要包括用于模式识别的算法模块,包括SVM、ANN等,理论上可以实现对各种模式识别的应用,如人脸识别、字符识别、车牌识别、语音识别,但opencv自带机器学习模块实际效果不是很好,主要作为学习参考之用。
7.1支持向量机SVM
支持向量机(SVM)是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面。
换句话说,给定一些标记(label)好的训练样本(监督式学习),SVM算法输出一个最优化的分隔超平面。
OpenCV开发SVM算法是基于LibSVM软件包开发的,LibSVM是台湾大学林智仁(LinChih-Jen)等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。
图7.1一个二维数据集分类任务中,SVM效果示意图
7.2神经网络ANN
人工神经网络(artificialneuralnetwork,缩写ANN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。
神经网络由大量的人工神经元联结进行计算。
大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。
现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式。
人工神经网络通常是通过一个基于数学统计学类型的学习方法(LearningMethod)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。
神经网络常用于各种模式识别处理,如字符识别等,效果如图所示:
图7.2神经网络用于字符识别效果图
8.单目及双目镜头标定
单镜头及双镜头的标定,在视觉测量应用中常作为预处理环节。
8.1单镜头标定
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。
无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。
因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
图8.1一种常见标定板的单镜头标定示意图
8.2双镜头标定
摄像机标定,是指建立摄像机几何成像模型,描述空间坐标系中的景物点同它在图像平面上的像点之间的对应关系,并求取该模型的各参数的过程。
在基于双目立体视觉的三维重建系统中,摄像机标定是非常关键的环节,精确求取双摄像机的内外参数以及径向和切向畸变不仅可以直接提高三维恢复的精度,而且可以为后续的特征匹配奠定良好的基础。
图8.2a双镜头标定的原理图
图8.2b双镜头标定示意图
9.双目视觉及3D重建
主要用于双摄像头重建三维场景的相关算法。
目前不借助主动结构光源(特定形状的激光源)情况下,重建的场景精度不是很高。
9.1双目视觉
双目立体视觉(BinocularStereoVision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
融合两只眼睛获得的图像并观察它们之间的差别,使我们可以获得明显的深度感,建立特征间的对应关系,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图像。
双目立体视觉测量方法具有效率高、精度合适、系统结构简单、成本低等优点,非常适合于制造现场的在线、非接触产品检测和质量控制。
对运动物体(包括动物和人体形体)测量中,由于图像获取是在瞬间完成的,因此立体视觉方法是一种更有效的测量方法。
双目立体视觉系统是计算机视觉的关键技术之一,获取空间三维场景的距离信息也是计算机视觉研究中最基础的内容。
图9.1双目视觉建立深度图效果
9.23D重建
被动光三维重建是利用多福图像相关信息来进行目标重建的方式,目前常常利用多视点图像信息来完成。
有两种常见的立体求取方式。
其中立体匹配方式可以获得较精确的3D模型,而基于轮廓的3D重建则多用于一些实时应用之中。
图9.2a基于立体匹配的3D重建
图9.2b基于轮廓的3D重建
10.并行运算/GPU加速
主要利用GPU并行计算加速图像处理速度的OpenCL模块。
OpenCL可以实现GPGPU(General-purposecomputingongraphicsprocessingunits,通用图形处理器)运算,是一种利用处理图形任务的GPU来计算原本由CPU处理的通用计算任务。
这些通用计算常常与图形处理没有任何关系。
由于现代图形处理器强大的并行处理能力和可编程流水线,令流处理器可以处理非图形数据。
特别在面对单指令流多数据流(SIMD),且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序。
从OpenCV2.4.3开始,至最新发布的2.4.8版本中,OpenCV都会得到了OpenCL的有力支持。
OpenCV-CL正逐渐地成为功能优异而性能高效的计算机视觉库,在GPU显卡上表现出优异性能。
下面列举出了一些目前已经移植到OpenCL的OpenCV功能,截止至OpenCV2.4.8的一些功能:
•OpenCV-CL二进制下载
•初始化和信息
•单个元操作
•图像变换
•还原
•色彩转换
•丰富的滤波引擎,包括有各种类型的图像滤波器,如高质量图像增强
•图像的几何转换
•基于均值漂移的变换,K-means,聚类
•角特征检测器
•模板匹配
•描述符匹配
•特征检测,Haar,特征跟
•特征描述符
•加速的鲁棒特征(speeded-uprobustfeatures,SURF)
•梯度方向直方图(HOG)
•人脸识别(ViolaJones)
•光流,如LK,TVL1,Farneback
•立体声对应:
BM,BP,CSBP
•基于TVL1光流的超分辨率
第三章Opencv2尚未包括的算法模块(截止至版本2.4.8)
11.结构光3D重建
高精度三维重建的主要方法,需配备主动结构光源(特定形状的激光源)。
12.小波分解与重构
图像分析和模式识别中常见的预处理算法。
在人脸识别等较复杂的模式识别领域中非常重要。
13.图像压缩
业界已有众多标准化的图像压缩算法,opencv未包含。
参考资料
[1]G.Bradski,A.Kaebler,“LearningOpenCV,ComputerVisionwiththeOpenCVLibrary”.
[2]RobertLaganiere,“OpenCV2ComputerVisionApplicationProgrammingCookbook”.
[3]“TheOpenCVTutorials,Release2.4.8.0”.
[4]OpenCV中文论坛,
[5]OpenCV官网资料,http:
//docs.opencv.org/doc/user_guide/user_guide.html
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Opencv2 图像 算法 分析 要点