|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。+ B* \) M, k$ `; R/ A; W( V! Q; a
) v" R9 |8 y5 ]. t, f7 A- O7 t* J为了解决此问题,下面介绍一种基于标记法的形状识别算法。
) @0 ~8 C3 d3 ~) k# _
3 K2 X9 a( r7 f8 a: E对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。
- q; X5 w* A; M Q7 q- K; D% f' r4 B4 ~ c/ m) F2 C
下面介绍基于标记的形状检测算法:6 g( X* u0 r& g& [+ _
5 ~6 g& G7 Q: h5 _+ f( R" ]
1、获得形状的轮廓坐标;& G! I# _& _! d; R' r
0 Y( w: T% J+ b8 `# F
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;
" ^+ F+ Y6 m1 P2 ^3 z4 Q: `" Z' U5 e3 a# _
3、根据rho的特征区分各个形状。2 ]/ U r& A' ?) d0 @$ G& p6 M& h
0 O8 R, h# R, U( ]& P' n0 |根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。
4 F( t! @* q6 H7 S4 s( v$ B
6 W+ Y) ~+ c0 f
; u; E* h$ t" z* | |
|