基于OpenCV的机器视觉图像处理技术实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# 55 #
右邻点灰度的加权差, 计算邻点与被考察的像素点 接近的权值大小.
对某一像素点 [i , j ] , 考虑其临近点的 Sobel 算 子模板, 如图 2 所示, 则像素点 [i , j ] 的偏导数可计 算如下:
¨f x = (a2 + 2a3 + a4 )- (a0 + 2a7 + a6 ) ( 1)
gcy
5g
5y
根据卷积运算得 :
¨g( x , y ) = ¨f ( x , y ) á h( x , y )
= f (x , y ) á ¨h( x , y )
( 3)
由于多采用高斯函数作为平滑滤波器 , ¨h( x ,
y ) 算子又叫一阶微分高斯算子. Canny 边缘检测中
还要用到非极大点抑制方法限制梯度幅值, 解决图
有时只对一帧图像中某一部分感兴趣, 此时可 以只截取感兴趣区域图像( ROI) , 主要用到的变量 及函数如下:
CvRect ROI_r ect _src; / / 源图像 ROI 的位置 及大小
CvRect ROI_rect _dst ; / / 目标图像的 ROI cvSet ImageROI( src_im g, ROI_rect _sr c) ; / / 基 于给定的矩形, 设置感兴趣区域函数 cvSho w Im ag e( "sr c_img ", src_img ) ; / / 显示指 定的 ROI 函数 3. 2 对图像进行边缘检测 图像的边缘是图 像局部灰度变化最显著的部 分, 是一幅图像的重要特征之一, 蕴含了大量的原始 图像信息. 边缘主要存在于目 标与目标、目标与背 景、区域与区域之间. 数字图像的边缘检测是图像分 割、图像特征模式识别、形状特征提取等图像分析与 图像理解的基础. 目前已有很多成熟的边缘检测算 子, 常用的有差分边缘检测、梯度边缘检测、Rober ts 边缘检测算子、Prew it t 边缘检测算子、Kirsch 边缘 检测算子、Sobel 边缘检测算子、Canny 边缘检测算 子、二阶微分边缘 检测算子中的 L aplace 边缘检测 算子和 L oG 边缘检测算子等[ 5] . 其中, Sobel 算子是一种计算 梯度值的近似方 法, 该算法考察一幅数字图像的每个像素上、下、左、
a. 首先新建工程, 文件/ 新 建/ 工程/ w in32 Applicatio n 或者 w in32 conso le appiication.
b. 创 建 一 个 单 独 的 w orkspace ( cr eat e new w orkspace) , 也 可 以 将 新 的 项 目 加 入 到 当 前 的 w orkspace 中.
在 VC+ + 环境下选择菜单, T oo ls- > Opt io ns - > Directo ries, 设置 lib 路径, 选择 L ibrary files, 将所需要的 O penCV 库文件路径包含进来[ 2] . 1. 2 OpenCV 应用程序框架建立
创建简单的 OpenCV 应用程序, 可按如下步骤 进行:
像由于平滑后变得模糊而导致的边缘变宽问题. 最
后再用双阈值算法剔除假边缘, 并把断续的边缘连
接成轮廓.
图像边缘检测结果如图 3 所示, 其中图 3a 为采
用 Sobel 边缘检测算子; 图 3b, 图 3c 为采用 Canny
边缘检测算子检测结果.
# 56 #
图 3 图像边缘检测
3. 3 对图像进行角点提取 目标物的角点可用于实现视觉特征点提取、运
1 O penCV 环境建立
1. 1 OpenCV 安装与环境变量配置 安 装 OpenCV 过 程 中, 要 注 意 选 中 ÷ Add \
OpenCV \ bin t o t he syst em PA T H "选项, 加入到环 境变量 PAT H 中. 安 装好的 OpenCV 路径 假设为 C: \ P rog ram F iles\ OpenCV.
Realization of Im ag e Process T echnology for Computer V ision Based on OpenCV
WANG Fu- bin1,2 , LI Ying- yan3 , LIU Jie1, CHEN Zh-i kun2 ( 1. Schoo l of M echanical Engineer ing and A utomation, N or theaster n U niv ersity , Shenyang 110004, China; 2. Colleg e of Computer and A ut omatic Contro l, Hebei P olytechnic U niv ersity , T ang shan 063009, China;
3. Colleg e of Infor mation Science and Eng ineer ing, N ortheastern U niver sity , Sheny ang 110004, China)
摘要: 阐述了在 VC+ + 下安装、构建 OpenCV 编译环境的方法及 OpenCV 应用程序框架的建立. 应用 OpenCV 视频图像采集技术, 在实验室中获取 3 幅图像, 在对数字图像处理技术进行理论分析的 基础上, 利用 OpenCV 实现了对采集图像截取感兴 趣的区域、对图像进行边缘检测、对图像进行角点探 测等技术.
2 OpenC V 视频图像采集
使用 OpenCV 读入和显示图像, 相比 VC + + 而言要简单、方便 很多. 用 OpenCV 获取摄像 头拍 到的视频图像程序如下:
# include< cv. h> # include< highgui. h> # include< cxcore. h> void main( int arg c, char* argv [ ] ) { Cv Capt ure* capt ure= 0; if ( arg c= = 1| | ( argc= = 2& & str len( argv [ 1] ) = = 1& & isdig it( ar gv[ 1] [ 0] ) ) ) { capt ure = cvCaptureFro mCAM ( argc = = 2? ar gv[ 1] [ 0] - ø0ø: 0) ; } else if( ar gc= = 2) { capt ure= cvCapt ureF romAV I( arg v[ 1] ) ; } if ( ! capt ure) { ret urn; } IplImage * current _fram _rgb = cvCreat eImag e ( cv Size( 320, 240) , IP L_DEPT H _16U, 3) ; cvNam edWindow ( "w ", 0) ; w hile( capt ure) { current _f ram_r gb= cvQuery Fram e( capt ure) ; cvShow Image( "w ", current_fram_rgb) ; if ( cvWaitKey( 1) = = 27) { break; } } cvDest royAl lWindow s( ) ;
1 机械与电子22010( 6)
} 在上面新建的÷C+ + So urce f ile"中, 输入此程 序, 接入摄像头后, 即可获得视频图像, 实验室中采 集的 3 幅视频数字图像如图 1 所示.
图 1 采集到的 3 幅视频图像
3 O penCV 图像处理技术
OpenCV 数字图像 处理技 术主要 包括图 像变 换、滤波、边缘检测、直方图、几何变换和数学形态学 处理等. 可以很方便地对图像进行采集、底层处理, 为后续的模式识别、机器视觉应用提供高质量的图 像[ 4 ] . 3. 1 截取感兴趣的图像
c. 点击 ÷nex t ", 之后 选 择, An empt y pro ject/ ok.
d. 新建工程 文件, 文件/ new / f iles, 选择 C+ + Source file/ ok.
1 机械与电子22010( 6)
e. 添 加工程配 置, 工 程/ 设 置/ 所 有配置, 选 中 ÷连接" 标签, 在÷对 象、模 块库" 中添 加÷ cx co re. lib cv. lib ml. lib cv aux . lib highg ui. lib cv cam. lib"模块 库, 至此完成了 O penCV 编程环境的构建[ 3] .
基于 OpenCV 的机器视觉图像处理技术实现
王福斌1, 2 , 李迎燕3 , 刘 杰1 , 陈至坤2 ( 1. 东北大学机械工程与自动化学院, 辽宁 沈阳 110004; 2. 河北理工大学计算机与自动控制学院,
河北 唐山 063009; 3. 东北大学信息科学与工程学院, 辽宁 沈阳 110004)
关键词: 机器视觉; 数字图像处理; OpenCV; 视 频图像
中图分类号: T P751 文献标识码: A 文章编号: 1001- 2257( 2010) 06- 0054- 04 Abstract: Ex po und t he met hod of installing and building OpenCV com pilat io n environment based o n VC + + , fr am ew o rk est ablishm ent o f OpenCV applicat ion pr ogram. Acquires three imag es in laborat ory using OpenCV v ideo image acqu-i sitio n technolog y, o n t he basis o f t he t heory analysis t o digit al image pr ocessing t echnique, r ealized the t echno logy of int ercept ing reg ion of int erest image, edge det ect ion o f image, corner detect or o f image. Key words: machine vision; digit al imag e processing; OpenCV; video image
¨f y = (a0 + 2a1 + a2 )- (a6 + 2a5 + a4 )
图 2 Sobel 算子模板
So bel 算子为 s( x , y ) = | ¨f x | + | ¨f y | , ¨f x ,
Biblioteka Baidu
¨f y 可分别用 2 个 3 @ 3 卷积核模板来实现 . 图像
中的每个像素点都用这 2 个模板做卷积 ,通过这 2
0 引言
数字图像处理技术是计算机视觉、机器视觉等
收稿日期: 2010-02-04 基金项目: 国家自然科学基金资助项目( 50775029)
# 54 #
技术实现的前提和基础. 图像处理一般为图像像素 级别上的操作, 高效、准确的图像处理技术, 可为图 像分析、图像理解提供可靠的保证. OpenCV 开源图 像处理算法库在 V C+ + 编译环境 下运行, 为数字 图像的处理、计算机视觉技术应用提供了极大的方 便[ 1 ] . 基于 OpenCV 的图像处理技术, 既可快速、可 靠地应用于实际工程中, 又可对一些图像处理算法 进行仿真分析.
个小区域模板在图像中的移动 ,检测出图像的边缘.
Canny 边缘检测算子采用原始图像与平滑滤波
脉冲响应的一阶微分进行卷积运算, 得到平滑后的 图像 g( x , y ) = f (x , y ) á h( x , y ) , 然后再对此图像
计算梯度, 即
5g
gcx
5x
¨g( x , y ) =
=
( 2)
动估计和形状描述等. 图像中的角点处具有高的曲
率, 一般由图像边缘交点或边缘曲率较大的点形成. 角点中蕴含着目标几何形状信息, 对机器视觉的测
右邻点灰度的加权差, 计算邻点与被考察的像素点 接近的权值大小.
对某一像素点 [i , j ] , 考虑其临近点的 Sobel 算 子模板, 如图 2 所示, 则像素点 [i , j ] 的偏导数可计 算如下:
¨f x = (a2 + 2a3 + a4 )- (a0 + 2a7 + a6 ) ( 1)
gcy
5g
5y
根据卷积运算得 :
¨g( x , y ) = ¨f ( x , y ) á h( x , y )
= f (x , y ) á ¨h( x , y )
( 3)
由于多采用高斯函数作为平滑滤波器 , ¨h( x ,
y ) 算子又叫一阶微分高斯算子. Canny 边缘检测中
还要用到非极大点抑制方法限制梯度幅值, 解决图
有时只对一帧图像中某一部分感兴趣, 此时可 以只截取感兴趣区域图像( ROI) , 主要用到的变量 及函数如下:
CvRect ROI_r ect _src; / / 源图像 ROI 的位置 及大小
CvRect ROI_rect _dst ; / / 目标图像的 ROI cvSet ImageROI( src_im g, ROI_rect _sr c) ; / / 基 于给定的矩形, 设置感兴趣区域函数 cvSho w Im ag e( "sr c_img ", src_img ) ; / / 显示指 定的 ROI 函数 3. 2 对图像进行边缘检测 图像的边缘是图 像局部灰度变化最显著的部 分, 是一幅图像的重要特征之一, 蕴含了大量的原始 图像信息. 边缘主要存在于目 标与目标、目标与背 景、区域与区域之间. 数字图像的边缘检测是图像分 割、图像特征模式识别、形状特征提取等图像分析与 图像理解的基础. 目前已有很多成熟的边缘检测算 子, 常用的有差分边缘检测、梯度边缘检测、Rober ts 边缘检测算子、Prew it t 边缘检测算子、Kirsch 边缘 检测算子、Sobel 边缘检测算子、Canny 边缘检测算 子、二阶微分边缘 检测算子中的 L aplace 边缘检测 算子和 L oG 边缘检测算子等[ 5] . 其中, Sobel 算子是一种计算 梯度值的近似方 法, 该算法考察一幅数字图像的每个像素上、下、左、
a. 首先新建工程, 文件/ 新 建/ 工程/ w in32 Applicatio n 或者 w in32 conso le appiication.
b. 创 建 一 个 单 独 的 w orkspace ( cr eat e new w orkspace) , 也 可 以 将 新 的 项 目 加 入 到 当 前 的 w orkspace 中.
在 VC+ + 环境下选择菜单, T oo ls- > Opt io ns - > Directo ries, 设置 lib 路径, 选择 L ibrary files, 将所需要的 O penCV 库文件路径包含进来[ 2] . 1. 2 OpenCV 应用程序框架建立
创建简单的 OpenCV 应用程序, 可按如下步骤 进行:
像由于平滑后变得模糊而导致的边缘变宽问题. 最
后再用双阈值算法剔除假边缘, 并把断续的边缘连
接成轮廓.
图像边缘检测结果如图 3 所示, 其中图 3a 为采
用 Sobel 边缘检测算子; 图 3b, 图 3c 为采用 Canny
边缘检测算子检测结果.
# 56 #
图 3 图像边缘检测
3. 3 对图像进行角点提取 目标物的角点可用于实现视觉特征点提取、运
1 O penCV 环境建立
1. 1 OpenCV 安装与环境变量配置 安 装 OpenCV 过 程 中, 要 注 意 选 中 ÷ Add \
OpenCV \ bin t o t he syst em PA T H "选项, 加入到环 境变量 PAT H 中. 安 装好的 OpenCV 路径 假设为 C: \ P rog ram F iles\ OpenCV.
Realization of Im ag e Process T echnology for Computer V ision Based on OpenCV
WANG Fu- bin1,2 , LI Ying- yan3 , LIU Jie1, CHEN Zh-i kun2 ( 1. Schoo l of M echanical Engineer ing and A utomation, N or theaster n U niv ersity , Shenyang 110004, China; 2. Colleg e of Computer and A ut omatic Contro l, Hebei P olytechnic U niv ersity , T ang shan 063009, China;
3. Colleg e of Infor mation Science and Eng ineer ing, N ortheastern U niver sity , Sheny ang 110004, China)
摘要: 阐述了在 VC+ + 下安装、构建 OpenCV 编译环境的方法及 OpenCV 应用程序框架的建立. 应用 OpenCV 视频图像采集技术, 在实验室中获取 3 幅图像, 在对数字图像处理技术进行理论分析的 基础上, 利用 OpenCV 实现了对采集图像截取感兴 趣的区域、对图像进行边缘检测、对图像进行角点探 测等技术.
2 OpenC V 视频图像采集
使用 OpenCV 读入和显示图像, 相比 VC + + 而言要简单、方便 很多. 用 OpenCV 获取摄像 头拍 到的视频图像程序如下:
# include< cv. h> # include< highgui. h> # include< cxcore. h> void main( int arg c, char* argv [ ] ) { Cv Capt ure* capt ure= 0; if ( arg c= = 1| | ( argc= = 2& & str len( argv [ 1] ) = = 1& & isdig it( ar gv[ 1] [ 0] ) ) ) { capt ure = cvCaptureFro mCAM ( argc = = 2? ar gv[ 1] [ 0] - ø0ø: 0) ; } else if( ar gc= = 2) { capt ure= cvCapt ureF romAV I( arg v[ 1] ) ; } if ( ! capt ure) { ret urn; } IplImage * current _fram _rgb = cvCreat eImag e ( cv Size( 320, 240) , IP L_DEPT H _16U, 3) ; cvNam edWindow ( "w ", 0) ; w hile( capt ure) { current _f ram_r gb= cvQuery Fram e( capt ure) ; cvShow Image( "w ", current_fram_rgb) ; if ( cvWaitKey( 1) = = 27) { break; } } cvDest royAl lWindow s( ) ;
1 机械与电子22010( 6)
} 在上面新建的÷C+ + So urce f ile"中, 输入此程 序, 接入摄像头后, 即可获得视频图像, 实验室中采 集的 3 幅视频数字图像如图 1 所示.
图 1 采集到的 3 幅视频图像
3 O penCV 图像处理技术
OpenCV 数字图像 处理技 术主要 包括图 像变 换、滤波、边缘检测、直方图、几何变换和数学形态学 处理等. 可以很方便地对图像进行采集、底层处理, 为后续的模式识别、机器视觉应用提供高质量的图 像[ 4 ] . 3. 1 截取感兴趣的图像
c. 点击 ÷nex t ", 之后 选 择, An empt y pro ject/ ok.
d. 新建工程 文件, 文件/ new / f iles, 选择 C+ + Source file/ ok.
1 机械与电子22010( 6)
e. 添 加工程配 置, 工 程/ 设 置/ 所 有配置, 选 中 ÷连接" 标签, 在÷对 象、模 块库" 中添 加÷ cx co re. lib cv. lib ml. lib cv aux . lib highg ui. lib cv cam. lib"模块 库, 至此完成了 O penCV 编程环境的构建[ 3] .
基于 OpenCV 的机器视觉图像处理技术实现
王福斌1, 2 , 李迎燕3 , 刘 杰1 , 陈至坤2 ( 1. 东北大学机械工程与自动化学院, 辽宁 沈阳 110004; 2. 河北理工大学计算机与自动控制学院,
河北 唐山 063009; 3. 东北大学信息科学与工程学院, 辽宁 沈阳 110004)
关键词: 机器视觉; 数字图像处理; OpenCV; 视 频图像
中图分类号: T P751 文献标识码: A 文章编号: 1001- 2257( 2010) 06- 0054- 04 Abstract: Ex po und t he met hod of installing and building OpenCV com pilat io n environment based o n VC + + , fr am ew o rk est ablishm ent o f OpenCV applicat ion pr ogram. Acquires three imag es in laborat ory using OpenCV v ideo image acqu-i sitio n technolog y, o n t he basis o f t he t heory analysis t o digit al image pr ocessing t echnique, r ealized the t echno logy of int ercept ing reg ion of int erest image, edge det ect ion o f image, corner detect or o f image. Key words: machine vision; digit al imag e processing; OpenCV; video image
¨f y = (a0 + 2a1 + a2 )- (a6 + 2a5 + a4 )
图 2 Sobel 算子模板
So bel 算子为 s( x , y ) = | ¨f x | + | ¨f y | , ¨f x ,
Biblioteka Baidu
¨f y 可分别用 2 个 3 @ 3 卷积核模板来实现 . 图像
中的每个像素点都用这 2 个模板做卷积 ,通过这 2
0 引言
数字图像处理技术是计算机视觉、机器视觉等
收稿日期: 2010-02-04 基金项目: 国家自然科学基金资助项目( 50775029)
# 54 #
技术实现的前提和基础. 图像处理一般为图像像素 级别上的操作, 高效、准确的图像处理技术, 可为图 像分析、图像理解提供可靠的保证. OpenCV 开源图 像处理算法库在 V C+ + 编译环境 下运行, 为数字 图像的处理、计算机视觉技术应用提供了极大的方 便[ 1 ] . 基于 OpenCV 的图像处理技术, 既可快速、可 靠地应用于实际工程中, 又可对一些图像处理算法 进行仿真分析.
个小区域模板在图像中的移动 ,检测出图像的边缘.
Canny 边缘检测算子采用原始图像与平滑滤波
脉冲响应的一阶微分进行卷积运算, 得到平滑后的 图像 g( x , y ) = f (x , y ) á h( x , y ) , 然后再对此图像
计算梯度, 即
5g
gcx
5x
¨g( x , y ) =
=
( 2)
动估计和形状描述等. 图像中的角点处具有高的曲
率, 一般由图像边缘交点或边缘曲率较大的点形成. 角点中蕴含着目标几何形状信息, 对机器视觉的测