|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
某些游戏,当用户在触摸屏上输入一个形状(圆、矩形、三角形等)后,应用根据接收到的不同形状来执行不同的操作,但如何判断用户输入的形状类型是此应用的主要问题。3 A: g! v! E, b6 r) F5 y
4 [$ O- t( |2 W9 G: \7 ]0 K
为了解决此问题,下面介绍一种基于标记法的形状识别算法。8 m7 \+ @5 r1 C) H
) M! C* r( K+ C; T' g7 l+ S7 U+ b
对于输入图像,我们需寻找一种表示方法,来区分出所有形状(为了说明这里我们只识别圆、矩形、三角形三种不同的形状,其他形状可对算法进行扩展),无论是何种表示方法,必须对图像的平移、旋转、收缩不敏感。
" w* t1 P8 l! B- k9 Z7 x- ^/ z! V, {+ o# G( B4 G5 {3 V$ D
下面介绍基于标记的形状检测算法:
5 e1 i# L/ ? A! d. p. c2 v0 W$ F+ J
% U2 q- @6 K/ i( M+ Q9 m. L1、获得形状的轮廓坐标;
, q7 A U) n" y' U; ?9 W2 L% Q" l# v! `8 P2 F0 b$ _
2、将轮廓坐标转换为相应的极坐标(theta-rho),这里我们主要关心rho,rho为轮廓上的点到该形状重心的距离;
9 g1 d8 n) ~3 l2 G! F
& q6 r- ]6 ~4 \3 T9 o3、根据rho的特征区分各个形状。
* J% q( I; F0 k' @- O1 A- ^+ m' j& U
根据第2步得到的theta-rho关系图(如下图所示)可以得知,圆形的最小rho相对较大;矩形有四个明显的峰值;三角形有三个明显的峰值。故可以利用此特性来区分形状。3 u; B# T3 F$ z8 J' `
! H2 L' r; @: R2 r
* }% t7 i; p8 G. j/ Q, r1 G |
|