第 5 期
2013 年 5 月
组 合 机 床 与 自 动 化加 工 技 术
Modular Machine Tool & Automatic Manufacturing Technique
No. 5
May 2013
文章编号:1001 - 2265(2013)05 - 0027 - 03
基于 OpenCV 的圆形标记点的提取*
刘 江,张 岑
( 北京科技大学 机械工程学院,北京 100083)
摘要:文章提出了一种基于 OpenCV 的圆形标记点的提取方法,通过对图像进行平滑处理、边缘检测、轮
廓查找、几何约束以及椭圆拟合,实现圆形标记点的提取,求出中心坐标。该方法主要应用于多视点云
拼接以及其他有关圆形物体识别的场合。实验结果证明,该方法能快速有效的提取圆形标记点。
关键词:OpenCV; 圆形标记点的提取; 中心坐标
文献标识码:A
中图分类号:TH165;TG65
(
The Extraction of Circular Markers Based on OpenCV
LIU Jiang
ZHANG Cen
,
,
:
,
University of Science and Technology Beijing
China
School of Mechanical Engineering
This study proposes a circular markers extraction method based on OpenCV. After image
Abstract
,
smoothing
edge detection
the circular markers
,
are extracted
and the center coordinates are computed. This method is mainly used in multi-view point
clouds registration and other round object recognition occasions. Experiments results prove that this meth-
od is fast and efficient to extract circular markers.
Key words
contour finding geometric constraints and ellipse fitting
circular markers
Beijing 100083
extraction
OpenCV
,
:
;
;
,
,
)
0 引言
多视点云拼接是将不同坐标系下采集到的点云经
过空间变换,转为一个坐标系下的点云,进而将模型各
个部分拼接在一起。近年来,国际上许多学者做了大
量的研究,提出大量的拼接方法。标记点拼接法以操
作方便,稳定性高,得到了广泛的应用。世界级的 Cre-
aform 公司就采用标记点拼接法来拼接扫描的点云。
另外德国的 ATOS 系统也是采用这种方法。
标记点拼接方法首先要对贴在被测物上的一组
或多组标记点中心进行提取,得到同组标记点在不
同坐标系下的坐标位置,换算出两组坐标系的变换
矩阵,从而将两组坐标系下被测物的点云转换到相
同坐标系下,完成多视点云的拼接。
在对圆形标记点进行提取时随机性因素很强,图
],标记点面积较小,
像背景复杂,扫描光照特性未知[
成像后变形为类椭圆,提取轮廓和圆心比较困难。
OpenCV 是开源的计算机视觉函数库[
],实现了
大量通用算法,具有强大的图像和矩阵运算能力,在
物体跟踪、模式识别、图像处理和三维视觉等方面得
到广泛的应用,为数字图像处理和计算机视觉应用
提供了极大的方便。利用 OpenCV 对类椭圆图像进
1
2
行图像处理以及椭圆拟合,方便快捷,对多视点云拼
接中的标记点提取以及计算机视觉其他方面的应用
有着重要意义。
本研究中对于圆标记点的提取,首先提取与圆标
记点相关的图像元素,然后对图像元素进行椭圆特征
参数提取。提取图像元素时采用边缘检测的方法,提
取椭圆特征参数采用椭圆拟合的方法,在椭圆拟合时
采用几何约束,以便精确识别所需要的标记点。
1 圆形标记点提取技术
1. 1 平滑处理
平滑处理用来减少图像的噪声或失真。平滑处
理有五种不同的方法: 简单平均法,简单无缩放的模
糊,中值滤波,高斯滤波和双边滤波。
本文采集的图像精度较高,噪声较少,一般采用
,它的 8 邻域像
,那么:
简单平均法。假设输入的像素为 a5
素为 a1 、a2 、a3 、a4 、a6 、a7 、a8 、a9
,输出像素为 b
a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9
(
)
1
b =
9
1. 2 边缘检测
边缘检测实际上是基于幅度不连续性进行分割
收稿日期:2012 - 10 - 23;修回日期:2012 - 11 - 27
* 基金项目:广东省教育部广学研结合项目资助(
2011A090200007
)
作者简介:刘江(
) ,男,北京人,北京科技大学机械工程学院副教授,研究方向为数控技术和逆向工程; 通讯作者: 张岑(
1968—
) ,女,
1987—
河北人,北京科技大学机械工程学院研究生,研究方向为逆向工程,(
)
E - mail
zhangcenqueen@ 163. com。
·82·
组合机床与自动化加工技术
第 5 期
3
]
4
]
5
、颜色的突变[
],例
的一种方 法,也 即 检 测 变 化 类 型 的 局 部 特 征[
如,灰度值的突变[
、纹理的突变等。
边缘检测 的 算 法 有 很 多,一 般 分 为 四 类: 经 典 算 子
法、最优算子法、多尺度方法、自适应平滑滤波法等。
]进行边缘检测的方法属于最优算
子法,是目前最有效的一种方法。Canny 算法给定了
最优化检测边缘的三个指标: 好的信噪比; 好的边缘
定位性能; 对唯一边缘有唯一的响应。
Canny 算子[
6
: 用高斯滤波器平滑图象;
具体算法如下:
步骤 1
以二维信号为例加以讨论: 二维高斯滤波函数
,
) 定义为:
y
(
G
x
(
G
,
)
y
x
= exp -
(
)
x2 + y2
2σ
(
2
(
)
2
(
x
IG
,
)
y
(
σ 是一个尺度参数,
σ 越大,图像在大的范围内平滑;
,
)
)
y
σ 越小,图像在小的范围内
) 是原图
,
y
,
)
y
I
= G
x
3
I
(
x
x
(
图像卷积:
其中,
平滑,
像函数。
: 边缘点定位;
步骤 2
首先求出每一点的局部梯度:
(
(
y槡
]
[
α = tg - 1 IG
y
=
计算平滑梯度方向:
IG
x
G
x
,
)
y
G
)
M
+
x
(
2
2
)
(
)
4
(
)
5
:
和 τ2
,一般情况下 τ1
: 用双阈值算法检测和连接边缘。
梯度方向上满足局部梯度值最大的点为边缘点。
步骤 3
双阈值算法对步骤 2 得到的边缘点进行进一步
检测,作用两个阈值 τ1
的
:
1 之间,从而可以得到两个阈值边缘
1 至 3
比值在 2
,
[
]和 G2
]
。但是边缘不闭合。双阈
图象 G1
y
x
]中的边缘闭合,当到达边缘的断点
,
[
值法要使 G2
y
x
]的 8 邻点位置寻找阈值在 τ1
时,该算法就在 G1
[
,
x
y
,
]中收
和 τ2
y
集边缘,直到将 G2
1. 3 轮廓查找
之间的像素,因此算法不断地在 G1
,
]连接起来为止。
y
与 τ2
[
x
[
x
[
x
,
y
虽然用 Canny 算子进行边缘检测可以根据像素
间的差异检测出轮廓边界的像素,但是它并没有将
轮廓作为一个整体。下一步是要将这些边缘像素组
装成轮廓。
轮廓是构成一个形状的边界,一个轮廓一般由
一系列的点组成一条曲线,有多种方法可以表示曲
线。OpenCV 中一般用序列来存储轮廓信息,序列是
内存存储器某种结构形式的链表,其中每一个元素
( ) 可
是曲线中一个点的位置。函数 cvFindContours
以查找二值图像的轮廓,
( ) 查找的轮
( ) 得到的有边缘像素的轮廓,也
廓可以是从 cvCanny
( ) 函数阈值分割后得到的图像轮
可以是 cvThreshold
廓。该函数查找到轮廓后讲像素点存放到序列中。
1. 4 几何约束
cvFindContours
边缘检测和轮廓查找的结果不仅包括类椭圆标
记点特征,也包括被测物或背景中其他椭圆的边缘
以及其他形状干扰特征,因此必须进行完整的类椭
圆特征识别,提取出所需的圆标记点的轮廓。利用
轮廓变化的基本特征进行约束,即对轮廓边缘进行
几何约束,查找出有效的类椭圆圆标记点轮廓。
几何约束包括面积法和长度法。
图像中图形面积 S 可用图形区域中像素的个数
来表示,单位为像素。
Smin < S < Smax
(
)
6
其中,
和 Smax
为区域面积阈值。
Smin
轮廓的长度用 L 来表示,单位为像素,同样 Lmin
其中,
< L < Lmax
为长度阈值。
面积和长度是轮廓的简单特性,
和 Lmax
Lmin
cvCountArea
( )
( ) 用来计算
cvArcLength
用来计算轮廓包围的面积,
轮廓的长度。
1. 5 椭圆拟合
在对类椭圆特征进行椭圆拟合时,常用的方法
有霍夫变换法和最小二乘法[
7-9
]
。
利用霍夫变换进行椭圆拟合,需要对每一个检
测点计算,时间较长,而且拟合不准确。因此本研究
采用最小二乘法。
最小二乘法是在随机误差为正态分布时,由最
大似然法推出的最优估计技术[
。它可以使测量误
差的平方和最小,适用于从一组测量值中求出一组
未知量。
]
10
假设一般的椭圆方程为:
Ax2 + Bxy + Cy2 + Dx + Ey + F = 0
)
为参数设置一个约束条件,避免零解,假设 A + C
= 1 显然,直接用上述方程对边缘检测后的点进行最
小二乘处理,可以得到方程中的各系数,求目标函数:
8
(
(
f
,
B
,
D
,
E
,
F
)
A
(
n
= ∑
i = 1
Ax2
i + Bxi yi + Cy2
i + Dxi + Eyi + F
(
(
)
9
) 2
,
A
最小值来确定各系数,再通过极值原理,使 f
,
E
) 最小,必有:
,
F
,
D
B
f
A
f
B
f
D
f
E
f
F
=
=
=
=
10
由此,可以得到一个线性方程组,利用求解线性
方程组的方法( 主高斯消元法) 求解。结合约束条
件,求得各参数的值。
= 0
(
)
OpenCV 中函数 cvFitEllipse
进行椭圆拟合,返回一个与轮廓最相似的椭圆。
2 圆形标记点提取的实现
( ) 使用最小二乘法
2. 1 流程
应用 OpenCV 函数库中有关图
像处理的一系列函数对采集的圆形
标记点图像进行处理,最终提取出
类椭圆的标记点图像,所用的流程
如图 1 所示。
图 1 流程图
2013 年 5 月
刘 江,等: 基于 OpenCV 的圆形标记点的提取
·92·
2. 2 圆形标记点识别过程
从文件中读取图像时的语句为:
) ;
0
IplImage * Image = 0
;
(
Image = cvLoadImage
“filename”
,
从文件中读取图像程序如下:
;
IplImage * Image = 0
(
Image = cvLoadImage
( ) ;
cvNamedWindow
( ) ;
cvShowImage
( ) ;
cvCvtColor
) ;
,
0
“filename”
/ / 创建窗口
/ / 显示图像
/ / 将彩色图像转换为灰度图像
读取的原图像如图 2 所示,转换后灰度图像如
/ / 载入原图像
图 6 几何约束结果
图 3 所示。
图 2 原图像
图 3 灰度图
对图像 进 行 平 滑 处 理 以 及 边缘 检 测 的 程 序 如
图 7 椭圆拟合在原图显示
图 8 单独显示
拟合后得到的圆心坐标如表 1 所示。
表 1 圆心坐标
圆心
x
y
1
2
3
4
5
6
349. 0
288. 0
555. 0
496. 0
331. 0
513. 0
160. 0
154. 0
149. 0
148. 0
103. 0
102. 0
cvSmooth
( ) ;
/ / 采用简单模糊的方法,因此设置方法参
3 结束语
下:
数为 CV_BLUE
( ) ;
cvCanny
/ / 将最高阈值为最低阈值的三倍
平滑处理后图像如图 4 所示,边缘检测的图像
如图 5 所示。
本研究在于利用 OpenCV 计算机视觉函数库准确
提取标记点的类椭圆轮廓以及中心,从而直接求出变
换矩阵,完成不同坐标系下的点云拼接。实验中边缘
提取采用的阈值、几何约束采用的阈值都直接影响拟
合的类椭圆,采用合适的阈值可以有效排除杂质背景,
更为简单、快捷的提取所需的类椭圆标记点。
[参考文献]
图 4 平滑处理结果
进行类椭圆标记点识别的程序如下:
图 5 边缘检测结果
[
]
2
CvMemStorage* stor
CvSeq* cont
/ / 定义序列指针
;
;
/ / 分配存储空间
cont = cvCreateSeq
( ) ;
cvFindContours
/ / 序列初始化
( ) ;
/ / 轮廓查找,查找方式为 CV _RETR _
LIST
( ;
;
cont
double a = abs
(
double b = abs
cont = cont - > h_next
(
cvContourArea
cvArcLength
cont
(
) ) ;
cont
) ) ;
(
/ / 求轮廓面积
/ / 求轮廓长度
)
a > = minArea && a < = maxArea && b > = minLen &&
/ / 进 行 几 何 约 束,面 积 阈 值 设 置 为 300 到
) ;
b < = maxLen
for
{
(
if
800
,长度阈值设置为 50 到 200
{
cvDrawContours
( ) ;
( ) ;
/ / 绘制轮廓
/ / 将选择的轮廓放到序列中
cvCvtSeqToArray
cvFitEllipse
( ) ;
( ) ;
/ / 拟合椭圆轮廓
/ / 绘制椭圆轮廓
cvEllipse
}
}
几何约束后的图像如图 6 所示。
如图 7 将椭圆拟合后的图像在原图上显示,如
图 8 去除干扰后单独显示。
[
] 杨伟光. 三维扫描系统中标志点识别与人脸图像的立体
1
]
匹配研究[
. 南京: 东南大学,
D
,
Adrian Kaehler 著. Learning OpenCV
2008.
( 中文
Gary Bradski
版) [
M
]
. 北京: 清华大学出版社,
2009.
[
] 刘祚时,沈哲. 改进的图像分割方法的应用[
]
J
3
. 煤炭技
术,
2010
(
,
29
3
) :
218 - 220.
[
] 于梅,殷冰,梁栋,等. 基于边缘检测的 contourlet 变换图
4
104 - 106.
[
] 李惠光,任爽,李国友,等. 一种基于颜色信息的足球机器
5
]
像去噪[
. 计算机技术与发展,
J
,
18
2008
) :
6
(
]
人目标搜索方法[
. 计算机仿真,
J
2007
(
3
) :
,
Canny. J
A computational approach to edge detection
152 - 155.
,
IEEE
,
Transactions on Pattern Analysis and Machine Intelligence
1986
:
,
PAMI-8
,
Grander W
639 - 643.
,
et. al. Least - squares fitting of cir-
strebel R
,
,
1993
34
cles and ellipses. BIT Numerical Mathematics
(
) :
4
558 - 578.
,
Rosin P L
Ellipse fitting by accumulating five - point fits.
Pattern Recognition Letters. 1993
) :
661 - 669.
]
[
] 钮毅. 部分遮挡条件下椭圆目标识别[
. 上海: 上海交
D
9
,
14
8
(
2007.
通大学自动化学院,
] 闫蓓,王斌,李媛. 基于最小二乘法的椭圆拟合改进算
,
34
295 -
( 编辑 李秀敏)
]
法[
. 北 京 航 空 航 天大 学 学 报 ,
J
2008
) :
3
(
[
10
298.
[
]
6
[
]
7
[
]
8