You are on page 1of 65

AI HOC QUC GIA TP HCM

TRNG I HC CNG NGH THNG TIN


KHOA KY THUAT MAY TINH
TI: Nhn din khun m}t cho bao mt
trn smartphone
Giao vin hng dn:
Thy Phan Quc Huy
Sinh vin thc hin:
Nguyn Anh uc MSSV: 09520501
L Huy Nhun MSSV: 09520592

Nguyn Hng Qu MSSV: 09520243
2

LI GII THIJU
Trong cuc sng hng ngy, phn bit ngi ny vi ngi khc, t! g"n nh
#u ph$i %&! vo khu'n ()t* + t,ng t&, ngi khc nh-n r!, t! c.ng c"n s/ %0ng
1n ch2nh khu'n ()t c3! (4nh* Trong cuc sng hin 5i ngy n!y, g"n nh !i c.ng s6
h7u (t 8ho)c th-( ch2 nhi#u9 chi1c s(!rtphon:* ;in nhi<n, kh'ng !i (un ngi khc
s/ %0ng = c3! (4nh (t cch t& tin* T> ?, cc @ng %0ng b$o (-t cho s(!rtphon: r!
i* A-t khBu C %5ng (D kho phE bi1n nhFt hin n!y* Tuy nhi<n, chG c"n t! s, h6 vi
giy, ngi khc c? th nh cHp (D kho %5ng ny (t cch %I %ng* Jhu'n ()t th4
khc: kh'ng !i c? th nh cHp khu'n ()t c3! b5nK T> L t6ng ?, nhi#u nh s$n MuFt D
cho r! i cc @ng %0ng b$o (-t %&! tr<n (D kho C ch2nh khu'n ()t, v ct CNi c3! cc
@ng %0ng ny C kh$ nOng nh-n %in ch2nh Mc khu'n ()t c3! ch3 nhn* Py c.ng C #
ti nh?( !ng th&c hin*
T5( bQ Ru! cc n#n t$ng khc, hin n!y, Sn%roi% C n#n t$ng %i ng phE bi1n v
c? ti#( nOng Cn nhFt hin n!y* P My %&ng @ng %0ng b$o (-t tr<n n#n t$ng Sn%roi%, t!
c? h!i hng: (t C s/ %0ng Cp T!c:U:t:ctor trong g?i !n%roi%*(:%i! c3! Vr!(:Work
SXY %o Sn%roi% cung cFpZ h!i C s/ %0ng th vin (6 [p:n\+* +i hng th@ nhFt, c?
k] nOng C-p tr4nh ^!v! tt D C 3 c? th My %&ng _c (t @ng %0ng hon chGnh*
Tuy nhi<n, %o kh$ nOng nh-n %5ng c3! cc thu-t ton s/ %0ng trong Cp T!c:U:t:ctor n?i
tr<n v`n ch! c!o, nh?( D Ruy1t anh i th:o hng ti1p c-n th@ h!i vi th vin
[p:n\+ nghi<n c@u My %&ng n<n @ng %0ng b$o (-t c? tin c-y c!o h,n*
[p:n\+ C th vin hb tr_ (5nh cho vic M/ C2 $nh, b!o g=( kho$ng cdd h(
_c vi1t bng ng'n ng7 \e\ff, trong ? c? cc h( hb tr_ vic pht hin khu'n ()t*
;in n!y D c? kh nhi#u thu-t ton nh-n %in khu'n ()t, tuy nhi<n chG c? h!i thu-t ton
_c s/ %0ng phE bi1n, cho k1t Ru$ tt v _c hb tr_ trong [p:n\+ C gig:nV!c: v
Tish:rV!c:* hh?( D ti1n hnh nghi<n c@u h!i thu-t ton ny p %0ng vo @ng %0ng
!ng My %&ng*
3

Py C b$n bo co v# nh7ng g4 nh?( D nghi<n c@u v th&c hin _c trong thi
gi!n v>! Ru!* hi %ung bo co g=( c? nO( ch,ng:
Chuong 1: Tr4nh by tEng Ru!n v# h i#u hnh Sn%roi%, ki1n tric Sn%roi%,
Sn%roi% jUJ, Sn%roi% hUJ, porting [p:n\+ vo Sn%roi% v Ruy tr4nh My %&ng, th&c
thi (t @ng %0ng Sn%roi%*
Chuong 2: Tr4nh by cc c'ng o5n c3! Ru tr4nh nh-n %5ng v cc vFn # Ci<n
Ru!n*
Chuong 3: ;!i thu-t ton nh-n %5ng gig:nV!c:s v Tish:rV!c:s*
Chuong 4: Th vin [p:n\+ v thi1t k1 h thng*
Chuong 5: Tr4nh by, ng gi v# @ng %0ng nh?( My %&ng _c ti thi i(
hin t5i v hng pht trin trong t,ng C!i*
4

MJC LJC
CHNG 1: H IU HNH ANDROID.............................................................9
CHNG 2: CC CNG ON CA QU TRNH NHN DNG...........................23
CHNG 3: CC THUT TON NHN DNG HUN !"T...............................31
CHNG #: TH $IN O%&NC$ $ THI'T ' H TH(NG.................................##
CHNG ): GI*I THIU CHNG TRNH ......................................................)+
5

THUAT NG VIET TAT SU DJNG TRONG BI
SUk: Sn%roi% U:bug kri%g:
SUT: Sn%roi% U:v:Cop(:nt TooCs
S+U: Sn%roi% +irtu!C U:vic:s
SXY: SppCic!tion Xrogr!((ing Ynt:rV!c:
^hY: ^!v! h!tiv: Ynt:rV!c:
^+A: ^!v! +irtu!C A!chin:
hUJ: h!tiv: U:v:Cop(:nt Jit
[j: [p:r!ting jyst:(
[p:n\+: [p:njourc: \o(put:r +ision
jUJ: joVtW!r: U:v:Cop(:nt Jit
DANH MJC HINH ANH
H,-. 1.1. /0- 1234 A-526/5 718.....................................................................9
H,-. 1.2. A-526/5 &9:;<162 718...................................................................13
H,-. 1.3. C=4 >-? 5@-? A-526/5 126-? A%I 5A96 718.....................................1)
H,-. 1.#. %621/-? OBA-C$ CD6 A-526/5 718...................................................1E
H,-. 1.). N?F- G0B A41/C/1H 718. .................................................................19
H,-. 1.+. C.: IJ KL-? 4M< A41/C/1H 718.........................................................2N
H,-. 2.E. OP QR 1S-? T:<- CU T:= 12,-. -.V- 5W-?.......................................2#
H,-. 2.X. OP QR I.L/ 9Y 1Z 4=4 [\]4 4P [Z- 126-? 1.:V1 16=- B.=1 ./^- I.:Y-
9_1...........................................................................................................2#
H,-. 2.9. $` 5@ 9a1 /-B:1 4.6 ./^: K:b1 B.c- ;6W/ Id9.................................2E
H,-. 2.1N. !e: Qf: 2< 4M< 4=4 B.c- I.34 9D: Kg4 CD .,-. 1.=/....................2E
H,-. 2.11. !e: 1/h: 4.:i- ;D 9a1 I.:Y- 9_1 1.j-?. ...................................2X
H,-. 2.12. !a1 KL I01 T:Z Qf: 2< 9e: 4M< 9e: B.k .lB..............................29
6

H,-. 2.13. G./ -.<m - C:n-? Qcn : C<n6 CD .,-. Z-. Qf: 2<..................................3N
H,-. 2.1#. op ;q Qr ;6W/ [s Ck-? 4S.............................................................3N
H,-. 3.1). .:Y- 9_1 12:-? [,-.................................................................31
H,-. 3.1+. !\t/ A/?A-u<4A Qf: 1/h-.............................................................32
H,-. 3.1E. C.`- I.:Y- 9_1 126-? 1VB .:b- ;:H^-.........................................3#
H,-. 3.1X. Ck-? 9a1 I.:Y- 9_1 5\]/ 9\t/ Q/U: I/^- K=-? I.=4 -.<:...........39
H,-. #.19. DW-? Kv-? H<<2.........................................................................#+
H,-. #.2N. Q:H 12,-. 9a1 <BB Kp 5@-? OBA-C$ 4.WH 12h- 1./01 [w..................#E
H,-. #.21. x62Iu;6y 4M< OBA-C$ !<-<?A2..................................................#X
H,-. ).22. !</- A41/C/1H.............................................................................)+
H,-. ).23. C<B1:2A A41/C/1H.........................................................................)E
H,-. ).2#. C.z- Z-. I.:Y- 9_1 K<: I./ 4.@B..............................................)E
H,-. ).2). N.VB 5{ ;/^: I.:Y- 9_1 9]/.......................................................)X
H,-. ).2+. .:Y- 9_1 Q| 4v 126-? COD}......................................................)X
H,-. ).2E. N?:Hh- ;` .6W1 Qa-?...................................................................)9
H,-. ).2X. !</- A41/C/1H.............................................................................)9
H,-. ).29. C<9A2< A41/C/1H.........................................................................+N
H,-. ).3N. %2AC/Ay A41/C/1H. .......................................................................+N
\hi th2ch ngu=n gc cc tF( h4nh
8l9
ViolaJones, Robust Real-time Object Detection, Second
international
workshop on statistical and computational theories of vision
modeling, learning,
computing, and sampling, Vancouver, Canada, July 1, !""1#
$!%

http&''www#stanford#edu'class'ee()'*ro+ect,1"'-eports'Sriadi.hatla,/avo,Chao,0ace-
ecognition#pdf
$%
http&''www#lsv#uni1saarland#de'dsp,ss"2,chap11#pdf
$3%
http&''+ohannitapa4#.logspot#com'!"1!,"(,"1,archive#html
7

8

CHONG 1: HJ IEU HNH ANDROID
1.1. Android l g?
Sn%roi% C (t ngOn M1p ph"n (#( cho cc thi1t ba %i ng b!o g=( (t h i#u
hnh, cc (i%%C:W!r: v cc @ng %0ng ct CNi %o moogC: pht trin* Sn%roi% %&! tr<n
nhn ninuM phi<n b$n o*p* \c @ng %0ng cho Sn%roi% s/ %0ng ng'n ng7 C-p tr4nh ^!v!*
Sn%roi% C (t h i#u hnh (D ngu=n (6: cc nh pht trin c? th t& %o t5o r!
cc @ng %0ng cho Sn%roi% v bFt kq !i c.ng c? th s/ %0ng c.ng nh s/! Ei th:o L
th2ch* Tuy nhi<n, cc thi1t ba Sn%roi% c.ng ch@! (t s ph"n (#( c Ruy#n ( cc nh
pht trin kh'ng th ti1p c-n _c nh h thng anh va ton c"u 8mXj9* Sn%roi% c.ng hb
tr_ nhi#u t2nh nOng: risVi, kCu:tooth, cc (5ng tm v um*
1.2. Kin trc Android
Hnh 1.1. Kin trc Android [1].
Sn%roi% C (t ngOn M1p ph"n (#(, b!o g=( cc t"ng nh tr<n ;4nh l*l* Trong
?, cc h( th&c thi cc @ng %0ng trong h!i t"ng Applications v Applications
Framework _c vi1t bng ng'n ng7 C-p tr4nh ^!v!* \vn cc h( th&c thi cc @ng %0ng 6
9

cc t"ng %i 8i!raries" Android r#ntime" in#$ kernel9 _c vi1t bng (D gc 8native
code9 vi ng'n ng7 \e\ff* Jhi c"n My %&ng (t @ng %0ng Sn%roi% ( c"n ph$i s/
%0ng (t o5n (D vi1t bng \e\ff 6 cc t"ng b<n %i, t! sw s/ %0ng ^hY 8^!v! h!tiv:
Ynt:rV!c:9 giip @ng %0ng vi1t bng ^!v! truy c-p _c cc h( vi1t bng \e\ff*
Ui y t! sw t4( hiu ch@c nOng c3! t>ng t"ng trong ki1n tric Sn%roi%*
Tng Applications
Sn%roi% _c t2ch h_p sxn (t s @ng %0ng c"n thi1t c, b$n, cvn gyi C @ng %0ng
CNi: c!C:n%!r, (!ps, cont!cts, broW:r, c!(:r!, phon:* TFt c$ cc @ng %0ng ny #u _c
vi1t bng ng'n ng7 ^!v!*
Tng Applications Framework
kng cch cung cFp (t n#n t$ng pht trin (6, Sn%roi% cung cFp cho cc nh
pht trin kh$ nOng My %&ng cc @ng %0ng c&c kq phong phi v sng t5o* hh pht trin
_c t& %o t-n %0ng cc thi1t ba ph"n c@ng, th'ng tin a! i( truy c-p, cc %ach v0 ch5y
n#n, thi1t C-p h thng bo ng, h!y g/i c$nh bo 1n cc th!nh tr5ng thi*
hh pht trin c? th truy c-p vo cc SXY Ru! (t %ramework _c My %&ng b6i
cc @ng %0ng CNi* Ji1n tric @ng %0ng _c thi1t k1 ,n gi$n h?! vic ti s/ %0ng cc
ch@c nOng: bFt kq @ng %0ng no c.ng c? th c'ng b kh$ nOng c3! n? v bFt kq @ng %0ng
no khc c.ng c? th s/ %0ng nh7ng kh$ nOng ny c? th ba h5n ch1 %o ch1 b$o (-t
c3! %ramework* TFt c$ cc @ng %0ng c, b$n cFu thnh n<n b %ach v0 c3! h thng, b!o
g=(:
Mt tp hp phong ph cc View c? kh$ nOng k1 th>! C`n nh!u %zng thi1t
k1 ph"n gi!o %in @ng %0ng nh gridview" ta!leview" linearla&o#t, v*v**
Trnh cung cp ni dung (Content Providers): cho ph{p cc @ng %0ng c? th
truy MuFt %7 Ciu t> cc @ng %0ng khc v2 %0: cont!cts ho)c C chi! s| %7
Ciu gi7! cc @ng %0ng vi nh!u*
10

B quan l ti nguyn (eso!rce "#n#$er): cung cFp kh$ nOng truy MuFt ti
cc ti nguy<n kh'ng ph$i C (D ngu=n, ch}ng h5n nh graphics v cc ViC:
C!yout*
B quan l thng bo (%oti&ic#tion "#n#$er): cho ph{p cc @ng %0ng hin tha
cc c$nh bo tr<n th!nh tr5ng thi*
B quan l hot dng (Activit' "#n#$er): Ru$n C2 chu tr4nh sng c3! @ng
%0ng v i#u hng cc ho5t ng*
Tng Libraries
Sn%roi% b!o g=( (t t-p h_p cc th vin \e\ff _c s/ %0ng b6i nhi#u thnh
ph"n khc nh!u trong h thng* Pi#u ny _c th hin Ru! n#n t$ng @ng %0ng* At s
cc th vin c, b$n _c Cit k< %i y:
System C library: th&c hin vic trin kh!i kjU c3! th vi'n h' th(ng )
ch#*n +li!c, v chGnh cho cc thi1t ba nhing %&! tr<n ninuM* kjU C giFy ph{p
ngu=n (6, cho ph{p (yi ngi s/ %0ng ch,ng tr4nh, (D ngu=n c3! n? c.ng
nh cc %`n MuFt*
Media Libararies: %&! tr<n [p:n\[~g c3! X!ck:t+i%:o, C cc th vin hb
tr_ thu pht nhi#u anh %5ng !u%io, vi%:o v $nh t]nh, b!o g=(: AXgmu,
;*opu, AXt, SS\, S~A, ^Xm v Xhm*
Surface Manager: th vin Ru$n C2 truy c-p vo h thng hin tha*
LibWebCore: (t c'ng c0 tr4nh %uyt W:b hin 5i*
SGL: th vin = hy! oU c, b$n*
3D libraries: th vin = ho5 tU %&! tr<n [p:nmn gj l*d SXYs*
Free Type: th vin biu %iIn cc Co5i %ont vector v %ont !itmap*
QLite: th vin c, s6 %7 Ciu*
11

Webkit: th vin cho vic biu %iIn ;TAn*
Tng Android Runtime
T"ng ny b!o g=( cc th vin CNi v (y $o U!Cvik 8-alvik .irt#al /achine 0
-./9* \c th vin CNi b!o g=( cc th vin Cp c, b$n nhFt nh cFu tric %7 Ciu, (5ng,
cc tin 2ch v h thng ViC:*
U+A _c thi1t k1 5t _c cc ch@c nOng Ru$n C2 chu kq sng c3! i t_ng,
Ru$n C2 ngOn M1p, Ru$n C2 Cu=ng, b$o (-t* U+A rFt C2 t6ng s/ %0ng v4 y<u c"u v#
kh'ng gi!n b nh v \X thFp h,n so vi cc (y $o ch5y tr<n cc (y t2nh c nhn v
(y ch3* Th:o t2nh ton c3! moogC:, t! c"n puAk ~SA h thng ho5t ng tt, trong
? ouAk ~SA _c s/ %0ng kh6i t5o, bHt "u h thng c, b$n v odA ~SA _c
s/ %0ng cho cc %ach v0 cFp c!o*
1.3. Linux Kernel
Sn%roi% _c My %&ng tr<n nhn ninuM, nhng Sn%roi% kh'ng ph$i C ninuM*
Sn%roi% %&! tr<n ninuM phi<n b$n o*p cho cc h thng %ach v0 ct CNi nh !n ninh, Ru$n
CL b nh, Ru$n C2 ti1n tr4nh, ngOn M1p (5ng v (' h4nh i#u khin* ;5t nhn c.ng ho5t
ng nh (t Cp tr>u t_ng gi7! ph"n c@ng v ph"n cvn C5i c3! ngOn M1p ph"n (#(*
;5t nhn ninuM hb tr_ cc th vin chi! s| 8shared li!raries9, h,n n7! n? cvn C (D
ngu=n (6*
1.4. Android Emulator
Sn%roi% jUJ v pCugin gcCips: _c gyi C Android -evelopment 1ools +A-1,*
Tr4nh gi$ C-p Sn%roi% 8Android 2m#lator9 _c t2ch h_p vi gcCips: Ru! SUT pCugsin*
Tr4nh gi$ C-p in tho5i Sn%roi% cvn gyi C S+U 8Android .irt#al -evice9 C c'ng c0
giip t! th/ nghi( @ng %0ng* j!u khi kh6i ng S+U, t! c? th trin kh!i (t s C_ng
bFt kq @ng %0ng v th-( ch2 c? th %zng n? g ri*
;4nh %i y (' t$ (t tr4nh gi$ C-p Sn%roi%:
12

Hnh 1.(. Android )*!+#tor [1].
\c tr4nh gi$ C-p Sn%roi% C c'ng c0 tin C_i, nhng ching v`n c? (t s h5n ch1
nhFt anh: tr4nh gi$ C-p kh'ng ph$i C (t thi1t baZ tuy n? c? th (' phQng hnh vi c3!
chi1c in tho5i, nhng n? kh'ng hb tr_ cc ch@c nOng ngh: nh5c, Ru!y phi(, ch0p $nh,
jk, kCu:tooth, v*v* nh in tho5i th-t*
1.5. Android SDK
Sn%roi% jUJ 8Android So%tware -evelopment 3it9 cung cFp nhi#u t-p tin v c'ng
c0 )c bit hb tr_ cho vic thi1t k1 v pht trin cc @ng %0ng ch5y tr<n n#n t$ng
Sn%roi%* Sn%roi% jUJ c.ng ch@! cc th vin rng buc cc @ng %0ng th:o )c t2nh
c3! Sn%roi%, v2 %0: nh7ng th vin ny _c k1t h_p vi cc ch@c nOng c3! in tho5i %i
13

ng 8th&c hin v nh-n cuc gyi9, cc ch@c nOng mXj v nhHn tin vOn b$n* hh7ng th
vin ny t5o n<n CNi c3! jUJ v _c s/ %0ng thng Muy<n nhFt*
Xh"n Cn Sn%roi% jUJ C cc t-p tin, ti Ciu C-p tr4nh SXYZ cc c'ng c0 hb tr_ Ru
tr4nh pht trin @ng %0ngZ cc v2 %0* Th (0c gc c3! Sn%roi% jUJ ch@! vi t-p tin nh
android45ar 8(t @ng %0ng ^!v! _c bi<n %ach c? ch@! cc th vin CNi jUJ v SXY9,
cc ViC: ghi chi, v*v** Xh"n cvn C5i c3! Sn%roi% jUJ _c chi! thnh b! th (0c ch2nh:
Docs: ch@! tFt c$ cc ti Ciu i k( vi Sn%roi%*
Samples: ch@! cc @ng %0ng (`u*
Tools: ch@! tFt c$ cc c'ng c0 g Cbi, bi<n %ach v pht trin ( t! c"n trong
sut Ru tr4nh pht trin (t @ng %0ng Sn%roi%*
Trong (0c Samples c? su @ng %0ng Sn%roi% (`u* u! nh7ng v2 %0 ny, moogC:
cung cFp cho t! (t s L t6ng c, b$n v# cch pht trin (t @ng %0ng Sn%roi%* Abi
@ng %0ng (`u th hin (t ph"n khc nh!u v# ch@c nOng c3! Sn%roi%* \hing t! c? th
(6 v ch5y cc @ng %0ng ny t> b<n trong c3! gcCips:*
A67 -emos C (t @ng %0ng ch3 8host application9 (' t$ nhi#u h( SXY trong
(t activit& ,n C|* Abi activit& C (t @ng %0ng Sn%roi%* ng %0ng SXY U:(os g=(
nhi#u v2 %0 khc nh!u v# ch@c nOng c3! Sn%roi%:
14

Hnh 1.,. C-c .n$ d/n$ Android tron$ API de*o [1].
mi!o %in C-p tr4nh @ng %0ng SXY 8Application 6rogramming 7nter%ace9 C ph"n CNi
c3! Sn%roi% jUJ* SXY C t-p h_p cc h(, ph,ng th@c, )c t2nh, Cp v cc th vin
_c s/ %0ng b6i cc nh pht trin @ng %0ng t5o r! cc ch,ng tr4nh C( vic tr<n
(t n#n t$ng c0 th* \c Sn%roi% SXY ch@! tFt c$ cc th'ng tin c0 th ( t! c"n t5o r!
@ng %0ng ch5y tr<n n#n Sn%roi%*
Sn%roi% jUJ cvn ch@! h!i b SXY bE sung C Google A67s v 8ptional A67s:
Google APIs
\c SXY c3! moogC: _c ch@! trong g?i com4google49* TFt c$ n( trong t-p tin
android45ar* At s g?i trong ? cung cFp cc h( cho = hy!, t2nh kh$ chuyn, %!nh b5
15

v cc tin 2ch v# Cach* \h}ng h5n, g?i com4google4android4maps ch@! cc h( kh!i
thc %ach v0 moogC: A!ps* +i n?, t! c? th t5o cc @ng %0ng t,ng tc vi gi!o %in
Ru:n thuc c3! moogC: A!ps*
Optional APIs
8ptional A67s b!o g=( cc h( cho cc t2nh nOng tuq chyn trong in tho5i
Sn%roi%* At trong nh7ng t2nh nOng ny C mXj* Sn%roi% nkj 8ocation:!ased Services9
SXY gi$i Ruy1t vic ti1p nh-n v s/ %0ng th'ng tin t> mXj c3! in tho5i* J1t h_p th'ng
tin trong nkj Sn%roi% SXY vi mXj trong moogC: A!ps SXY c? th t5o r! (t @ng %0ng
rFt h7u 2ch t& ng hin tha (t b$n = anh va* At s optional A67s khc b!o g=(
cc tzy chyn cho vic s/ %0ng kCu:tooth, risTi, ch,i nh5c AXt v truy c-p ph"n c@ng
tUs[p:nmn*
1.6. Android NDK
hh D # c-p trong ph"n ki1n tric c3! Sn%roi%, khi t! vi1t (t @ng %0ng cho
Sn%roi% vi ng'n ng7 ^!v!, t! c? th c"n %zng 1n (t o5n (D no ? 6 cc t"ng b<n
%i, nh t"ng i!raries, vi1t bng cc ng'n ng7 \e\ff* P ^!v! c? th truy c-p _c
cc h( \e\ff, t! c"n (t gi!o %in trung gi!n ching c? th t,ng tc vi nh!u* mi!o
%in ? ch2nh C ^hY 8;ava <ative 7nter%ace9*
Sn%roi% hUJ C (t c'ng c0 =ng hnh vi Sn%roi% jUJ cho ph{p My %&ng cc
thnh ph"n Ru!n tryng c3! @ng %0ng vi (D gc 8native code9* Sn%roi% hUJ b!o g=(
(t t-p h_p cc header c3! h thng _c hb tr_ trong cc phi<n b$n c3! n#n t$ng
Sn%roi% nh Cibc, ^hY h:!%:rs, \ff h:!%:rs, [p:nmn, v*v** +i ching, t! c? th My
%&ng cc !ctivity vi \e\ff* hgoi r!, Sn%roi% hUJ cvn c? (t s ti Ciu, (D ,n gi$n
v cc v2 %0* Sn%roi% hUJ C (t cch g?i cc th vin vo trong ViC: SXJ g?i @ng
%0ng %zng phn phi v ci )t C<n thi1t ba s/ %0ng Sn%roi%*
Sn%roi% hUJ hb tr_ ^hY giip cc nh pht trin My %&ng cc @ng %0ng s/ %0ng
1n cc o5n (D gc c3! cc t"ng b<n %i* Pi#u ny c? L ngh]! Ru!n tryng trong (t h
thng nhing vi cc t"ng t5o n<n (t ngOn M1p ph"n (#(* \"n Cu L rng vic s/ %0ng
16

(D gc kh'ng nhFt thi1t sw tOng hiu suFt @ng %0ng, nhng C5i Cu'n tOng ph@c t5p c3!
thi1t k1*
1.7. Porting OpenCV vo Android
P pht trin @ng %0ng Sn%roi% vi [p:n\+, "u ti<n t! c"n porting _c th
vin ny vo trong ki1n tric c3! Sn%roi%* [p:n\+ C th vin hb tr_ (5nh cho vic M/ C2
$nh, b!o g=( kho$ng cdd h( _c vi1t bng ng'n ng7 \e\ff, trong ? c? cc h( hb
tr_ vic pht hin khu'n ()t* [p:n\+ C c'ng c0 (D ngu=n (6 th2ch h_p cho nghi<n
c@u v pht trin* P porting [p:n\+ vo Sn%roi%, t! s/ %0ng Sn%roi% hUJ* Ui y
C (' h4nh porting [p:n\+:
Hnh 1.0. Portin$ 12enCV v3o Android [1].
TE ch@c th vin [p:n\+ b!o g=( u (o%uC: ch2nh v o (o%uC: (6 rng* \c
(o%uC: ). v ).A=> hb tr_ cc ch@c nOng cFp c!o 8nh-n %5ng khu'n ()t, hiu chGnh
c!(:r!9, M/ CL $nh, phn t2ch chuyn ng* Ao%uC: )$)ore tE ch@c %7 Ciu c, s6, th&c
hin cc thu-t ton 8ph{p t2nh (! tr-n, t2nh ton s hyc9* Ao%uC: ?ighG#id giip t5o
nh!nh gi!o %in v hb tr_ truy MuFt $nhephi( t> ViC: ho)c thi1t ba ngo5i vi*
17

P porting, "u ti<n t! t$i th vin [p:n\+ v# v gi$i n{n, s!u ? s/ %0ng
Sn%roi% hUJ ti1n hnh porting* Trong gcCips:, t! t5o (t pro5ect 8%& n9 cho vic
th&c thi porting* Ti1p th:o, t! t5o (t ViC: t<n C 5ni trong pro:ct* TiC: 5ni ny sw ch@! h!i
ViC: C Application4mk v Android4mk* TiC: Sn%roi%*(k b!o g=( cc (o%uC: C cc th
vin c3! [p:n\+ c"n porting vo trong Sn%roi% vi ng %`n ing* j!u ?, t! %zng
Cnh ndk:!#ild tr<n buntu bi<n %ach th vin [p:n\+ cho ki1n tric S~A c3!
Sn%roi%* \hi L: s/ %0ng _c Cnh ndk:!#ild t! c"n ph$i t$i !n%roi% hUJ v# v Ci<n
k1t 1n ing th (0c ch@! Sn%roi% hUJ D _c gi$i n{n* j!u khi porting, t! c? (t
th vin chi! s| c? t<n li!8pen).4so n( trong th (0c li!s@armea!i* Th vin chi! s|
ny sw n( trong t"ng i!raries trong ki1n tric Sn%roi%*
1.8. Cc thnh phn to nn mt ng dng Android
\c @ng %0ng Sn%roi% sw _c My %&ng t> cc thnh ph"n c, b$n, ? C: Activit&"
Service" Aroadcast receiver" )ontent 6rovider v 7ntent*
Activity
Activit& C (t thnh ph"n @ng %0ng cung cFp (t (n h4nh ( ngi %zng c? th
t,ng tc C( (t ci g4 ?, ch}ng h5n nh: Ru!y s in tho5i, ch0p $nh, g/i :(!iC
ho)c M:( b$n =* At !ctivity c? th bHt "u t> cc !ctivity khc* k<n trong h thng,
cc !ctivity _c Ru$n CL nh (t ngOn M1p* Jhi (t !ctivity (i _c bHt "u, n? _c
)t 6 Gnh c3! ngOn M1p v tr6 trnh !ctivity !ng ch5y* !ctivity trc sw 6 b<n %i
!ctivity (i v ba Bn i trong sut Ru tr4nh !ctivity (i t=n t5i* h1u ngi %zng nhFn nit
k!ck, !ctivity k1 ti1p c3! ngOn M1p sw %i chuyn C<n v chuyn s!ng tr5ng thi active*
;4nh %i y (' t$ (t ngOn M1p cc !ctivity:
18

Hnh 1.4. %$5n 62 Activit' [1].
Abi ti1n tr4nh ch5y @ng %0ng tr<n n#n t$ng Sn%roi% _c )t tr<n (t ngOn M1p*
Jhi s/ %0ng (t !ctivity tr<n Vor:groun%, ti1n tr4nh h thng sw ! !ctivity ? C<n tr<n
czng c3! ngOn M1p v !ctivity trc ? sw _c chuyn Mung (@c %i* TFt c$ cc
!ctivity #u c? kh$ nOng ba %>ng C5i ho)c ph h3y bFt c@ Cic no v4 ngi %zng c? Ruy#n
th!y Ei cc !ctivity tzy th:o L th2ch c3! hy* +2 %0: hy !ng %zng !ctivity C (t cuc gyi
v s!u ? hy %>ng cuc gyi v chuyn s!ng !ctivity khc C ch0p $nh, g/i :(!iC h!y nhHn
tin jAj* h1u ti1n tr4nh !ctivity ba thot r! khQi %oregro#nd, n? sw ba h3y* ;4nh %i y
(' t$ chu kq sng c3! !ctivity:
19

Hnh 1.7. Ch! 89 s:n$ c;# Activit' [1].
Trng thi Starting:
Jhi (t !ctivity kh'ng t=n t5i trong b nh th4 n? 6 tr5ng thi starting* Trong khi
!ctivity !ng kh6i ng, !ctivity sw i Ru! (t chubi cc ph,ng th@c call!ack* \ui
czng, !ctivity sw 6 tr5ng thi r#nning* nu L rng Ru tr4nh chuyn Ei t> tr5ng thi
starting s!ng tr5ng thi r#nning C (t trong nh7ng ho5t ng tn thi gi!n t2nh ton
nhFt, =ng thi n? c.ng $nh h6ng tr&c ti1p 1n tuEi thy c3! pin* P? C CL %o t5i s!o t!
kh'ng th t& ng h3y cc !ctivity ( ching kh'ng cvn _c hin tha*
Trng thi Running:
Sctivity 6 trong tr5ng thi r#nning 8!ng ho5t ng9 ngh]! C !ctivity ? _c hin
tha tr<n (n h4nh v t,ng tc vi ngi %zng* hgi %zng c? th t,ng tc nh gN
ph2(, ch5( vo (n h4nh v nhFn cc nit* TFt c$ cc th!o tc ny _c M/ CL b6i !ctivity
ny* hh v-y, t5i (t thi i(, chG c? %uy nhFt (t !ctivity 6 tr5ng thi r#nning*
Trng thi Paused:
20

Jhi (t !ctivity kh'ng _c %oc#s 8ch}ng h5n nh n? kh'ng _c t,ng tc vi
ngi s/ %0ng9 nhng n? v`n c? th _c nh4n thFy 6 tr<n (n h4nh* Trong trng h_p
ny, t! n?i !ctivity !ng 6 tr5ng thi t5( %>ng 8pa#sed9
Trng thi Stopped:
Jhi (t !ctivity kh'ng hin tha nhng v`n cvn 6 trong b nh th4 t! n?i rng n?
!ng 6 tr5ng thi %>ng 8stopped9* \c !ctivity 6 tr5ng thi %>ng ny c? th _c ! tr6
C5i tr6 thnh !ctivity !ng ch5y 8r#nning9 ho)c ba ph h3y v Co5i bQ khQi b nh* ;
thng v`n gi7 C5i cc !ctivity 6 tr5ng thi stopped v4 c? th ngi %zng v`n (un Ru!y
tr6 C5i cc !ctivity trc ?* Uo ?, t! sw ti1t ki( _c thi gi!n v4 kh'ng ph$i kh6i
ng !ctivity C5i t> "u* \c !ctivity 6 tr5ng thi stopped c? th ba Co5i khQi b nh bFt c@
Cic no*
Trng thi Destroyed:
Jhi (t !ctivity ba ph h3y, n? kh'ng cvn 6 trong b nh n7!* 1rBnh C#Dn lE
activit& Ruy1t anh !ctivity ny kh'ng cvn c"n thi1t v %o ? sw Co5i bQ n?* Trc khi
!ctivity ba ph h3y, n? c? th th&c hin cc hnh ng nhFt anh nh Cu C5i th'ng tin
ch! Cu* Trc khi ba ph h3y, !ctivity sw _c ng>ng C5i 8stopped9*
Trong sut chu kq sng, (bi !ctivity c3! (t ch,ng tr4nh Sn%roi% sw t=n t5i 6 vi
tr5ng thi khc nh!u* n-p tr4nh vi<n kh'ng ph$i i#u khin cc tr5ng thi trong ch,ng
tr4nh* TFt c$ ho5t ng ? #u _c M/ CL bng cch gyi ph,ng th@c th:o cFu tric
onStart+,, on6a#se+," onFes#me+," on6a#se+," onFestart+," on-estro&+,"
onSave7ntanceState+A#ndle," onFestore7nstanceStat+A#ndle,* n-p tr4nh vi<n sw ph$i ghi
cc ph,ng th@c ny trong Cp Activit&, v Sn%roi% sw gyi ching 6 thi i( th2ch
h_p:
on)reate+A#ndle,: Xh,ng th@c ny _c gyi khi !ctivity kh6i ch5y C"n "u
ti<n* T! c? th s/ %0ng n? th&c thi vic kh6i t5o cc thnh ph"n khc nh
gi!o %in ngi %zng h!y k1t ni %7 Ciu* Xh,ng th@c ny c? (t th!( s, c?
21

th C n#ll ho)c C th'ng tin tr5ng thi trc ? _c Cu b6i ph,ng th@c
onSave7nstanceState+,*
onStart+,: Xh,ng th@c ny _c gyi trc khi (t !ctivity Bn vi ngi %zng*
onFes#me+,: P_c gyi khi !ctivity bHt "u t,ng tc vi ngi %zng* T5i thi
i( ny, !ctivity 6 tr<n Gnh c3! ngOn M1p !ctivity*
on6a#se+,: P_c gyi khi chuyn s!ng ch1 ch5y n#n, thng C khi c? (t
!ctivity khc _c ch5y tr<n n?* T5i y, t! c? th Cu C5i tr5ng thi c anh c3!
ch,ng tr4nh, c.ng nh ghi C5i th!y Ei trong c, s6 %7 Ciu*
onStop+,: P_c gyi khi !ctivity kh'ng cvn MuFt hin vi ngi %zng v sw
kh'ng c"n ti n7!* h1u b nh kh'ng 3, ph,ng th@c ny sw kh'ng b!o gi
_c gyi*
onFestart+,: h1u ph,ng th@c ny _c gyi, !ctivity sw _c hin tha C5i t>
tr5ng thi stopped*
on-estro&+,: Xh,ng th@c ny thng ph$i _c gyi trc khi h3y (t
!ctivity* h1u b nh kh'ng 3, ph,ng th@c ny sw kh'ng b!o gi _c gyi*
onSave7ntanceState+A#ndle,: Sn%roi% sw gyi ph,ng th@c ny cho ph{p
!ctivity Cu C5i tr5ng thi c3! n?* Th'ng thng t! kh'ng c"n override n? v4
Ru tr4nh Cu C5i tr5ng thi c3! tFt c$ cc gi!o %in ngi %zng _c i#u khin
(t cch t& ng*
onFestore7nstanceStat+A#ndle,: jw _c gyi khi !ctivity _c kh6i t5o C5i t>
tr5ng thi _c Cu trc ?, _c th&c hin b6i ph,ng th@c
onSave7nstanceState+,* \c !ctivity kh'ng ch5y 6 tr<n czng c? th ba %>ng C5i,
ho)c h thng sw h3y ti1n tr4nh ninuM ch@! !ctivity ? t5o kh'ng gi!n cho
cc !ctivity (i*
22

CHONG 2: CC CNG ON CUA QU TRINH
NHAN DNG
2.1. Cc cng doan cua qua trinh nhn dang
; thng nh-n %5ng khu'n ()t C (t h thng _c thi1t k1 t4( th'ng tin c3!
(t ngi* J] thu-t nh-n %5ng C ki( tr! s& phz h_p %&! tr<n ph{p so snh (t hoO c
nhi#u khu'n (Ot, c0 th C t4( r! (t ngi C !i trong s nh7ng ngi D _c Cu tr7
trong h thng %&! vo th'ng tin khu'n ()t*
u! trinh nhn %!ng ,c chi! C!( o phn:
u! trinh hun Cuy<n*
u! trinh nhn %!ng*
23

Hnh (.<. => ?@ tAn$ B!#n vC B!- trnh nhDn dEn$.
+4 thi gi!n c? h5n n<n = n ny chG i vo ph"n nh-n %5ng ( bQ Ru! ph"n huFn
Cuyn* Xh"n pht hin khu'n ()t sw _c tr4nh by 6 (0c o*o, cvn ph"n nh-n %5ng khu'n
()t sw _c tr4nh by ri<ng trong ph"n YYY*
2.2. Pht hin khun m}t
kc "u ti<n trong thu-t ton nh-n %5ng khu'n ()t C pht hin khu'n ()t*
Hnh (.F. => ?@ 8h:i *G tH c-c IJKc c> IHn tron$ th!Dt to-n 2h-t hiLn 8h!Gn *Mt.
24

; thng %v t4( pht hin khu'n ()t th&c hin bn bc ch2nh s!u:
1. c lung v| tr: P gi$( s C_ng bi1n Ei trong $nh huFn Cuyn %,ng, $nh
_c c!nh bi<n vi cc $nh khc c&c tiu ho cc bi1n Ei va tr2 )c trng khu'n ()t*
Jhi thi hnh ch,ng tr4nh, t! kh'ng bi1t ch2nh Mc cc va tr2 )c trng khu'n ()t, %o ?
kh'ng th %zng ching anh va cc @ng vi<n khu'n ()t ti#( nOng* Th!y vo ?, t! %v
t4( ton %in 6 (yi va tr2 v t C t4( tFt c$ cc @ng vi<n* PD c? (t s cc c$i ti1n
giip thu-t ton %v t4( ho5t ng nh!nh h,n, vi tG C %v t4( gi$( ld td *
2. Tin xu l: P gi$( cc bi1n Ei gy r! %o chi1u sng h!y (y Ru!y, $nh tr$i
Ru! Ru tr4nh ti#n M/ C2 vi cc thu-t ton chuBn nh cn bng C_c = c$i thin
sng v t,ng ph$n trong $nh*
3. D tm - pht hin: \c khu'n ()t ti#( nOng D chuBn ho v# va tr2, t th1 v
sng trong h!i bc "u ti<n _c kh$o st Mc anh ching c? th&c s& C khu'n ()t
h!y kh'ng* uy1t anh ny _c th&c hin bng (' h4nh phn phn Cp D huFn Cuyn
8(5ng n,ron nhn t5o, j+A, v*v*9 vi nhi#u $nh (`u khu'n ()t v kh'ng ph$i khu'n
()t*
4. Quyt d|nh: \c (' h4nh phn Cp D _c huFn Cuyn sw phn Cp (t $nh
"u c? ph$i C khu'n ()t h!y kh'ng* \c Ruy1t anh c3! ching c? th k1t h_p %zng (t
s he#ristic ,n gi$n tOng ch2nh Mc %v t4( khu'n ()t v ngOn ch)negi$( thiu Cbi*
T! sw i su vo c'ng o5n t: Uv t4( pht hin khu'n ()t*
T! c"n s/ %0ng phn GoHn mI# sJc, $K lE hBnh thLi hMc v thu-t ton phz h_p cho
vic pht hin khu'n ()t* h1u ngi %zng ch0p b@c $nh (t cch ch2nh Mc, t! c? th
C( th:o cc gi$ anh s!u:
nFy _c nh7ng i( trung t( c3! khu'n ()t
Pi#u kin nh sng tt
+4 th1, t! s/ %0ng cc bc %i y pht hin khu'n ()t:
25

kl: j/ %0ng phn GoHn mI# sJc t4( i( $nh*
ko: j/ %0ng hBnh thLi hoHt GNng Co5i bQ i( $nh ri<ng bit*
kt: j/ %0ng cc (`u phz h_p vi vic tr2ch MuFt cc i( khu'n ()t (
ching t! sw s/ %0ng nh-n %5ng khu'n ()t*
2.1.1. Phn don mu
\c phn khic (u sHc c? th _c th&c hin bng nhi#u cch khc nh!u vi (t
s ph,ng php rFt ti<n ti1n M/ CL h4nh $nh trong i#u kin nh sng ('i tr,ng
kh'ng t't* y ching t'i D t4( r! (t Ruy tHc ,n gi$n pht hin cc i( $nh (t
cch nh!nh ch?ng*
P"u ti<n, ching t! c? th C( vic trong cc kh'ng gi!n FGA gi$( chi ph2 t2nh ton*
At i( $nh vi gi tra (u 8~ ~:%, m mr::n, k kCu:9 sw _c phn Co5i n1u:
F O PQ vI G O RS vI A O TS4
F O G vI F O A4
F 0 G O UQ
h?i chung, thu-t ton ny ho5t ng tt, nhng ching t'i (un kh( ph cc C&!
chyn khc v4 tc c3! phn Co5i ~mk ch-( h,n so vi %& ki1n* \? (t ph,ng php
phn o5n (u sHc s/ %0ng rng rDi khc %&! tr<n )r 8(t k<nh (u trong h V)!)r9
ho)c ?#e 8(u thu"n, kh'ng chau $nh h6ng c3! sng9* \hing t'i D ki( tr! cc
Ruy tHc khc nh!u cho ?#e, nhng vi (t s i#u kin nh sng, vic phn Co5i c? th
Ru kh? khOn ho)c Ru %I %ng*
26

Hnh (.N. VO d/ *Pt in2!t cho hiL! s!Qt 2hRn +oEi 8S*.
2.1.2. Xu l hnh anh
j!u khi phn o5n (u sHc, t! thu _c s i( $nh* Tuy nhi<n khu'n ()t ny
kh'ng hon h$o v4 v`n t! kh'ng thu _c (t s i( $nh thuc khu'n ()t: (t s b
ph-n c3! khu'n ()t v`n n( ngoi vzng mask 8M:( ;4nh o*u9* Uo ?, M/ CL h4nh $nh
h4nh thi hyc C (t cch tt Co5i bQ cc i( $nh % th>! v t-p h_p cc i( $nh t!
!ng Ru!n t(* P"u ti<n, t! c"n th&c hin Co5i bQ cc i( $nh kh'ng Ci<n Ru!n* Th@
h!i, t! p %0ng s& giDn vi (t khung Cn h,n t-p h_p cc vzng %! v C( (an cc
ng n{t*
Hnh (.1T. "U! ?V! r# c;# c-c 2hRn 8hc *3! sWc v3 hnh th-i.
27

2.1.3. Su dng khun m}t mu
j!u khi (t h4nh $nh phn o5n (u thu _c, (`u phz h_p sw _c s/ %0ng
trong Ru tr4nh nh-n %in khu'n ()t* jo khp (`u C (t Ru tr4nh anh va (t i
t_ng 5i %in b6i (t (`u 1+$" &, trong (t h4nh $nh "u vo 7+$" &, t,ng @ng "u vo
vi cc (`u* +ic so khp _c th&c hin trong (i#n t"n s s/ %0ng 8TTT v YTTT9 v4
hiu Ru$ t2nh ton c!o h,n*
j C_ng CFy (`u c3! cc phn khic (u sHc v h4nh thi hyc _c s/ %0ng nh
(t "u vo cho so khp (`u* At (`u ti<u chuBn 8trung b4nh kho$ng udd khu'n ()t,
c$ n!( C`n n7 v thuc cc %n tc khc nh!u9 _c CFy t> int:rn:t* j!u ? cc (`u _c
chuBn h?! oU vi t,ng Ru!n ch{o _c th&c hin vi h4nh $nh "u vo cho trc c?
_c va tr2 c3! khu'n ()t* +i cc h4nh $nh _c ch0p t> in tho5i, t! kh? c? th t5o r!
(t (`u ti<u chuBn tt v4 cc h4nh $nh ny thng t,ng i khc vi (`u trung b4nh
c3! c$ b*
A`u ti<u chuBn _c s/ %0ng C (t h4nh $nh (u M(* +4 v-y, h4nh $nh "u vo
_c chuyn thnh (u M( v so snh vi cc (`u* A`u chuBn _c so khp _c th
hin trong ;4nh o*c* hh ching t! c? th thFy trong h4nh, (`u ti<u chuBn C (t khu'n
()t th}ng*
Hnh (.11. "U! tiX! ch!Yn +3 *Pt 8h!Gn *Mt thZn$.
Jhu'n ()t trong h4nh $nh th/ nghi( _c th&c hin bng cch s/ %0ng in
tho5i c? th c? k2ch thc khc nh!u* T,ng @ng vi k2ch thc ti<u chuBn (`u D cho
k1t Ru$ tt* +4 v-y, t,ng Ru!n h4nh $nh vi cc (`u c? k2ch thc khc nh!u 8t C d,p
l,9 v so snh vi cc gi tra t,ng Ru!n* J thu-t ny ho5t ng tt trong vic pht hin
khu'n ()t c3! cc k2ch c khc nh!u* Ui y C (t s k1t Ru$ "u r! (`u c3! (`u
phz h_p:
28

Hnh (.1(. "Pt s: 8t B!H ?V! r# *U! c;# *U! 2h[ h\2.
j!u khi phn o5n (u sHc v M/ CL h4nh thi, k1t Ru$ C2 t6ng C chG c? ph"n ()t
c3! h4nh $nh cvn _c gi7 C5i* Trong trng h_p ny, ching t! c? th kh'ng c"n so khp
(`u*
2.1.4. Mt cch tip cn khc
jo khp (`u vi k1t Ru$ thu-t ton ph0 thuc nhi#u vo cc Co5i (`u _c s/
%0ng* h1u "u vo kh'ng t,ng =ng vi cc (`u ?, k1t Ru$ kh'ng tt* \ch ny c.ng
kh'ng cho k1t Ru$ tt trong i#u kin nh sng k{( v (u sHc %! ti*
;4nh $nh "u r! c3! gi!i o5n phn o5n (u _c h-u M/ CL bng ph,ng php
gn nhDn vzng* h1u n#n c? (u t,ng t& %!, cc thu-t ton phn o5n (u kh'ng th
phn bit _c* +ic gn nhDn sw hb tr_ ph"n no vic Co5i bQ nh7ng vzng n#n nhQ c?
(u ging nh (u %!* y, ching t! gi$ s/ khu'n ()t chi1( ph"n Cp %in t2ch c3!
b@c $nh* ;4nh o* cho thFy nh7ng h4nh $nh trc v s!u khi p %0ng cc thu-t ton gn
nhDn cho cc vzng phn o5n*
+i (t s h4nh $nh, ch}ng h5n nh ;4nh o*, pht hin ch2nh Mc khu'n ()t,
vzng cE ph$i _c Co5i bQ* \hing t'i p %0ng (t %zng ph,ng php nh-n %5ng vzng %!
o5n gn nhDn cc vzng phn o5n Co5i bQ cc khu v&c cE*
29

Hnh (.1,. ]hi nh#^n v!_n$ ?R_ ! v#_o v3 hnh Hnh ?V! r#.
Hnh (.10. `a +b ?c +oEi Id v[n$ cA.
30

CHONG 3: CC THUAT TON NHAN DNG
KHUN MAT
\h,ng ny sw tr4nh by s, C_c v# h!i thu-t ton nh-n %5ng khu'n ()t _c s/
%0ng phE bi1n hin n!y C 2igen%ace v Fisher%ace czng (t vi nh gi v# ching*
3.1. Thut ton Eigenface
3.1.1. Eigenface l g?
T> (t b $nh khu'n ()t, t! s/ %0ng ph,ng php 6rinciple )omponent Anal&sis
8X\S Xhn t2ch cc thnh ph"n ch2nh y1u9 t2nh ton v thu _c cc eigenvector c3!
cc khu'n ()t ?* \c v:ct, ? _c gyi C eigen%ace c3! khu'n ()t (`u*
T-p huFn Cuyn t,ng t& D _c s/ %0ng cho c$ h!i ph,ng php gig:nV!c: v
Tish:rV!c:* Trong ch,ng tr4nh gig:nV!c:, khu'n ()t trung b4nh t2nh ton _c th hin
trong h4nh:
Hnh ,.14. Kh!Gn *Mt tr!n$ Inh.
Trng h_p ny t! c? uc h4nh $nh trong t-p ki( tr!, %o ? c? nhi#u nhFt uu
v:ctor ri<ng, v2 %0: uu :ig:nV!c: c? th _c t4( thFy, v ching _c sHp M1p th:o th@ t&
gi$( %"n c3! gi tra ri<ng t,ng @ng c3! ching* Ai :ig:nV!c: "u ti<n _c th hin
trong h4nh* \c khu'n ()t trong t-p huFn Cuyn s!u ? _c chi1u C<n cc :ig:nV!c:, v
tryng C_ng _c Cu tr7 nh ty! trong kh'ng gi!n )c trng*
31

Hnh ,.17. "Jei ei$en&#ce ?V! tiXn.
3.1.2. Principle Component Analysis (PCA)
3.1.2.1. tung chnh ca PCA
X\S C (t k thu-t phn t2ch bi1n Ei _c nghi<n c@u kh rng rDi v bi1t 1n
nhi#u* Thu-t ton ny C"n "u ti<n _c gii thiu b6i X:!rson 8ldl9, v _c pht trin
(t cch c C-p b6i ;ot:CCing 8ltt9* ming nh nh7ng ph,ng php phn t2ch bi1n
Ei, thu-t ton ny kh'ng _c s/%0ng rng rDi cho ti khi k thu-t (y t2nh r! i*
t6ng ch2nh c3! thu-t ton phn t2ch thnh ph"n ch2nh C gi$( s chi#u c3! t-p %7 Ciu c?
s& t,ng Ru!n Cn gi7! cc bi1n* A)c %z gi$( s chi#u c3! bi1n nhng v`n %uy trzy s&
bi1n Ei nhi#u nhFt c? th c3! t-p %7 Ciu b!n "u* P)c i( c3! nh7ng bi1n (i ny C
kh'ng cvn )c t2nh t,ng Ru!n gi7! ching* At )c i( khc c3! cc bi1n C ching
_c sHp M1p (t vi bi1n "u ti<n nhFt th hin h"u nh7ng )c trng c3! tFt c$ cc
bi1n b!n "u* Trong X\S % th>! c? th o _c b6i s& t,ng Ru!n gi7! cc ph"n
t/%7 Ciu* Ai t,ng Ru!n th&c hin %&! tr<n c, s6 thng k< b-c o* Th&c chFt c3! X\S C
gi$i Ruy1t bi ton t4( tra ri<ng v v:ctor ri<ng cho (! tr-n i M@ng*
Trong ph{p bi1n Ei X\S, v:ctor M _c ! v# gi tra trung t( bng cch tr>vi gi
tra trung b4nh c3! n?* mi tra trung b4nh _c c C_ng t> cc (`u $+U," $+T," $+W,"X4
$+1,* j!u khi D trung t( h?! cc (`u, $ sw _c bi1n Ei tuy1n t2nh thnh v:ctor & vi
m h s +mYn,, v4 v-y % th>! _c Ruy vo (i t,ng Ru!n v sw ba Co5i bQ* TFt c$
Ru tr4nh tr<n _c th&c hin bng vic Ru!y h thng ty! tr&c gi!o C( cho cc h s
c3! $ trong h ty! (i kh'ng cvn tr&c gi!o* \zng Cic ?, s& bi1n Ei h4nh chi1u c3! $
C<n h tr0c ty! (i _c c&c 5i h?!* Tr0c ty! th@ nhFt 8thnh ph"n ch2nh th@ nhFt9
biu %iIn s& th!y Ei Cn nhFt, tr0c th@ o 8thnh ph"n ch2nh th@ h!i9 p @ng vi s& s!i
khc Cn nhFt th:o hng vu'ng g?c vi tr0c th@ nhFt, v c@ ti1p %iIn nh th1*
32

j!i s b4nh ph,ng trung b4nh sw cho ching t! bi1t _c b!o nhi<u tG C thnh ph"n
ch2nh ba Co5i bQ* h1u t! chyn m Z n khi ? s!i s C d, nhng Cic ny thu-t ton X\S
kh'ng cvn L ngh]!* +Fn # )c r! C s& thQ! hip gi7! s!i s c? th chFp nh-n v s thnh
ph"n ch2nh gi7 C5i* PD v !ng c? rFt nhi#u c'ng tr4nh nghi<n c@u t4( r! gi$i php ti
u cho vic gi7 C5i b!o nhi<u thnh ph"n ch2nh* At snghi<n c@u _c n<u r! nh:
3.1.2.2. Phuong php tch ly phn trm trn tng s bin
U&! tr<n tEng s bi1n c? trong t-p %7 Ciu b!n "u, t> tr<n k1t Ru$ th&c nghi( tc gi$
nh-n M{t v ! r! c'ng th@c cho vic gi7 C5i b!o nhi<u thnh ph"n ch2nh nh s!u:
~it gi$( t! _c:
Trong ?:
l
k
: tra ri<ng th@ k
m: s ( thnh ph"n ch2nh "u ti<n*
p: bi1n trong t-p %7 Ciu c"n tr2ch )c trng
s
i5
: C bi1n c3! t-p %7 Ciu b!n "u*
Th:o th&c t1 kh$o st ph,ng php ny chyn s thnh ph"n ch2nh c"n Co5i bQ C kho$ng
d 1n d*
3.1.2.3. Phuong php da trn kch thuc ca nhng bin trong
nhng thnh phn chnh
Xh,ng php trc _c p %0ng cho trng h_p (! tr-n hip bi1n ho)c (! tr-n
t,ng Ru!n* Xh,ng php ny )t r! _c p %0ng )c bit cho trng h_p (! tr-n t,ng
Ru!n* t6ng c3! Ruy Cu-t C n1u tFt c$cc thnh ph"n c3! t-p %7 Ciu "u C c C-p th4
nh7ng thnh ph"n ch2nh c3! ching c? czng (t tr0c bi1n Ei v c? s& bi1n Ei C ,n va*
+4 v-y nh7ng thnh ph"n ch2nh khc c? s&bi1n Ei nhQ h,n l swch@! 2t th'ng tin h,n
nh7ng thnh ph"n 6tr0c gc, h!y t! hon ton c? th Co5i bQnh7ng thnh ph"n ny (
33

kh'ng $nh h6ng nhi#u ti k1t Ru$ cui czng* uy Cu-t ny cvn _c gyi C Ruy Cu-t
J!is:r lo* uy Cu-t chGgi7C5i nh7ng thnh ph"n ch2nh Cn h,n ho)c bng l v Co5i bQ
nh7ng thnh ph"n nhQ h,n l*
hgoi r! cvn (t sph,ng php khc nh:
Uzng gi$n = jcr::
U&! vo sthnh ph"n vi nh7ng trari<ng kh'ng cn bng k1t h_p vi nh7ng
gi$thuy1t th:o c'ng th@c ton hyc*
Xh,ng php chyn ( thnh ph"n ch2nh th:o \rosss+!Ci%!tory*
u! nh7ng phn t2ch b<n tr<n t! i 1n (t k1t Cu-n C tzy thuc vo nh7ng i
t_ng kh$o st khc nh!u khi %zng thu-t ton X\S ( %`n 1n vic c"n gi7 b!o nhi<u
thnh ph"n ch2nh cho th2ch h_p*
3.1.3. Cc buc thc hin ca thut ton
Buc 1:
j/ %0ng cc $nh khu'n ()t 7U" 7T"X trong 8t-p cc khu'n ()t huFn Cuyn9 vi
khu'n ()t ch[nh di'n tFt c$ $nh c? c\ng k[ch th]c*
Hnh ,.1<. ChOn 8h!Gn *Mt tron$ tD2 h!Qn +!'Ln.
Buc 2:
kiu %iIn (yi $nh Yi thnh v:ctor i

34

Buc 3:
T2nh v:ctor khu'n ()t trung b4nh th:o c'ng th@c:
Buc 4:
Tr> v:ctor khu'n ()t trung b4nh:
\0 th t! c?:
Buc 5:
T2nh (! tr-n hip ph,ng s!i 8covariance9 ):
\ sw c? k2ch thc h
o
xh
o
Trong ?: S sw c c? k2ch thc C h
o
xA
Buc 6:
T2nh cc eigenvector #i 8v:ctor ri<ng9 c3! (! tr-n vu'ng A4A
1
8\ c? k2ch thc
h
o
Mh
o
9*
A! tr-n ny c? k2ch thc Ru Cn kh'ng kh$ thi ph$i kh'n kh{o i ng
vvngK
Buc 6.1:
{t (! tr-n A4A
1
chi L (! tr-n ny chG c? k2ch thc C AMA*
Buc 6.2:
T2nh cc vector ring vi 8:ig:nv:ctors9 c3! (! tr-n vu'ng S*S
T
ny*
35

j!u khi D t2nh _c cc vector vi 8c? k2ch thc C AMl9, t! sw %I %ng suy r!
_c cc vector ring #i 8k2ch thc hoMl9 (ong (un c"n t4( th:o c'ng th@c:
89
\hi L chuBn h?! cc v:ctor ui 8
l =
i
#
9, ngh]! C:
i
i
i
#
#
# =
T! rit r! _c cc chi L s!u:
A! tr-n A4A
1
c? th c? 1n <
T
tra ri<ng 8(bi tra ri<ng sw @ng vi v' s
v:ctor ri<ng n? _c gyi C ^kh_ng gian ring `ng v]i tra ring nIo Gbc9*
A! tr-n A
1
4A c? th c? 1n / tra ri<ng*
/ tra ri<ng c3! (! tr-n A
1
4A 8k( vi cc v:ctor ri<ng t,ng @ng9, sw @ng
vi / tra ri<ng Cn nhFt c3! A4A
1
8ci ny Ru!n tryng b6i t! !ng i t4( cc
hng bi1n thi<n Ru!n tryng nhFt9*
Buc 6.3:
T2nh A v:ctor ri<ng ui tt nhFt c3! A4A
1
th:o c'ng th@c 89*
Buc 7:
\hG gi7 C5i 3 v:ctor ri<ng trong s / v:ctor n?i tr<n 8@ng vi 3 tra ri<ng Cn nhFt9,
tFt nhi<n 3 YY <T*
\? o cch Mc anh 3:
Cch 1:
jHp M1p th:o th@ t& %Dy gi$( %"n cc eigenval#e t4( _c*
Th:o %Ni s& bi1n thi<n c3! %Dy tr<n: khi kh'ng cvn bi1n thi<n 8ho)c MFp MG
bng kh'ng9 th4 Cic ? t! D chyn 3 3*
Cch 2:
36

\hyn 3 th:o c'ng th@c s!u:
3.1.4. Nhn dng khun m}t bng cc Eigenface
\ho l $nh khu'n ()t ch! bi1t C !i

8tFt nhi<n c.ng ph$i ging t-p (`u ch2nh


%in v c? czng k2ch thc9* \hi L: gi!i o5n nh-n %5ng ny ging ht gi!i o5n biu
%iIn $nh khu'n ()t trong t-p (`u* T! th&c hin C"n C_t cc bc s!u:
Buc 1:
\huBn h?! = :
Buc 2:
kiu %iIn thnh nh s!u:

=
*
*
*
*
t
o
l
1
3
1
1
1
#
#
#
#


Buc 3:
T4(
37

T@c t! t4( khu'n ()t th@ C trong t-p (`u c? kho$ng cch g"n nhFt vi khu'n ()t
c"n nh-n %5ng*
Buc 4:
h1u e
r
Y 1r 81r C (t ngng chFp nh-n _c no ?9: $nh khu'n ()t c"n Mc
anh 3 g"n vi $nh c3! ngi th@ C trong t-p (`u* Jhi ?, t! k1t Cu-n ? ch2nh C
khu'n ()t c3! ngi th@ C*
Ch :
T! c? th s/ %0ng khoDng cLch 2#clid t2nh e
r
* Tuy nhi<n, ngi t! ch@ng (4nh
_c rng, k1t Ru$ sw tt h,n n1u %zng kho$ng cch A!h!C!nobis:
3.1.5. ng dng d tm - DETECTION
Th-t r!, y kh'ng ing ngh]! C pht hin ( chG C Mc anh M:( c? ph$i C
$nh ()t ngi h!y kh'ng ( th'i*
Buc 1: =
Buc 2:
T2nh
Buc 3:
T2nh
38

Buc 4:
h1u :% T% 8(t ngng no ? chFp nh-n _c9:
T@c $nh c"n Mc anh c? kho$ng cch 3 g"n vi kh'ng gi!n khu'n ()t* Jhi ?,
t! k1t Cu-n ? ch2nh C $nh khu'n ()t ngi 8ch@ kh'ng ph$i $nh c$nh v-tK9*
\? (t ti Ciu 8sCi%: c3! Xr!%::p ku%%h!r!u9 # c-p 1n vic t2nh ngng nh
s!u:
c Z d ma$5"k effp5:pkffgh 5"k Z U"X"m
T@c C c bng kho$ng cch Cn nhFt gi7! h!i khu'n ()t bFt kq*
hgng ny sw _c %zng th!y cho c$ 1d v 1r
3.1.6. Nhuc dim ca Eigenface
Trong nh7ng trng h_p s!u, X\S gig:nV!c: sw nh-n %5ng s!i:
Jhc nh!u v# i#u kin nh sng*
Hnh ,.1F. C[n$ *Pt 8h!Gn *Mt dJKi *Jei ?iC! 8iLn s-n$ 8h-c nh#!.
Jhc nh!u v# iu b 8nh nghi<ng "u9*
\$( Mic 8ci to, h (ing, v*v*9*
3.2. Thut ton Fisherface
3.2.1. Fisherface l g?
39

Tish:rV!c: C cch biu %iIn h4nh $nh osU %5ng khu'n ()t bng cc v:ct, c, s6
thu _c khi p %0ng thu-t ton inear +Fisheris, -iscriminant Anal&sis tr<n t-p h4nh
$nh* nUS C (t thu-t ton c.ng ging nh X\S C gi$( s chi#u c3! b@c $nh Mung
nhng nh7ng th'ng tin c3! b@c $nh kh'ng gi$( Mung ch2nh v4 th1 sw giip ch,ng tr4nh
M/ CL nh!nh h,n* Pi( Ru!n tryng c3! nUS C n? phn Cp cc i t_ng r! chi1u vo
nh7ng chi#u khc nh!u ( X\S kh'ng C( _c
;4nh t*p* j& khc nh!u gi7! X\S v nUS
hh4n h4nh t*p, t! thFy _c s& u vi<t c3! thu-t ton nUS so vi X\S* X\S n?
chyn ph,ng chi1u nhng cc i t_ng ch=ng C<n nh!u cvn nUS phn tch t>ng i
t_ng* Jhi vic phn tng i t_ng r! sw giip vic nh-n %5ng t>ng i t_ng sw ch2nh
Mc h,n*
3.2.2. Phn tch cc di tung trong LDA
\ho ` C v:ctor c3! (`u
`f g`
1
h `
(
hi`
c
jk
`
i
fg6
1
h6
(
hi 6
8
jk
+:ctor c3! cc i t_ng `
i
C :
40

+:ctor trung b4nh c3! c$ (`u C:
A! tr-n nh M5 trong Cp:
A! tr-n tn M5 gi7! cc Cp:
ky gi ching t! sw t4( nh7ng ph,ng chi1u ti u c3! (`u :
T4( :ig:nv!Cu: c3! W t> cc W
i
j
r
sl
j
k
r
i
r
i

j
r
sl
j
k
r
i
r
i
Jhi ? tr6 C5i thu-t ton c3! X\S %zng :ig:nV!c:s t4( cc :ig:nv:ctors 8r
i
9
c3! j
r
sl
j
k
+ cc ct c3! r ch2nh C r
i
* Abi h4nh $
5
>
i
chi1u C<n kh'ng gi!n p
i
r
T
8M

(9 *
3.2.3. Cch thc hot dng ca Fisherface
41

=
=
k
5
5 i
$
k
l
l

=
=
c
i
i
c
l
l


Pi vi ph,ng php ti1p c-n Tish:rV!c:, cc :ig:nV!c: t2nh ton 6 tr<n D _c
s/ %0ng nh C (t bc "u ti<n, nhng chG c? <c Z RQ 0 P Z Wj v:ctor ri<ng _c gi7
C5i cho nhu c"u gi$( chi#u* nu L rng trong trng h_p ny, ch2n Cp hyc _c b!o g=(
trong t-p huFn Cuyn* Uo ?, c? c 0 U Z P 0 U Z k Vish:rV!c: t=n t5i:
Hnh ,.<. T-* &isher&#ce cl ?J\c tm tD2 h!Qn +!'Ln.
T,ng t& nh tr<n, cc khu'n ()t trong t-p huFn Cuyn _c chi1u C<n cc
Vish:rV!c: v cc tryng s _c cFt gi7*
3.3. nh gi thut ton
j!u khi pro%iling v th/ nghi( cc thu-t ton nh-n %5ng khu'n ()t trong
A!tn!b, ching t! trin kh!i cc thu-t ton tr<n in tho5i Sn%roi%* Pi vi ph"n %in
khu'n ()t, t! s/ %0ng (y pht hin khu'n ()t c? sxn trong cc SXY th!y v4 th&c hin
cc thu-t ton nh-n %in khu'n ()t* \c ti Ciu th&c s& C ngHn gyn n<n kh'ng bi1t chHc
chHn tr<n nh7ng thu-t ton n? _c %&!* h? _c s/ %0ng cHt (t khung ()t trong
h4nh $nh ch0p bng (y $nh in tho5i*
J1t Ru$ tr$ v# chi! thnh bn trng h_p:
T chi sai: n1u ()t c? Ci<n Ru!n vi khu'n ()t ch2nh Mc, nhng kho$ng
cch Cn h,n ngng*
Chp nhn sai: n1u ()t c? Ci<n Ru!n vi ()t s!i, nhng kho$ng cch nhQ
h,n ngng*
42

T chi dng: n1u ()t c? Ci<n Ru!n vi ()t s!i v kho$ng cch Cn h,n
ngng*
Chp nhn dng: n1u ()t c? Ci<n Ru!n vi ()t ch2nh Mc v kho$ng cch
nhQ h,n ngng*
kng cch i#u chGnh gi tra ngng, s C_ng h4nh $nh r,i vo bn Co5i sw th!y
Ei* +ic bE sung cc t C t> chi ch2nh Mc v chFp nh-n ing _c coi nh tEng s t
C ch2nh Mc* +i thu-t ton gig:nV!c:, t! c? th 5t _c (t t C ch2nh Mc tEng cng
kho$ng u,t, trong khi vi Tish:rV!c:, t C ch2nh Mc C<n ti kho$ng u,d*
Xht trin cc thu-t ton nh-n %5ng khu'n ()t tr<n n#n t$ng Sn%roi%* hh ching
t! D thFy, Tish:rV!c: c? hiu Ru$ c!o h,n gig:nV!c:* ;,n n7!, t! chG c? th th&c hin
_c Tish:rV!c: trong Sn%roi%* JnT v Tish:r Ync chi1u _c t2nh ton trong A!tC!b
_c c anh thi1t C-p v Cu tr7 tr<n Cu tr7 b<n ngoi Uroi%*
\ui czng, thu-t ton c? th Mc anh (t ngi 8nh-n %in khu'n ()t v c'ng
nh-n9 vi (t gi!o %in ngi %zng ,n gi$n (' t$ trong h4nh*
43

CHONG 4: TH VIJN OPENCV V THIET KE
HJ THNG
4.1. Thu vin OpenCV
[p:n\+ C (t th vin (6 v# C]nh v&c \o(put:r +ision _c vi1t tr<n n#n t$ng
\e\ff* U& n b!n "u _c pht trin b6i Ynt:C, s!u ? _c hb tr_ b6i riCCoW m!r!g:
8phvng C!b nghi<n c@u robotic, chuy<n pht trin v# ph"n (#( v ph"n c@ng (D ngu=n
(6 cho cc @ng %0ng t& ng9* Th vin ny b!o g=( nhi#u h( ch@c nOng, t-p trung
ch3 y1u vo Ru tr4nh M/ CL $nh thi gi!n th&c*
+4 C th vin (D ngu=n (6, n<n hin n!y, [p:n\+ _c pht trin tr<n nhi#u n#n
t$ng khc nh!u, b!o g=( n#n t$ng Sn%roi%* Xro:ct sw s/ %0ng th vin ny pht trin
h thng nh-n %in khu'n ()t* Tuy nhi<n, ! [p:n\+ vo n#n t$ng Sn%roi% c"n
th'ng Ru! c chl native vi b Sn%roi% hUJ* \, ch1 n!tiv: cho ph{p @ng %0ng Sn%roi%
c? th th&c thi cc co%: v th vin t2ch h_p _c vi1t bng \e\ff*
\o(put:r +ision c.ng nh M/ CL $nh C nh7ng C]nh v&c v' czng rng Cn v ph@c
t5p* +4 v-y, = n chG ti1n hnh nghi<n c@u v p %0ng tr&c ti1p nh7ng k1t Ru$ c? _c
vi nh7ng h( ch@c nOng c.ng nh th vin [p:n\+ cung cFp sxn th&c hin (0c
2ch c3! pro:ct, ch@ kh'ng i Ru su vo chi ti1t b<n trong c3! th vin ny*
4.1.1. Nhn din khun m}t
u tr4nh nh-n %in khu'n ()t c, b$n _c th&c hin Ru! cc gi!i o5n:
Buc 1 Xc d|nh khun m}t (Face Detection): C Ru tr4nh Mc anh vzng $nh
c3! khu'n ()t trong h4nh $nh* u tr4nh ny chG Mc anh u C khu'n ()t c3!
(t con ngi*
Buc 2 Tin xu l hnh anh khun m}t (Face Preprocessing): C Ru tr4nh
tinh chGnh h4nh $nh khu'n ()t thu _c v# %5ng chuBn chung c3! khu'n ()t
ngi 8c? cc )c t2nh ging so vi cc khu'n ()t khc9
44

Buc 3 Thu thp v hc d liu khun m}t: C Ru tr4nh Cu gi7 cc )c
t2nh ri<ng c3! cc khu'n ()t D _c M/ CL, t> ? hyc cch nh-n %in nh7ng
khu'n ()t ny*
Buc 4 Nhn din khun m}t: C Ru tr4nh ki( tr! g,ng ()t no trong t-p
h_p cc khu'n ()t D _c hyc khp vi h4nh $nh g,ng ()t thu _c trong
c!(:r!*
\c k thu-t Mc anh khu'n ()t hin n!y c? k1t Ru$ kh tin c-y ng!y c$ trong
i#u kin th&c t1 vi (@c sng, hng nh sng, b?ng E, hng khu'n ()t v s&
biu c$( tr<n khu'n ()t th!y Ei (5nh, trong khi cc k thu-t nh-n %in C5i ch! p
@ng _c cc y<u c"u ny n<n k1t Ru$ thu _c v`n ch! c? tin c-y c!o* Uo ?, t!
th&c hin Ru tr4nh ti#n M/ CL khu'n ()t 6 bc o nhH( ti vic h5n ch1 ti ! nh7ng vFn
# tr<n Ru! vic chuBn h?! cc h4nh $nh khu'n ()t v# chung (t sng, t,ng ph$n
v )c t2nh khu'n ()t 8v2 %0 nh (Ht v (.i 6 (t va tr2 nhFt anh tr<n $nh9* u tr4nh
ti#n M/ CL tt sw C( tOng ng k tin c-y cho ton h thng nh-n %in*
4.1.2. Xc d|nh khun m}t
A. L thuyt
u tr4nh Mc anh khu'n ()t trong th vin [p:n\+ C s/ %0ng b phn Co5i th:o
b-c %5ng ;!!r 8?aar:!ased cascade classi%ier, gyi tHt C ;!!r \C!ssiVi:r9*
Ch : ?aar:!ased cascade classi%ier _c pht trin b6i X!uC +ioC! v Aich!:C
^on:s vo nO( oddl, s!u ? _c c$i ti1n vo nO( oddo b6i ~!in:r ni:nh!rt v ^och:n
A!y%t*
+ic )t t<n classi%ier ny %&! tr<n vic CFy )c t2nh c3! s?ng ;!!r 8?aar wavelet9
bng cch th<( ho)c bt cc vzng $nh h4nh ch7 nh-t trc khi M/ CL ngng k1t Ru$*
45

Hnh 0.1N. nEn$ sln$ H##r.
t6ng c, b$n c3! b nh-n %in khu'n ()t %&! th:o ;!!r 8?aar:!ased %ace
detector9 C n1u t! nh4n tr&c %in vo (t khu'n ()t no ?, vzng (Ht sw ti h,n so vi
vzng trn v c(, vzng (ing sw ti h,n vzng trn, v*v** Th'ng thng, ph,ng php ny
sw th&c hin kho$ng od bc so snh nh v-y Mc anh h4nh $nh ? c? ph$i C khu'n
()t h!y kh'ng* ;,n n7!, vic ki( tr! ph$i _c th&c hin t5i (bi va tr2 c? th tr<n $nh
vi (bi k2ch thc c? th c3! khu'n ()t* +4 v-y, th&c t1 c? kho$ng lddd ph{p ki( tr!
_c th&c hin tr<n (bi $nh*
Th>! h6ng v c$i ti1n t> ?aar:!ased %ace detector, A6:!ased %ace detector,
_c pht trin b6i Shon:n, ;!Ci% v Xi:tikin:n t> nO( oddp, nhng p %0ng k thu-t
so snh biu = (-t piM:C trong vic M/ CL $nh n<n cho kh$ nOng Mc anh nh!nh h,n
;!!rsb!s:% nhi#u C"n* Thu-t ton ny c.ng _c t2ch h_p trong th vin [p:n\+*
\$ ?aar:!ased %ace detector v A6:!ased %ace detector #u _c h4nh thnh t>
vic huFn Cuyn nhi#u c, s6 %7 Ciu v# khu'n ()t* TFt c$ th'ng tin #u _c Cu vo t-p
tin anh %5ng An* Th vin [p:n\+ c.ng cung cFp b ;!!r %:t:ctor vi cc %7 Ciu
khu'n ()t _c huFn Cuyn sxn*
46

4.2. Thit k h thng
4.2.1. OpenCV Manager
P cc @ng %0ng s/ %0ng th vin [p:n\+ c? th ch5y tr<n cc thi1t ba Sn%roi%,
t! c"n s/ %0ng 8pen). /anager nh C (t service Ru$n CL th vin [p:n\+* h?
cho ph{p chi! s| cc th vin [p:n\+ ng gi7! cc @ng %0ng trong thi1t ba*
Hnh 0.(T. o!' trnh *Pt #22 sa d/n$ 12enCV chE' trXn thit Ip.
uy tr4nh th&c thi (t @ng %0ng s/ %0ng [p:n\+:
Jh6i ng, ki( tr! v y<u c"u ci )t [p:n\+ A!n!g:r*
Jhi (!n!g:r ho5t ng, ki( tr! v y<u c"u ci )t th vin [p:n\+ cho
thi1t ba*
\h5y @ng %0ng*
47

Hnh 0.(1. qor8&+ow c;# 12enCV "#n#$er.
+ic th&c hin ki( tr! v ci )t th vin [p:n\+ _c th&c hin b6i a!stract
class Aaseoader)all!ack, class 8pen).oader v class As&ncService?elper:
Abstract class BaseLoaderCallback
public abstract class k!s:no!%:r\!CCb!ck implements no!%:r\!CCb!ckYnt:rV!c:
***
public void onA!n!g:r\onn:ct:%8int st!tus9
switch 8st!tus9

e Jh6i t5o (t inst!nt [p:n\+ thnh c'ng e
case no!%:r\!CCb!ckYnt:rV!c:*S=))2SS:

e ng %0ng ph$i ov:rri%: ph,ng th@c ny ti1p t0c Ru tr4nh kh6i t5o e
jyst:(*loadi!rar&8Cibr!ryn::%toCo!%9Z
breakZ
e [p:n\+ Co!%:r kh'ng th ch5y moogC: XC!y A!rk:t* e
case no!%:r\!CCb!ckYnt:rV!c:*/AF321m2FF8F:
breakZ
e Ti1n tr4nh ci )t g?i D ba hu bQ* e
case no!%:r\!CCb!ckYnt:rV!c:*7<S1Am)A<)22-:
breakZ
48

e ng %0ng kh'ng t,ng th2ch vi phi<n b$n [p:n\+ A!n!g:r ny*
\? Cw c"n ph$i c-p nh-t C<n phi<n b$n (i h,n* e
case no!%:r\!CCb!ckYnt:rV!c:*7<)8/6A17A2m/A<AG2Fm.2FS78<:
*** breakZ
e \c tr5ng thi khc, v2 %0: YhYTTSYngU* e
default:
breakZ


Class OpenCVLoader
public class [p:n\+no!%:r
***
e
Th vin [p:n\+ phi<n b$n o*u*u*
e
public static final jtring 862<).m.2FS78<mTmRmR o*u*uZ
***
public static boolean initSsync8jtring +:rsion, \ont:Mt Spp\ont:Mt,
no!%:r\!CCb!ckYnt:rV!c: \!CCb!ck9

return Ssyncj:rvic:;:Cp:r*init8pen).8+:rsion, Spp\ont:Mt, \!CCb!ck9Z

Class AsyncServiceHelper
class Ssyncj:rvic:;:Cp:r

public static boolean init[p:n\+8jtring +:rsion, final \ont:Mt Spp\ont:Mt,


final no!%:r\!CCb!ckYnt:rV!c: \!CCb!ck9

Ssyncj:rvic:;:Cp:r h:Cp:r new Ssyncj:rvic:;:Cp:r8+:rsion, Spp\ont:Mt, \!CCb!ck9Z
if 8Spp\ont:Mt*bin%j:rvic:8new Ynt:nt8org*op:ncv*:ngin:*kYhU9,
h:Cp:r*(j:rvic:\onn:ction, \ont:Mt*A7<-mA=18m)F2A1299

return trueZ
49


else

Spp\ont:Mt*unbin%j:rvic:8h:Cp:r*(j:rvic:\onn:ction9Z
7nstallService8Spp\ont:Mt, \!CCb!ck9Z
return falseZ


4.2.2. Su dng camera
Th vin [p:n\+ s/ %0ng kiu %7 Ciu ri<ng /at anh ngh]! %7 Ciu h4nh $nh
cho vic M/ CL* At i t_ng /at sw ch@! cc )c t2nh c3! (t (! tr-n i( $nh _c
chi1u t> $nh gc s!ng* Uo ?, [p:n\+ cung cFp (t cC!ss )ameraAridge.iewAase C(
c"u ni c? th v>! s/ %0ng c!(:r!, v>! phn gi$i h4nh $nh thu _c v# kiu %7 Ciu
A!t* P=ng thi, n? c.ng C cC!ss con c3! cC!ss c, b$n S#r%ace.iew*
public abstract class \!(:r!kri%g:+i:Wk!s: extends jurV!c:+i:W implements
jurV!c:;oC%:r*\!CCb!ck
private static final int S18662- dZ
private static final int S1AF12- lZ
private int (jt!t: S18662-Z
private boolean (jurV!c:gMistZ
protected boolean (gn!bC:%Z
***
private void ch:ck\urr:ntjt!t:89
int t!rg:tjt!t:Z
if 8(gn!bC:% (jurV!c:gMist g:t+isibiCity89 .7S7A29
t!rg:tjt!t: S1AF12-Z
else
t!rg:tjt!t: S18662-Z

if 8t!rg:tjt!t: K (jt!t:9
e Xht hin tr5ng thi D th!y Ei* \"n thot tr5ng thi hin t5i v chuyn s!ng tr5ng thi k1 ti1p e
proc:ssgMitjt!t:8(jt!t:9Z
(jt!t: t!rg:tjt!t:Z
50

proc:ssgnt:rjt!t:8(jt!t:9Z


public void :n!bC:+i:W89
synchronied8(jync[b:ct9
(gn!bC:% trueZ
ch:ck\urr:ntjt!t:89Z


***

At .iew cho c!(:r! g=( o tr5ng thi S1AF12- v S18662-* P k2ch ho5t
c!(:r!, t! th&c thi h( ena!le.iew+,* ;( check)#rrentState+, sw ki( tr! tr5ng thi
c!(:r!, n1u c? s& th!y Ei tr5ng thi, h( sw k1t thic tr5ng thi hin t5i v th&c thi tr5ng
thi ti1p th:o*
private void proc:ssgnt:rjt!t:8int st!t:9
switch8st!t:9
case S1AF12-:
ongnt:rjt!rt:%jt!t:89Z
if 8(nist:n:r K null9
(nist:n:r*on\!(:r!+i:Wjt!rt:%8(Tr!(:ri%th, (Tr!(:;:ight9Z

breakZ
case S18662-:
ongnt:rjtopp:%jt!t:89Z
if 8(nist:n:r K null9
(nist:n:r*on\!(:r!+i:Wjtopp:%89Z

breakZ
Z

private void ongnt:rjt!rt:%jt!t:89
e J1t ni c!(:r! e
if 8Kconn:ct\!(:r!8g:tri%th89, g:t;:ight8999
51

ee Thot n1u thi1t ba kh'ng hb tr_ c!(:r!
***


+i tr5ng thi mState C S1AF12-, c!(:r! _c k1t ni bng h(
on2nterStartedState+,, =ng thi sw k2ch ho5t (t camera preview tr<n thi1t ba th'ng Ru!
h( on)amera.iewStarted+,4
Tuy nhi<n, s/ %0ng %7 Ciu h4nh $nh c3! c!(:r!, [p:n\+ c.ng anh ngh]! cc
inter%ace cho class )ameraAridge.iewAase nh s!u:
public interface \v\!(:r!+i:Wnist:n:ro
e \"n ph$i ov:rri%: ph,ng th@c ny trc khi s/ %0ng e
public void on\!(:r!+i:Wjt!rt:%8int Wi%th, int h:ight9Z
public void on\!(:r!+i:Wjtopp:%89Z
public A!t on\!(:r!Tr!(:8\v\!(:r!+i:WTr!(: inputTr!(:9Z
Z
public interface \v\!(:r!+i:WTr!(:
e Xh,ng th@c ny tr$ v# khung h4nh 6 %5ng ~mkS e
public A!t rgb!89Z
e Xh,ng th@c ny tr$ v# khung h4nh 6 %5ng trHng :n e
public A!t gr!y89Z
Z
!ctivity ch2nh, t! ti1n hnh override cc ph,ng th@c v>! s/ %0ng %7 Ciu
$nh th&c cho pr:vi:W, =ng thi s/ %0ng %7 Ciu $nh gr!ysc!C: M/ CL*
public void on\!(:r!+i:Wjt!rt:%8int Wi%th, int h:ight9
(mr!y new A!t89Z
(~gb! new A!t89Z

public void on\!(:r!+i:Wjtopp:%89
(mr!y*r:C:!s:89Z
(~gb!*r:C:!s:89Z

public A!t on\!(:r!Tr!(:8\v\!(:r!+i:WTr!(: inputTr!(:9
52

(~gb! inputTr!(:*rgb!89Z
(mr!y inputTr!(:*gr!y89Z
***
return (~gb!Z

4.2.3. Xc d|nh khun m}t
[p:n\+ anh ngh]! (t cC!ss )ascade)lassi%ier yc cc )lassi%ier, t> ? ti1n
hnh M/ CL th:o cc th'ng s trong ? v Mc anh vzng $nh ch@! khu'n ()t th'ng Ru!
h( detect/#ltiScale+,* +ic Mc anh khu'n ()t hon ton %&! vo cc h( n!tiv:*
public class \!sc!%:\C!ssiVi:r
***
public \!sc!%:\C!ssiVi:r8jtring ViC:n!(:9

n!tiv:[b )ascade)lassi%iermU8ViC:n!(:9Z
returnZ

***
public void %:t:ctAuCtijc!C:8A!t i(!g:, A!t[V~:ct ob:cts, double sc!C:T!ctor,
int (inh:ighbors, int VC!gs,
ji: (inji:, ji: (!Mji:9

A!t ob:cts(!t ob:ctsZ
detect/#ltiScalemS8n!tiv:[b, i(!g:*n!tiv:[b, ob:cts(!t*n!tiv:[b, sc!C:T!ctor,
(inh:ighbors, VC!gs, (inji:*Wi%th, (inji:*h:ight,
(!Mji:*Wi%th, (!Mji:*h:ight9Z
returnZ

***
private static native long \!sc!%:\C!ssiVi:rl8jtring ViC:n!(:9Z

private static native void %:t:ctAuCtijc!C:d
53

8
long n!tiv:[b, long i(!g:n!tiv:[b,
long ob:cts(!tn!tiv:[b,
double sc!C:T!ctor, int (inh:ighbors,
int VC!gs, double (inji:Wi%th,
double (inji:h:ight,
double (!Mji:Wi%th,
double (!Mji:h:ight9Z

T> anh ngh]! cC!ss tr<n, t! kh!i bo h( ch@c nOng 6 !ctivity ch2nh nh s!u:
public A!t on\!(:r!Tr!(:8\v\!(:r!+i:WTr!(: inputTr!(:9
(~gb! inputTr!(:*rgb!89Z
(mr!y inputTr!(:*gr!y89Z
if 8(SbsoCut:T!c:ji: d9
int h:ight (mr!y*roWs89Z
if 8A!th*ro#nd8h:ight (~:C!tiv:T!c:ji:9 d9
(SbsoCut:T!c:ji: A!th*ro#nd8h:ight (~:C!tiv:T!c:ji:9Z


A!t[V~:ct V!c:s new A!t[V~:ct89Z
if 8(U:t:ctor K null9
(U:t:ctor*%:t:ctAuCtijc!C:8(mr!y, V!c:s, l*l, o, o,
new ji:8(SbsoCut:T!c:ji:, (SbsoCut:T!c:ji:9, new ji:899Z
~:ct V!c:sSrr!y V!c:s*toSrr!y89Z
for 8int i dZ i V!c:sSrr!y*C:ngthZ iff9
\or:*rectangle8(~gb!, V!c:sSrr!yi*tC89, V!c:sSrr!yi*br89,
FA)2mF2)1m)88F, t9Z
return (~gb!Z

h( tr<n, v4 vic Mc anh khu'n ()t _c ti1n hnh th:o thi gi!n th&c n<n
kh'ng trnh khQi vic k2ch thc khu'n ()t MuFt hin trong c!(:r! th!y Ei to h!y nhQ
%o kho$ng cch M! h!y g"n so vi c!(:r!* +4 v-y, t! c"n Mc anh (t tG C nhFt anh c3!
54

khu'n ()t i vi h4nh $nh ch2nh* TG C ny _c th hin th'ng Ru! bi1n
mFelativeFaceSine vi gi tra d*oV 8od9, t> ? t! Mc anh ch2nh Mc _c k2ch thc
vzng khu'n ()t th:o bi1n mA!sol#teFaceSine* \ui czng, vzng khu'n ()t Mc anh
_c sw _c hin tha b6i h( )ore4rectangle+444,*
55

CHONG 5: GII THIJU CHONG TRINH
5.1. Giao din chuong trnh
Main activity
Hnh 4.((. "#in Activit'.
j!u khi nhFn T!k: Xictur:, ch,ng tr4nh sw kh6i ng )apt#re Activit&:
56

Hnh 4.(,. C#2t!re Activit'.
u!y %7 Ciu h4nh $nh t> c!(:r!:
Hnh 4.(0. Chrn Hnh 8h!Gn *Mt s#! 8hi ch/2.
nh _c tr$ v# /ain Activit&, t! ti1n hnh ghi %7 Ciu khu'n ()t vo c, s6 %7
Ciu bng Cnh S%% h!(:* h1u %7 Ciu khu'n ()t D c? trong c, s6 %7 Ciu, t! c? th
nh-n %5ng khu'n ()t bng nit U:t:ct T!c:, khi ?, t<n khu'n ()t sw _c tr$ v#*
hh-p %7 Ciu khu'n ()t ho)c nh-n %5ng n1u D c?*
57

Hnh 4.(4. %hD2 ds +iL! 8h!Gn *Mt *Ki.
h1u khu'n ()t D c? trong c, s6 %7 Ciu, khi nhFn U:t:ct T!c:, ch,ng
tr4nh sw tr$ v# t<n c3! khu'n ()t*
Hnh 4.(7. Kh!Gn *Mt ?t cl tron$ C=nu.
58

5.2. Nguyn l hot dng
Hnh 4.(<. %$!'Xn +O hoEt ?Pn$.
5.3. Main Activity
mi!o %in ch2nh c3! ch,ng tr4nh* Ti1n hnh c-p nh-tetruy MuFt %7 Ciu khu'n ()t
t> \jUn, hin tha k1t Ru$*
Hnh 4.(F. "#in Activit'.
59
5ain 6ctivity
Camera
6ctivity
*review
6ctivity
5678 6C97V79:
Captur
e
Camera
6ct#
*review
6ct#
proceed to take
return a take
Crop Captured
;
:es
8o
/696<6S=
6dd -ecogni
4e
crop
and
proces
s
face
retur
n
face
inde>

5.4. Camera Activity
j/ %0ng \!(:r! SXY, t& ng ti1n hnh CFy n{t khi c? khu'n ()t*
Hnh 4.(N. C#*er# Activit'.
5.5. Preview Activity
Xr:vi:W $nh trc khi ti1n hnh nh-n %inec-p nh-t khu'n ()t*
Hnh 4.,T. Preview Activit'.
5.6. Cu trc co s d liu
j!u khi D thu _c v M/ CL h4nh $nh khu'n ()t, %7 Ciu khu'n ()t sw _c Cu
th:o cFu tric:
YrootOYnamemaO@S45pg
YrootO YnamemaO@U45pg
YrootO YnamemaO@T45pg
YrootOY namem!O@S45pg
YrootOYnamem!O@U45pg
X
U&! vo t<n khu'n ()t ( ngi %zng nh-p, %7 Ciu sw _c c-p nh-t bE sung
ti1p th:o ?* +i (bi t<n ngi ri<ng bit, vic cng c? nhi#u %7 Ciu $nh sw giip t C
60
C65=-6 6C97V79:
5ain
6ctivit
y
*revie
w
6ctivit
y
*-=V7=? 6C97V79:
*revie
w
6ctivit
y
-ecaptu
re
@
A
5ain
6ctivit
y

nh-n %in thnh c'ng c!o h,n* +ic gi!o ti1p gi7! %7 Ciu h4nh $nh khu'n ()t c3! \jUn
vi ch,ng tr4nh _c th&c hin b6i kiu %7 Ciu ?ash/ap th'ng Ru! ViC: \j+*tMt*
T,ng @ng vi (bi t<n khu'n ()t 8val#e9 C (t in%:M ri<ng bit 8ke&9*
\Fu tric ViC: _c Cu th:o anh %5ng nh s!u:
YrootOYnamemaO@S45pghS
YrootOYnamemaO@U45pghS
YrootOYnamemaO@T45pghS
YrootOYnamem!O@S45pghU
YrootOYnamem!O@U45pghU
YrootOYnamemcO@S45pghT
YrootOYnamemaO@W45pghS
X
5.7. Giao din Camera
\h,ng tr4nh s/ %0ng \!(:r! SXY ()c anh c3! Sn%roi%* Th!o tc ch0p $nh _c
th&c hin vi bi1n %7 Ciu )amera 8anh ngh]! trong g?i android4hardware4)amera9 vi
cc 6ict#re)all!ack*
camera4take6ict#re+sh#tter)all!ack" pict#re)all!ack" pict#re)all!ack,
\c c!CCb!ck ho5t ng nh nh7ng thr:!%*
5.8. Giao din Preview
P thu-n tin cho vic preview, t5i gi!o %in ny cung cFp t2nh nOng pht hin
khu'n ()t cho $nh t]nh* Uo hin t5i, @ng %0ng cvn h5n ch1, n<n vic nh-n %in ch! th
ti1n hnh song song ( %&! vo h4nh $nh kh#_n mot l]n nhpt trong b c0c $nh*
5.9. Nhn din khun m}t
+ic th&c hin huFn Cuyn c.ng nh phQng on %7 Ciu khu'n ()t _c th&c hin
b6i cc (o%uC: n!tiv: s/ %0ng [p:n \+*
6trYFaceFecogninerO model Z create2igenFaceFecogniner+,h
model :O train+images" la!els,h
model :O predict+%ace" prediction,h
61

+i cc th!( s images v la!els _c truy MuFt t> ViC: %7 Ciu *)S.* \ui czng,
h( predict+, sw ti1n hnh nh-n %in khu'n ()t ch0p _c 6 bi1n th!( s V!c: vi \jUn
%7 Ciu $nh v tr$ v# k1t Ru$ C chG (0c c3! t<n khu'n ()t ? th'ng Ru! th!( s
prediction* \c (o%uC: n!tiv: _c anh ngh]! trong (t ViC: 4cpp v _c Ruy anh 6
ViC: Android4mk nh s!u:
incl#de q+)2AFm.AFS,
incl#de X@8pen).i!rar&@sdk@native@5ni@8pen).4mk
8)Am/8-=2 :Z Yde%inemli!rar&mnameO
8)AmSF)mF72S :Z Ymod#lesmnative4cppO
X
incl#de q+A=7-mS?AF2-m7AFAFV,
Trong ch,ng tr4nh ch2nh, (o%uC: n!tiv: _c n5p:
S&stem4loadi!rar&+^Yde%inemli!rar&mnameOc,h
gi!i o5n cui c3! Ru tr4nh nh-n %in, t! Mc anh tG C trzng khp c3! $nh !ng
M{t vi %7 Ciu $nh trong \jUn bng cch t4( s!i khc c3! ching* Abi $nh vi kiu
%7 Ciu /at #u anh ngh]! gi tra c3! (bi i( $nh th:o th!ng gi tra t> d occ* Uo v-y,
t4( s!i khc, t! ti1n hnh tr> gi tra c3! h!i (! tr-n $nh cho nh!u:
errorT Z )ore4norm+/atA" /atA" )ore4<8F/mT,h
similarit& Z errorT@+do#!le,+A4rows+,9A4cols+,,h
P s!i khc 8d*d l*d9 cng Cn, t C trzng khp cng thFp* P Mc anh t C
trzng khp t! c?:
con%idenceFatio Z U4S 0 similarit&h
U&! vo th&c nghi( tr<n nhi#u %7 Ciu $nh khc nh!u, t C ny c? gi tra n(
trong kho$ng t> d*d d*c* Uo v-y t C trzng khp sw C:
matchmrate Z con%idenceFatio9+USS@S4PQ,h
62

5.10. Cc hn ch v hung pht trin trong tuong lai
Cc hn ch ca chuong trnh:
Xro:ct s/ %0ng cc th vin v SXY sxn c? nh th vin (6 [p:n \+*
\vn h5n ch1 6 Ru tr4nh ti#n M/ CL khu'n ()t %`n 1n nhiIu $nh c!o 8cc pi$el
trash9, %o ? Ru tr4nh nh-n %in ch! th&c s& hon thin 8chG %7 Ciu khu'n ()t9*
\h! c? t2nh t2nh nOng b$o (-t*
Hung pht trin trong tuong lai:
j/ %0ng @ng %0ng nh-n %5ng khu'n ()t cho vic b$o (-t, (6 kh?! tr<n in
tho5i %i ng*
j/ %0ng @ng %0ng Mc anh ing sinh vi<n vi ph5( khi c? h4nh $nh v c, s6 %7
Ciu $nh c3! sinh vi<n* Xht trin thnh @ng %0ng nh-n %5ng sinh vi<n trong nh
trng* \? th pht trin v (6 rng r! trong cc tE ch@c MD hi khc*
+ic nh-n %5ng khu'n ()t cho vic My %&ng cc kh?! th'ng (inh, chG (6 khi
ing khu'n ()t*
\!o h,n C @ng %0ng nh-n %5ng c? th t4( k2(, pht hin nh7ng ti ph5( ba truy
nD, t4( ki1( ngi thn ba thFt C5c, v*v**
63

KET LUAN
P= n ny ! r! _c tEng Ru!n v# h i#u hnh Sn%roi%* Py C n#n t$ng
cho nh7ng !i (i bHt "u C-p tr4nh vi Sn%roi%* P= n D 5t _c nh7ng (0c ti<u c"n
t4( hiu My %&ng ch,ng tr4nh @ng %0ng Sn%roi% C Mc anh nh-n %in thnh c'ng
khu'n ()t* Trc khi My %&ng ch,ng tr4nh @ng %0ng, nh?( D tr4nh by v# cc thnh
ph"n t5o n<n (t @ng %0ng cho Sn%roi%, Ru tr4nh (t @ng %0ng _c th&c thi nh th1
no, cc thnh ph"n trong (t %& n Sn%roi%, cch porting th vin [p:n\+, thu-t ton
gig:nV!c: v thu-t ton Tish:rV!c: _c s/ %0ng trong th vin [p:n\+* A'i trng c"n
My %&ng v th&c thi cc @ng %0ng cho Sn%roi% C cc ng'n ng7 C-p tr4nh ^!v!, \e\f
f* hgoi r!, Sn%roi% %&! tr<n n#n t$ng ninuM n<n ('i trng tt vi1t cc @ng %0ng C
cc h i#u hnh nhn ninuM nh buntu* Tuy nhi<n, t! c.ng c? th vi1t tr<n rin%oWs
vi i#u kin %zng 1n swing %zng cc Cnh c3! ninuM*
ko co c.ng D tr4nh by v# Sn%roi% jUJ v Sn%roi% hUJ, C cc c'ng c0 hb
tr_ (5nh cho pht trin cc @ng %0ng Sn%roi%* hh?( c.ng ! r! _c cc Ruy tr4nh C(
(t %& n ph"n (#( vi cc c'ng c0 ny* At v2 %0 ,n gi$n t> ? hiu _c Ruy
tr4nh C( (t %& n v ch,ng tr4nh _c th&c thi nh th1 no tr<n Sn%roi%, t> ?, c?
th pht trin th<( nhi#u @ng %0ng hFp %`n khc cho Sn%roi%*
T?( C5i, @ng %0ng ( nh?( My %&ng D nh-n %5ng v pht hin thnh c'ng
khu'n ()t tr<n in tho5i Sn%roi%* ng %0ng ch5y En anh v cho k1t Ru$ nh-n %in s!u
o t giy* Tuy nhi<n, nh?( ch! C( _c vFn # pht trin @ng %0ng C<n %zng cho
vic kho (y, n<n # ti sw %>ng C5i 6 vic Mc anh v nh-n %5ng ch2nh Mc khu'n ()t
v tr$ v# ph"n trO( ch2nh Mc*
64

TI LIJU THAM KHAO
l http:eeWWW*V!c:sr:c*orgeint:r:stingsp!p:rs
ohttp:eesibgr!pi*si%*inp:*brecoCesi%*inp:*bresibgr!pideodded*l*dt*lle%oce(!
i!s\oCorY(!g:gn*p%V
t Sn%roi%TA S Xrogr!((:rs mui%e ;4F4 -i/arnio" XuCish:r: Acmr!Ws;iCC
u ;!rv:y A* U:it:C, X!uC ^*U:it:C, ;ava ?ow to 6rogram +Rth 2dition,"
XubCish:r:
c ^!(:s jt::C: h:Cson To" 1he Android -eveloperis )ook!ook A#ilding
Applications with the Android S-3" XubCish:r: S%% isonsr:s C:y, odld*
p A!rko m!rg:nt!, nearning Android" XubCish:r: [~:iCCy A:%i!, l :%ition,
odld*
~obin ;:Witt, Seeing with 8pen)." j:rvo (!g!in:, ^!nu!ry odd, Ync*
65

You might also like