|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。
- S7 T/ }9 A$ o& `3 I; K" s) M
* a, }+ y+ B* I& {" Z T9 _8 D, F, c9 A( o. U为了解决此问题,下面介绍一种基于标记法的形状识别算法。
6 ^* E9 \9 s' _. B V% Y2 S9 i+ o; G, ^& P0 ~/ |0 ^
对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。& Z( n. M( i2 x# h. ~% o0 z( x9 v
7 g0 ?# A8 O( M- z
下面介绍基于标记的形状检测算法:2 a7 d$ B# F* ~ q: p* E
3 B3 N" D9 h# l6 e0 n. O& a& P! j1、获得形状的轮廓坐标;
- R! b. |2 j. W. Y) f& |/ h* n, Z
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;/ ^* z* x' g. k4 T9 q
7 m( a2 t% u o ?; R& g1 {% D3、根据rho的特征区分各个形状。
6 Y0 J1 w: A+ X% f0 B `( O) _+ v+ q( Y7 ` u
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。5 n! z! P' s8 [% H; U
1 G8 S9 f% V( V$ \9 @
7 O/ B- e7 T* [/ i |
|