|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。 J: N( Z0 r, O: }
6 I/ \( O# e" o" ^9 O
为了解决此问题,下面介绍一种基于标记法的形状识别算法。/ \$ i1 l- I3 W/ B/ V5 d
" D5 s/ H" D* A2 h
对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。
6 M$ X4 K1 m3 ]% X# C, l. J* H, u
) W5 t: p+ ^; i. x P下面介绍基于标记的形状检测算法:
# _6 P! m- ^5 h u0 {) C6 M% i5 g* b! S* G0 Y/ B9 S: i& E. F
1、获得形状的轮廓坐标;
) Y8 ] S6 K( x& \1 P; F* F- Q, `8 t6 @! F3 F
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;9 t1 ~5 X$ {" [
9 \8 Z3 n6 `2 x" ~5 W2 W3、根据rho的特征区分各个形状。8 v- Q: Y2 s+ a' h! |
' I; b! ^' v6 I" n- }: q) E6 C, y
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。
* D% n+ S4 k/ e, n" @5 K
; U2 ~. V6 n y$ ~' l
4 A1 S7 e, a0 J |
|