数学建模社区-数学中国
标题:
基于标记的形状检测
[打印本页]
作者:
吃苹果的梨
时间:
2016-3-1 15:27
标题:
基于标记的形状检测
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。
; P2 X% p2 ?! g( o! I' N- A, x! T
* n* V+ V: A- Y* h
为了解决此问题,下面介绍一种基于标记法的形状识别算法。
1 o3 T' a) J; i7 h, v/ f+ R# [
4 z h$ \% Q! p/ R/ D ]3 W6 h! N5 j
对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。
( C/ A- P( `1 Q9 B- D: b
* l$ N i( b+ C5 z) o: ^
下面介绍基于标记的形状检测算法:
: U& H3 a F( E4 L7 g
% I' @" `1 o$ F4 d3 J8 W
1、获得形状的轮廓坐标;
5 f! ]- O$ m: u
5 a0 l. G. u5 M8 y T. z
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;
1 e, h. c1 a u: N
) j8 t9 k+ e3 L x4 f
3、根据rho的特征区分各个形状。
5 R( o) \) t& M. A7 V- T+ ?6 Y
0 h {5 ?4 H& d# H
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。
6 f$ ?' |# v5 S2 ^
# [# ~8 B0 b% t% H* _3 |
: I/ L( x+ c( Y* C3 m
5 q* s" |$ U. n8 J5 c: z/ s
" t( _0 h# Z% l3 ?7 Q0 b
) [3 W. a" V6 S0 |4 D" r
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5