|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。1 D7 K- ` I- y4 N
% I1 z# T' D2 N, N! ?7 q" W7 U为了解决此问题,下面介绍一种基于标记法的形状识别算法。7 ?) Q& i- {" _, L/ a4 f
. g6 B3 A4 x g% [对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。- D6 ^, |0 N L3 k' a
- ^. B8 G6 y0 C3 m7 X! P下面介绍基于标记的形状检测算法:
# J N2 S4 I; t+ ?5 P- z0 U* g& i3 H5 q3 K8 r
1、获得形状的轮廓坐标;
9 [ u6 W" R0 V6 ^- J, n* x5 c( q" ^, ^
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;
; ]9 Q, s4 W2 s2 K- N) B0 M% R i7 H3 e( s% R
3、根据rho的特征区分各个形状。
+ }! d+ k# x5 p4 E" z" e' I5 {: Y8 Z' r/ U- @0 V( F, j
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。% X) \, O j3 U; Y+ W! L
9 M v& b& d* p# t
; n% S1 u- ?: {" \7 J* f# M4 I3 V
|
|