APP下载

基于OpenCV的数字图像处理技术研究与实现

2019-02-07邹宏伟

无线互联科技 2019年22期
关键词:机器视觉

邹宏伟

摘   要:近年来,机器视觉图像处理技术得到了大力发展,如何提高数字图像处理的效率和性能是人们广泛关注的热点话题。文章将利用OpenCV编译技术来加强数字图像处理效果,先建立OpenCV环境,进而完成OpenCV视频图像采集应用,利用已截取的图像来完成边缘检测和角点提取与检测。

关键词:机器视觉;数字图像处理技术;OpenCV

数字图像处理技术是计算机视觉、机器视觉等现代技术实现的技术前提。为了满足更多用户在图像处理方面的高质量需求,现代图像处理往往需要加强像素级别的合理操作,从而有利于开展各种基于图像采集的数字化分析与理解。OpenCV作为数字图像处理技术中的开源算法数据库,基于计算机VC++语言所构建的编译环境运行,是不少数字图像处理以及计算机视觉用户的得力辅助工具。现阶段,以OpenCV图像处理算法完成的图像处理与仿真分析,已经在实际工程中广泛应用。

1    基于OpenCV数据库的程序环境构建

1.1  安装OpenCV

OpenCV图像处理算法数据库的安装过程要关注对环境变量的设置,选中“Add\OpenCV\bin to the system PATH”选项后,可完成对环境变量PATH的载入。假定已安装好的OpenCV 路径为C:\Program Files\OpenCV。进入VC++环境,依次在菜单中点选Tools—Options—Directories,确认lib路径为Library files,要包含所有OpenCV库文件路径。

1.2  程序框架的规范构建

按以下步骤完成对OpenCV应用程序的创建:(1)新建工程,依次点选文件—新建—工程,下一步可选win32 Application或win32 console appiication。(2)新建独立工作空间workspace,或直接加载新项目到当前已建Workspace。(3)依次点选next—An empty project/ok。(4)新建工程文件,依次点选文件—new—files,并选C++ Source file/ok。(5)配置工程,依次点选工程—设置—所有配置,点“连接”后,点击“对象、模块库”添加“cxcore.1ib cv. 1ib m1. 1ib cvaux. lib highgui. 1ib cvcam. 1ib”模块库。按上述5步操作就可完成OpenCV算法数据库的编程环境创建。

2    利用OpenCV完成图像采集

本文利用OpenCV算法数据库对视频头拍摄的图像进行采集,可使用相关抓取程序来予以实现。将程序语句输入到新建C++Source file 中,重新连接摄像头,就能直接得到视频图像[1]。本次实验所采集到的视频数字图像如图1所示。

3    基于OpenCV的图像技术处理

文章所探讨的OpenCV图像技术处理主要是利用计算机软件完成截图的图像变换、几何变换、滤波、边缘检测、直方图以及数学形态学处理等内容,通过各种技术能够直接对图像进行分析与理解,采集后完成底层处理,并形成较高质量的图像以便后期的机器视觉应用。

3.1  从已获图像中截图

人们往往会对静态图像中的一部分内容感兴趣,可以利用软件对感兴趣的区域进行必要的截图。将部分要截取的图像称为感兴趣区域(Region of Interest,ROI),截图过程主要用到的变量或函数如下:

CvRect ROI_rect_src;//截取图像ROI位置与大小

CvRect ROI_rect_dst;//目标图像ROI

cvSetImageROI(src_img,ROI_rect_src);//明确矩形框架后,设定待截图像目标区域函数

cvShowImage(”src_img”,src_img);//加载完成指定图像ROI函数

3.2  图像处理中的边缘检测技术

通常,各种图像包含的各类目标的边缘灰度值常涵盖有关该图像的海量原始信息。边缘检测常常使用各种已经成熟的算子来完成,常见的有高斯差分边缘检测算子DoG,Sobel边缘检测算子、Canny边缘检测算子、二阶微分Laplacian边缘检测算子和高斯-拉普拉斯算子LOG等,基本原理都是通过对灰度突变类型的二阶导数进行分割来展开实例计算,各种算子的应用有所侧重[1]。

3.2.1  Sobel边缘检测算子

Sobel边缘检测算子是典型的基于一阶导数的边缘检测算子,主要思想是考察目标图像上出现的不同的像素,特别是对不同像素的四周各邻点灰度加权差进行计算,求得邻点与就近像素点的邻近权值。如图2所示,若存在某一像素点[i , j],按Sobel算法思想,其偏导数可用下列公式计算:

Sobel算子可表示为:

其中,Δfx和Δfy能够通过建立两个3×3卷积模板来表示。对于数字图像而言,其中出现的任何一点像素点就能用此两个模板以卷积形式实现,因此,图像边缘检测也基于两个模板在图像中所作规律性运动而实现。

3.2.2  Canny边缘检测算子

Canny边缘检测算法同样是基于卷积运算的算法应用,主要是结合目标图像同时考虑平滑滤波脉冲响应完成一阶微分运算。计算结果能够表现经平滑处理后的图像,表达式为:

图像梯度的计算可按以下式子展开:

则有卷积运算为:

式子中的Δh(x,y)算子,一般稱之为一阶微分高斯算子,主要是因算法中多次利用高斯函数来充当平滑滤波工具。Canny边缘检测技术中,对于梯度幅值的限制主要采用非极大点抑制的方法,能够较为理想地解决因平滑变模糊后的图像所出现的边缘增宽的问题。

经过以上算法的运算,可以得到图像处理中边缘检测的相关结果。如图3所示。其中,图3(a)表示图1(c)经过Sobel边缘检测算子处理后的效果,图3(b)表示图1(c)经过Canny边缘检测算子处理后的效果,图3(c)表示图1(b)经过Sobel边缘检测算子处理后的效果。

3.3  图像处理中的角点提取技术

对于目标图像而言,其中的角点能够成为描述事物运动状态的重要凭证,还能够积极辅助完成图像中视觉特征点的提取与描述。通常,数字图像的角点由图像不同目标、不同空间等边缘交点或边缘曲率较大的点组成,所以整体上具有相当高的曲率。通过分析角点信息,能够从中挖掘到图像目标的具体几何形状。

當前,图像角点提取的方法较多,常用的两种思路为:(1)先描述图像边界,完成提取,再计算角点。(2)直接测出灰度图像的角点。此外,还可以通过建立最小化代价函数等数学方法完成角点的探寻和计算。图像角点探测寻求方法也有很多类型,常见的诸如K-R法、Z-H法和Harris法等[2]。本文主要探讨了Harris角点寻求方法,该方法主要思路是应用图像灰度信息挖掘来完成角点检测。通常,在分析图像角点时都需要紧密联系图像灰度的变化特征。基于角点与自相关数的曲率特性的相关性,可直接列出自相关函数,并在探测像素点进行一阶泰勒多项式展开,进而可得到基于Harris法的角点探测函数工具。

对于选定的像素点而言,其中的角点探测函数工具计算值若超出限定值,就称该像素点为角点。利用Harris法完成角点探测后,通过软件的仿真对角点所在区域进行灰度内插值拟合,就能够完成角点的提取工作。

4    结语

计算机数字图像处理技术是众多行业领域不可缺少的功能性应用,能够成为围绕图像开展合理分析、数字化理解和规范特征识别的重要技术支撑。为了提高图像处理的效率,应该认真研究各种算法的实用性。采用OpenCV图像处理算法数据库对相关算法进行表达和实现,是有效增强图像处理与计算机视觉的可行手段,值得扩大研究与应用。

[参考文献]

[1]江伟.机器视觉图像中目标识别及处理方法研究[D].北京:华北电力大学,2015.

[2]王福斌,李迎燕,刘杰,等.基于OpenCV的机器视觉图像处理技术实现[J].机械与电子,2010(6):54-57.

猜你喜欢

机器视觉
大场景三维激光扫描仪在研究生实践教学培养中的应用