Tải bản đầy đủ (.pdf) (9 trang)

Thiết kế hệ thống nhúng nhận dạng chữ viết tay

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (552.82 KB, 9 trang )

4

Khoa học Công nghệ

THIẾT KẾ HỆ THỐNG NHÚNG NHẬN DẠNG CHỮ VIẾT TAY
Trần Song Tồn *
Đặng Hữu Phúc **
Tóm tắt
Nhận dạng chữ viết tay là vấn đề đang được nghiên cứu và phát triển. Cơng việc xây dựng các hệ
thống nhận dạng chữ viết tay được thực hiện khá nhiều trên các hệ thống máy tính cá nhân. Ngày nay,
hệ thống nhúng đang được nghiên cứu và ứng dụng rộng rãi trong đời sống. Các hệ thống phần cứng
được thiết kế ngày càng nhỏ gọn và có tính linh hoạt cao. Nội dung bài báo sẽ giới thiệu q trình xây
dựng hệ thống nhận dạng chữ viết tay off-line trên board nhúng Beagleboard xM (BBxM). Bài tốn nhận
dạng được thực hiện dưới sự hỗ trợ của thư viện xử lý ảnh OpenCV và phương pháp phân lớp SVM
(Support vector machines). Ảnh các chữ viết tay sẽ được chụp từ camera. Hệ thống thực hiện cơng việc
phát hiện và tách các ký tự thành các mẫu. Các mẫu ký tự sẽ được trích chọn đặc trưng theo phương
pháp chu tuyến kết hợp với phương pháp xác định mật độ điểm ảnh. Q trình xây dựng các ứng dụng
trên hệ điều hành nhúng được thực hiện trên hệ điều hành Linux với sự hỗ trợ của phần mềm QtCreator
và cơng cụ biên dịch chéo Qt-Everywhere. Kết quả thực nghiệm được thực hiện trên các mẫu chữ cái in
hoa với tỉ lệ nhận dạng đúng đạt gần 95%.
Từ khóa: Beagleboard xM, hệ thống nhúng, nhận dạng chữ viết tay, phương pháp phân lớp Support
Vector Machines.
Abstract
Handwriting recognition is an issue that is being studied and developed. The handwriting recognition
systems are designed on personal computers. Nowadays, the embedded system is being studied and
applied widely in life. The hardware systems are more compact and flexible. The content of the paper
will introduce the process of building the offline handwriting recognition system on embedded board
BeagleBoard xM (BBxM). The identification is carried out with the support of image processing
library OpenCV and classification method SVM (Support vector machines). The handwriting letters
will be captured by camera. The system will detect and separate the letter into samples. The features
are extracted from these samples by the methods of circumference and pixel density. The process of


building applications on embedded operating system is implemented on Linux operating system with
the assistance of QtCreator software and Qt-Everywhere cross-compiler. The experimental result is
performed on the Latin uppercase letterswith the correct recognition rate up to approximately 95%.
Keywords: Beagleboard xM, Embedded system, Handwriting recognition, classification method Support
Vector Machines.

1. Giới thiệu
Vấn đề nhận dạng chữ viết tay đang được quan
tâm nghiên cứu và có vai trò rất quan trọng trong
cơng nghiệp. Trọng tâm của vấn đề nằm ở khả
năng thiết kế một giải thuật hiệu quả để có thể
nhận dạng được các ký tự viết tay bởi người dùng
qua tablet, scanner và các thiết bị số khác. Các ứng
dụng của nhận dạng chữ viết tay đã và đang có
nhiều đóng góp vào đời sống. Nhận dạng chữ viết
tay có thể phục vụ cho các ứng dụng đọc và xử
lý các chứng từ, hóa đơn, phiếu ghi, bản viết tay
chương trình. Tuy nhiên, cho đến nay, việc nhận
dạng chữ viết tay vẫn còn là thách thức lớn đối
với các nhà nghiên cứu. Đã có nhiều cơng trình
nghiên cứu về nhận dạng các mẫu chữ viết tay của

các hệ chữ cái Latin, Ả Rập, Trung Quốc,... nhưng
kết quả vẫn còn khá hạn chế do chữ viết tay rất đa
dạng về mẫu chữ cũng như các biến thể.
Nhận dạng chữ viết tay được thực hiện dựa trên
hai giải thuật chính: memory base và learning base.
Memory base lưu trữ ảnh các ký tự mẫu và nhận
dạng một ký tự chưa biết bằng cách so sánh với
các ký tự mẫu. Learning base là giải thuật cố gắng

học các mẫu ký tự chưa biết và xây dựng hàm nhận
dạng tương ứng. Các nghiên cứu về nhận dạng chữ
số viết tay đã đạt được các kết quả trên 90%. Nhận
dạng chữ viết tay thực hiện dựa trên sự kết hợp giữa
các thuật tốn xử lý ảnh và các phương pháp phân
lớp nhận dạng như mạng Neural, Support Vector
Machines,... Các nghiên cứu về bài tốn nhận dạng

, Thạc sĩ - Khoa Kỹ thuật & Cơng nghệ, Trường Đại học Trà Vinh

* **

Số 12, tháng 3/2014

4


Khoa hoùc Coõng ngheọ
ch vit tay u thc hin trờn mỏy tớnh cỏ nhõn.
Ni dung bi bỏo gm cỏc phn sau: phn 2
trỡnh by v h thng nhn dng ch vit tay, phn
3 trỡnh by cỏc bc xõy dng ng dng trờn board
nhỳng, phn 4 tng hp cỏc kt qu thc hin c
v phn 5 trỡnh by kt lun v hng nghiờn cu
tip theo.

5

tip theo. nh nh phõn phc v cho quỏ trỡnh nhn
dng l nh cú nn en v nột ch trng.


2. H thng nhn dng ch vit tay
Hỡnh 1 l s khi ca h thng nhn dng
ch vit tay. H thng gm bn khi chc nng
chớnh: tin x lý, tỏch ký t, trớch chn c trng,
nhn dng.

Hỡnh 2. Quỏ trỡnh tin x lý

2.2. Tỏch ký t
nh sau khi c nh phõn húa s c tỏch ra
thnh tng dũng ch, tng ch v cui cựng l cỏc
ký t ri rc.
2.2.1. Tỏch dũng ch
Quỏ trỡnh tỏch dũng ch c thc hin theo
cỏc bc sau:
+ Xỏc nh phõn b im nh theo dũng c
thc hin theo (1)

Hỡnh 1. S h thng nhn dng ch vit tay

2.1. Tin x lý
Quỏ trỡnh tin x lý thc hin cỏc phng phỏp
lc nhiu, hiu chnh nghiờng, tỡm ngng
a nh v dng nh phõn phc v cho cỏc bc

(1)
Vi i = 0->high-1 (high: chiu cao nh); width:
rng nh.
+ Xỏc nh giỏ tr im bt u dũng ch v

rng dũng ch. Gii thut c th hin trong lu
hỡnh 3.

Hỡnh 3. Gii thut xỏc nh dũng ch

Soỏ 12, thaựng 3/2014

5


6

Khoa hoùc Coõng ngheọ

Hỡnh 4. Kt qu quỏ trỡnh tỏch dũng ch

Hỡnh 5. Gii thut xỏc nh cỏc ch trờn dũng

+ Ct nh dũng ch t nh gc: Vic ct nh cỏc
dũng c thc hin bng cỏc hm ca th vin
OpenCV vi v trớ ln c xỏc nh t lu
hỡnh 3.
2.2.2. Tỏch ch trờn tng dũng ch
Quỏ trỡnh thc hin vic tỏch ch c thc hin
theo cỏc bc:
+ Xỏc nh phõn b im nh theo ct c thc
hin theo (2)

+ Xỏc nh im bt u khong trng, rng
khong trng. Quỏ trỡnh ny c thc hin theo

lu Hỡnh 5.
+ Ct nh cỏc ch t nh gc thc hin tng t
nh ct nh dũng ch vi cỏc v trớ c xỏc nh
theo gii thut trong hỡnh 5.

(2)
Vi i = 0->width-1 (width: rng nh);
high: chiu cao nh.

Hỡnh 6. Kt qu quỏ trỡnh tỏch ch

Soỏ 12, thaựng 3/2014

6


Khoa hoùc Coõng ngheọ

7

2.2.3. Tỏch ký t

2.3.1. c trng theo chiu t trỏi sang

Quỏ trỡnh tỏch ký t c thc hin theo gii
thut phỏt hin hỡnh bao ca i tng v sau
ú ct cỏc ký t theo hỡnh ch nht nh nht bao
quanh ký t.

Vic ly chu tuyn t trỏi sang l xỏc nh

khong cỏch t l trỏi ca mu n v trớ im nh
trng u tiờn theo tng dũng. Cỏc giỏ tr c trng
L c xỏc nh theo cụng thc (4).
L[i] = d[P(0,i),PW]

(4)

Vi i = 0->29; d[P(0,i),PW] l khong cỏch t
im nh cú ta (0,i) n im nh cú giỏ tr
255 u tiờn theo chiu t trỏi sang.
Hỡnh 7. Kt qu quỏ trỡnh tỏch ký t

2.3. Trớch chn c trng
Quỏ trỡnh trớch chn c trng s c thc
hin trờn tng ký t nhn c sau khi tỏch ký t.
c trng cú ý ngha quan trng trong vic quyt
nh t l nhn dng ỳng ký t. trỏnh nhng
phc tp ca ch vit tay cng nh tng cng
chớnh xỏc, ta cn phi biu din thụng tin ch
vit di nhng dng c bit hn v cụ ng hn,
rỳt trớch cỏc c im riờng nhm phõn bit cỏc
ký t khỏc nhau. c trng ca cỏc ký t cú th
tỡm ra bng cỏc phng phỏp bin i, gii thut
toỏn hc. Cú nhiu hỡnh thc trớch c trng thụng
dng trong nhn dng ký t vit tay: c trng nh
phõn, c trng vựng, c trng theo chu tuyn,
dựng bin i Haar Wavelet...
Phng phỏp trớch chn c trng c s
dng trong bi bỏo l phng phỏp trớch c trng
theo chu tuyn kt hp vi phõn b im nh theo

chiu ngang v chiu dc. nh ký t c chun
húa kớch thc 22x30. nh cú nn mu en nột
ch mu trng. Vi phng phỏp trớch c trng
trong bi bỏo thỡ chiu di vector c trng l
156. So vi s dng phng phỏp c trng nh
phõn (chiu di vector c trng l 660), phng
phỏp s dng trong bi bỏo s giỳp cho thi gian
hun luyn cng nh nhn dng nhanh hn gp
nhiu ln.
Vector c trng F cú c t s kt hp ca
6 giỏ tr.
F = {L, R, U, D, V, H}
(3)
Vector c trng F cú chiu di l 156, trong ú
L: c trng ly t trỏi sang cú 30 giỏ tr; R: c
trng ly t phi sang cú 30 giỏ tr; U: c trng
ly t trờn xung cú 22 giỏ tr; D: c trng ly t
di lờn cú 22 giỏ tr; V: c trng phõn b dũng
cú 30 giỏ tr; H: c trng phõn b ct cú 22 giỏ tr.

2.3.2. c trng theo chiu t phi sang
Chu tuyn t phi sang xỏc nh khong cỏch
t l phi n im trng u tiờn trờn tng dũng.
Cỏc giỏ tr c trng R c xỏc nh theo cụng
thc (5).
R[i] = d[P(21,i),PW]

(5)

Vi i = 0->29; d[P(21,i),PW] l khong cỏch

t im nh cú ta (21,i) n im nh cú giỏ tr
255 u tiờn theo chiu t phi sang.
2.3.3. c trng theo chiu t trờn xung
Xỏc nh khong cỏch t l trờn ca mu n
im trng u tiờn theo tng ct. Cỏc giỏ tr c
trng U c xỏc nh theo cụng thc (6).
U[j] = d[P(j,0),PW]

(6)

Vi j = 0->21; d [P(j,0),PW] l khong cỏch
t im nh cú ta (j,0) n im nh cú giỏ tr
255 u tiờn theo chiu t trờn xung.
2.3.4. c trng theo chiu t di lờn
Xỏc nh khong cỏch t l di ca mu n
im trng u tiờn theo tng ct. Cỏc giỏ tr c
trng D c xỏc nh theo cụng thc (7).
D[j] = d[P(j,29),PW]

(7)

Vi j = 0->21; d[P(j,29),PW] l khong cỏch t
im nh cú ta (j,29) n im nh cú giỏ tr
255 u tiờn theo chiu t di lờn.
2.3.5. c trng phõn b im nh theo dũng
c trng ny da trờn tng s im trng
phõn b trờn tng dũng nh. Cỏc giỏ tr c trng
V c xỏc nh theo cụng thc (8).
(8)
Vi j = 0->21; P(i,j) giỏ tr im nh (i,j)


Soỏ 12, thaựng 3/2014

7


8

Khoa hoùc Coõng ngheọ

2.3.6. c trng phõn b im nh theo ct
Xỏc nh tng s im trng phõn b trờn tng
ct. Cỏc giỏ tr c trng H c xỏc nh theo
cụng thc (9).

dng trong phng phỏp SVM l hm tuyn tớnh
theo biu thc (10), cỏc tham s c thit lp theo
phng phỏp C-SVM c th hin theo cụng
thc (11) v cỏc giỏ tr tham s c th hin trong
hỡnh 12.
K(xi,xj) = xiTxj

(9)

(11)

Vi j = 0->21; P(i,j) giỏ tr im nh (i,j)
2.4. Nhn dng
Mu ký t c tỏch ra trong quỏ trỡnh tỏch
ký t s c a vo kt hp vi b hun luyn

s cho kt qu nhn dng. Kt qu sau khi nhn
dng vi phng phỏp phõn lp Support Vector
machines (SVM) s tr v mt giỏ tr nhón trong
b hun luyn SVM. Hm nhõn (kernel) c s

(10)

Quỏ trỡnh hun luyn c thc hin vi s h
tr ca th vin OpenCV vi cỏc tham s c
trỡnh by trong hỡnh 8. Giỏ tr nhón s cho ta mt
ký t tng ng. Kt qu s c ghi vo file ng
thi hin th trờn giao din ca ng dng.

Hỡnh 8. Quỏ trỡnh nhn dng mu

3. Xõy dng ng dng trờn board nhỳng
BeagleBoard xM (BBxM)
3.1. H thng phn cng
S h thng phn cng ca ng dng c
th hin trong Hỡnh 9. nh cỏc ký t c thu
qua camera a vo board x lý v kt qu ca
chng trỡnh c hin th trờn mn hỡnh LCD.

BBxM s dng CPU ARM-Cortex A8 cú th
hot ng ti a tc 1Ghz cựng vi b nh
DDRAM cụng sut thp 512MB. Kớch thc ca
BBxM khỏ nh gn: 3.25 ì 3.25. BBxM cung
cp khỏ y cỏc kt ni ca mt mỏy tớnh mini:
USB port, Audio input conector, Audio output
connector, Svideo connector, DVI-D connector,

LCD header...

Hỡnh 9. H thng phn cng

Soỏ 12, thaựng 3/2014

8


Khoa hoùc Coõng ngheọ

9

Hỡnh 10. S khi BBxM

H thng nhn dng ch vit tay c thc
hin v kim tra trờn mỏy tớnh cỏ nhõn. Sau khi kt
qu t yờu cu, nú s c biờn dch thnh ng
dng cú th thc thi trờn board nhỳng BBxM. Quỏ
trỡnh ny c trỡnh by trong phn 3.3.
3.2. H thng phn mm
H thng h tr thit k phn mm gm cú:
+ H iu hnh Ubuntu 10.10: xõy dng v
thit k cỏc giao tip vi BBxM.
+ Angstrom-toolchain: cụng c biờn dch chộo
cỏc ng dng v cỏc gúi cho kin trỳc ARMCortex A8.
+ Qt Creator 2.0.1: cụng c thit k giao din
v ng dng.
+ Qt-Everywhere 4.8.2: Cụng c biờn dch Qt
cho kin trỳc ARM.

+ OpenCV library: th vin h tr cho cụng
vic x lý nh.
Quỏ trỡnh ci t cỏc ng dng cn quan tõm
n vn ci t driver cho h thng. H thng
nhn dng cú s dng USB camera nờn cn phi
ci t trc khi s dng cho h thng.

Hỡnh 11. H thng phn mm

3.3. Biờn dch ng dng cho BBxM
ng dng c xõy dng vi phn mm Qt
Creator c ci t trờn h iu hnh Ubuntu
10.10. Cụng vic x lý nh c thc hin vi th
vin OpenCV. cú th thc thi ng dng trờn
BBxM cỏc th vin h tr ca Qt v OpenCV phi
chy c trờn nn kin trỳc ARM. Mt toolchain
cn c ci t biờn dch code trờn h thng
Linux cú th thc thi trờn vi x lý ARM ca
BBxM. Cỏc vi x lý ARM khỏc nhau s c biờn
dch khỏc nhau. Toolchain h tr cho vic build
ng dng trờn BBxM vi h iu hnh Angstrom
l Angstrom toolchain.
cú th s dng th vin OpenCV trờn BBxM
cn phi build cỏc th vin ny vi angstromtoolchain.

Soỏ 12, thaựng 3/2014

9



10

Khoa hoùc Coõng ngheọ
H iu hnh c s dng trờn BBxM l
Angstrom OS. cỏc ng dng cú th chy c
trờn BBxM, cn ci t h iu hnh trờn BBxM.
4. Kt qu

Hỡnh 12. Build th vin OpenCV cho BBxM

Chng trỡnh c xõy dng trờn phn mm
Qt nờn cn phi build cỏc ng dng ny vi QtEverywhere.

Hỡnh 13. Build th vin Qt cho BBxM

ng dng c thit k trc quan vi giao din
d dng s dng v kim tra. Kt qu cho phộp
nhn dng cỏc ch vit tay ri rc trờn cỏc dũng
ch khỏc nhau. Hỡnh 14a, hỡnh 14b v 14c cho thy
kt qu nhn dng trờn cỏc loi vn bn khỏc nhau.
Kt qu quỏ trỡnh tỏch ký t i vi cỏc vn
bn cỏc ký t khụng dớnh nột t xp x 95%. Do
phng phỏp tỏch dũng v tỏch ký t c s
dng trong bi bỏo l phng phỏp hỡnh chiu nờn
i vi cỏc nh vn bn cú nghiờng ln d gõy
nhm ln trong quỏ trỡnh tỏch dũng v tỏch ch.
Bi bỏo s dng ba phng phỏp trớch c
trng: c trng theo chu tuyn (CT), c trng
nh phõn (NP) v c trng chu tuyn kt hp vi
phõn b mt im nh (CT+PB). S lng mu

c s dng trong bi bỏo bao gm 4799 mu
trong ú bao gm 1504 mu c dựng training
v 3295 mu dựng testing.

Hỡnh 14a. Nhn dng vn bn vi nhiu dũng ch

Hỡnh 14b. Nhn dng vn bn nghiờng

Soỏ 12, thaựng 3/2014

10


Khoa hoùc Coõng ngheọ

11

Hỡnh 14c. Nhn dng vn bn cú nhiu

Phng phỏp trớch c trng c s dng
trong bi bỏo ó cho thi gian hun luyn cng
nh nhn dng ngn hn so vi cỏc phng phỏp
trớch c trng nh phõn, c trng vựng hay bin
i Haar Wavelet.
Thi gian training v testing (thc hin trờn
mỏy tớnh cỏ nhõn, CPU core i3, 2GB RAM) c
th hin trong bng 1.
Bng 1: Thi gian training v testing
c trng


CT + PB

CT

NP

Training

~0.66s

~0.51s

~1.8

Testing

~1.17s

~0.88s

~3.78s

Thi gian nhn dng c th hin trong Bng 2.
Thi gian ny ph thuc vo kớch thc bc nh,
phc tp v s lng ký t cú trờn bc nh.

Bng 2: Thi gian nhn dng

Kt qu nhn dng trờn cỏc mu ký t c th
hin trong bng 3. Kt qu ny c thc hin trờn

cỏc mu ký t ri rc, cỏc mu ny gm 26 mu
ký t in hoa (A->Z). Kt qu th hin trong Bng 3
l kt qu trung bỡnh cng ca 26 kt qu i vi
tng ký t riờng l.

Bng 3: Kt qu nhn dng

T kt qu trờn, ta nhn thy phng phỏp trớch
c trng theo chu tuyn kt hp vi mt im
nh cho hiu sut nhn dng tt nht v thi gian
x lý ngn. Phng phỏp trớch c trng nh phõn
thi gian x lý nhiu nhng t l nhn dng vn
thp hn so vi phng phỏp chu tuyn.
5. Kt lun
Bi bỏo ó a ra gii thut nhn dng ch vit
tay v thc hin trờn board nhỳng BBxM. Kt qu
thc hin trờn BBxM cú th ỏp dng c trờn
thc t (thi gian nhn dng khong 100ms vi kt
qu t c xp x 95%).
Kt qu ca bi toỏn x lý nh ch dng li
mc tỏch cỏc ch vit ri rc khụng b dớnh
nột. Hng nghiờn cu v phỏt trin tip theo l
xõy dng mụ hỡnh nhn dng ch vit cú th
nhn dng c cỏc ch vit b dớnh nột. Vic ny
ũi hi cn phi s dng k thut phõn on nh
nõng cao cú th tỏch c cỏc ký t dớnh nột.
Phỏt trin mụ hỡnh nhn dng ch vit tay ting
Vit. Xõy dng gii thut hu x lý nõng cao t
l nhn dng. Kt qu sau khi nhn dng s c
xem xột trong ng cnh cú th gii quyt mt s

trng hp sai so vi cu trỳc ng phỏp ting Vit.
Ci tin gii thut giỳp cho h thng hot ng
nhanh hn cú th ỏp ng vi h thng thi
gian thc.

Soỏ 12, thaựng 3/2014

11


12

Khoa hoùc Coõng ngheọ
Ti liu tham kho

BeagleBoard-xM Rev C System Reference Manual. April 4th, 2010.
Bui Minh Thanh, Truong Quang Vinh, Hoang Trang. 2012. An Automatic Licence Plate Recognition
System Based on Support Vector Machine. The Second Solid-State Systems Symposium VLSIs and
Semiconductor Related Technologies. pp 31-36.
Jose Israel Pacheco. 2011. A comparative study for the handwritten digit recognition problem.
Presented to the Department of Mathematics and Statistics California State University, Long Beach.
Le Anh Cuong, Ngo Tien Dat, Nguyen Viet Ha. 2010. Isolated Handwritten Vietnamese Character
Recognition with Feature Extraction and Classifier Combination. VNU Journal of Science, Mathematics
- Physics 26. pp 123-139.
Lờ Trn Hựng n. 2012. Nhn dng ch vit tay. Lun vn tt nghip i hc. Trng i hc
Bỏch Khoa, i hc QG TPHCM.
Merciadri Luca, Kửen Kooi. 2010. ngstrửm Manual.
OpenCV Reference Manual v2.1. 2010.
Phm Anh Phng. 2009. Mt s phng phỏp trớch chn c trng hiu qu cho bi toỏn nhn
dng ch vit tay ri rc. Tp chớ khoa hc, i hc Hu. s 53. pp. 73-79.

Phm Anh Phng, Ngụ Quc To, Lng Chi Mai. 2008. Vietnamese Handwritten Character
Recognition By Combining SVM and Haar Wavelet Features. Cỏc cụng trỡnh nghiờn cu khoa hc,
nghiờn cu trin khai CNTT - TT. S 20. pp. 36-42.
Y. LeCun and C. Cortes. 2012. The MNIST Database of Handwritten Digits. Internet: http://yann.
lecun.com/exdb/mnist/

Soỏ 12, thaựng 3/2014

12



×