|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。
1 |: O, @ P! E2 X( V7 B6 s8 u1 |6 k3 c
为了解决此问题,下面介绍一种基于标记法的形状识别算法。 L, }: s% A7 X2 }/ T$ Y! q
( }$ @5 I l# {, C8 s" I I( U; W
对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。
4 E! e7 `8 n$ U. l* n& J% N. O$ u, ]# W' S5 l3 F
下面介绍基于标记的形状检测算法:
: G n7 X. E5 x- q) b/ s' `4 R+ z
7 X* i+ Z: L5 \1、获得形状的轮廓坐标;
8 r) m" m _- O" P
: T2 j$ F) r* O2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;
1 ]# I1 ?% z8 ~
E5 n8 J0 Y0 s# h- j; h, s3、根据rho的特征区分各个形状。1 K$ f8 A! s5 Q6 o
( Q- R7 n3 s% `
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。
2 z4 R3 G3 c9 s3 G
* [7 G6 {! _1 l( }" x9 y0 j( |8 T% B5 X" u( d
|
|