You are on page 1of 87

B Gio D c V o T o

Trng i Hc S Ph m K Thu t TP H Ch Minh


Khoa Cng Ngh Thng Tin

KHA LUN TT NGHIP

PHT HIN MC TIU DI NG


S DNG B LC KALMAN

Sinh vin thc hin: TRN NHT QUANG


MSSV: 06102070
Gio vin hng dn: THS. TRN TIN C

TP H Ch Minh , 201 1

I HC S PHM K THUT TP.H CH MINH

CNG HA X HI CH NGHA VIT NAM

KHOA CNG NGH THNG TIN

c lp T do Hnh phc

NHIM V THC HIN KHA LUN TT NGHIP

H tn sinh vin: Trn Nht Quang


MSSV: 06102070
Chuyn ngnh: Cng Ngh Thng Tin
Tn ti: Pht hin mc tiu di ng s dng b lc Kalman

Ni dung thc hin:


L thuyt:

Tm hiu phng php pht hin vt th da trn mu sc.


Tm hiu v b lc Kalman ng dng trong pht hin mc tiu di ng.

Thc hnh:

Xy dng chng trnh pht hin mc tiu di ng da trn phn tch mu sc v


s dng b lc Kalman ti u c on.
Kt hp vic theo di i tng vi cc thut ton ha my tnh to ra chc
nng v v iu khin nh t camera.

Thi gian thc hin: t 2.9.2010 n 1.1.2011


Ch k ca sinh vin: _______________________________________________________

TP H Ch Minh, ngy

thng

nm 2011

TRNG KHOA CNTT

GING VIN HNG DN

(K{ v ghi r h tn)

(K{ v ghi r h tn)

ng Trng Sn

Trn Tin c

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

LI CM N

Trong suy ngh ca em, bn nm i hc ca mt sinh vin c tng kt bi n tt


nghip. T u em xc nh s quan trng ca n ny nh th.
Nhn c ti mnh thch l mt may mn. V em c nhn ti ny.
n ny c th l khng qu phc tp so vi nhng thnh tu v tin hc hin nay, nhng
vi mt sinh vin nh em th khng th trnh khi nhng kh khn trong qu trnh thc
hin.
May mn thay em nhn c s gip nhit tnh ca thy Trn Tin c, H S
Phm K Thut TP H Ch Minh, gio vin hng dn v cng l c vn hc tp ca em
trong sut nhng nm i hc. Thy khng ch dy em v kin thc m cn cho em nhiu
hiu bit qu bu khc. Em rt cm n thy! Xin c gi ti thy li cm n chn thnh!
Chc thy lun khe mnh tip tc hng dn thm nhiu lp sinh vin na.
Bn cnh , cng nh nhiu bn sinh vin khc, hon thnh c khng ch n ny
m cn c kha hc i hc, em cn phi nh vo s quan tm, ng h ht sc ln lao ca
cha m em v mi ngi trong gia nh. Nn ni y, t y lng mnh, em xin c gi
li cm n chn thnh nht ti cha m em v mi ngi! H lun l nhng ngi m em
yu qu. Cu mong nhng iu tt p nht n vi h!
Ngoi ra, khng th khng nh ti cc thy c trong khoa Cng Ngh Thng Tin, khoa o
To Cht Lng Cao, H S Phm K Thut TP H Ch Minh, v cc thy c khc tn tm
dy v quan tm gip em cng cc bn trong thi gian qua. Nh h em mi c c
nhng kin thc nh hm nay hon thnh n ny. Em xin c cm n cc thy c!
Mt ln na, em cm n mi ngi!
TP H Ch Minh, thng 12 nm 2010

Trn Nht Quang

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

ii

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

NHN XT CA GIO VIN HNG DN

_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
TP H Ch Minh, ngy

thng

nm 2011

Gio vin hng dn

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

iii

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

NHN XT CA GIO VIN PHN BIN

_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
TP H Ch Minh, ngy

thng

nm 2011

Gio vin phn bin

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

iv

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

MC LC
NHIM V THC HIN KHA LUN TT NGHIP ................................................................ i
LI CM N ....................................................................................................................... ii
NHN XT CA GIO VIN HNG DN .......................................................................... iii
NHN XT CA GIO VIN PHN BIN .............................................................................. iv
MC LC............................................................................................................................. v
DANH MC HNH ............................................................................................................. viii
DANH MC BIU .......................................................................................................... ix
M u ............................................................................................................................... 1
Vn thc t................................................................................................................. 1
Mc ch, i tng v phm vi nghin cu .................................................................... 1
B cc ca bo co .......................................................................................................... 5
1

Chng 1 Nn Tng .................................................................................................... 6


1.1

Cc khi nim c bn v xc sut .......................................................................... 7

1.1.1

Cng thc tnh xc sut .................................................................................. 7

1.1.2

Xc sut c iu kin ...................................................................................... 8

1.2

Bin ngu nhin .................................................................................................... 9

1.3

Hm xc sut......................................................................................................... 9

1.4

Hm tch ly ........................................................................................................ 10

1.5

Cc c trng s ca bin ngu nhin ................................................................. 10

1.5.1

Kz vng ........................................................................................................ 10

1.5.2

Phng sai ................................................................................................... 12

1.6

Moment ca bin ngu nhin ............................................................................. 13

1.7

Hip phng sai .................................................................................................. 17

1.7.1

nh ngha .................................................................................................... 17

1.7.2

Tnh cht ...................................................................................................... 18

1.8

Ma trn hip phng sai ..................................................................................... 19

1.9

Phn phi chun (phn phi Gauss) .................................................................... 19

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

1.10

c lng ....................................................................................................... 21

1.11

Nguyn tc trc giao (Orthogonality principle) ................................................ 24

Chng 2 B Lc Kalman .......................................................................................... 26


2.1

Gii thiu v lc .................................................................................................. 27

2.2

Gii thiu b lc Kalman ..................................................................................... 27

2.2.1

Tng quan .................................................................................................... 27

2.2.2

i nt v Rudolf Emil Kalman ..................................................................... 28

2.2.3

ng dng ca b lc Kalman ........................................................................ 29

2.2.4

V d dn nhp ............................................................................................. 29

2.2.5

M hnh tng qut ca c lng dng b lc Kalman ................................ 31

2.3

2.3.1

Cc k hiu s dng ..................................................................................... 32

2.3.2

Xy dng b lc Kalman ............................................................................... 33

2.3.3

Tm tt cc phng trnh ca b lc Kalman ............................................... 38

2.4
3

B lc Kalman trong OpenCV .............................................................................. 39

Chng 3 Pht Hin Vt Th Da Trn Mu Sc ...................................................... 42


3.1

B lc Kalman ..................................................................................................... 32

H mu HSV ........................................................................................................ 43

3.1.1

nh ngha .................................................................................................... 43

3.1.2

Chuyn t mu RGB sang HSV ...................................................................... 44

3.2

Moment ca nh (image moment) ...................................................................... 46

3.3

Thut ton pht hin i tng theo mu sc .................................................... 46

3.4

Ci t thut ton pht hin vt th da theo mu sc vi OpenCV.................... 47

Chng 4 Thit K V Ci t Chng Trnh Pht Hin Di ng............................... 49


4.1

Thit k ............................................................................................................... 50

4.1.1

M hnh h thng ........................................................................................ 50

4.1.2

B o ........................................................................................................... 52

4.2

Ci t................................................................................................................. 53

4.2.1

Hot ng ca chng trnh ........................................................................ 53

4.2.2

Cc on m chnh ....................................................................................... 56

Kt Lun ............................................................................................................................ 70
V l thuyt ................................................................................................................... 70
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

vi

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

V ng dng .................................................................................................................. 70
Hng pht trin........................................................................................................... 70
Ph Lc.............................................................................................................................. 71
Hng dn ci t OpenCV 2.1 cho project Winform CLR, Visual Studio 2008 C++ ........ 71
TI LIU THAM KHO ....................................................................................................... 77

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

vii

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

DANH MC HNH
Hnh 0-1 Phn mu vng v hng ca cy bt s c theo di .......................................... 2
Hnh 0-2 Theo di i tng ............................................................................................... 2
Hnh 0-3 Dng theo di chuyn ng v hnh t camera. ............................................... 3
Hnh 0-4 nh kt qu ca thao tc v qua camera ............................................................... 3
Hnh 0-5 Zoom nh bng cch iu khin cc vt th .......................................................... 4
Hnh 0-6 Kt qu ca vic zoom nh .................................................................................... 4
Hnh 1.6-1 Cc phn phi xc sut v " nhn". ng gia: phn phi chun. ........... 17
Hnh 2.3-1 Tm tt qu trnh lm vic ca lc Kalman ....................................................... 39
Hnh 3.1-1 Hnh nn ngc biu din h mu HSV ............................................................ 43
Hnh 3.1-2 Hnh trn biu din cc sc mu (H: 0-360) v bo ha (S: 0-1). Mu : H=0,
mu xanh l: H=120, mu xanh dng: H=240 .................................................................. 43
Hnh 4.2-1 Ca s iu khin ............................................................................................. 53
Hnh 4.2-2 Ca s camera hin kt qu ca chc nng theo di ........................................ 53
Hnh 4.2-3 Ca s camera hin kt qu ca chc nng v ................................................. 54
Hnh 4.2-4 nh kt qu ca thao tc v qua camera trn Khung nhn ................................ 54
Hnh 4.2-5 Zoom nh bng cch iu khin cc vt th ..................................................... 55
Hnh 4.2-6 Kt qu ca vic zoom nh trong Khung nhn ................................................... 55
Hnh PL-0-1 Cu hnh CMake 2.8.3..................................................................................... 71
Hnh PL-0-2 To project CLR Windows Forms Application .................................................. 72
Hnh PL-0-3 Thm item ...................................................................................................... 73
Hnh PL-4 Thm menu ....................................................................................................... 73
Hnh PL-5 Kt ca vic ci t v chy thnh cng mt chng trnh Winform dng
OpenCV ............................................................................................................................. 76

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

viii

ti Pht Hin Mc Tiu Di ng S Dng Mt N Kalman

DANH MC BIU
Biu 1.6-1 Phn phi xc sut ca X hp 1, phng sai ln hn: cc gi tr phn tn xa
kz vng hn ...................................................................................................................... 15
Biu 1.6-2 Phn phi xc sut ca X hp 2, phng sai nh hn: cc gi tr tp trung
hn quanh kz vng ............................................................................................................ 15
Biu 1.6-3 Moment trung tm bc 3 ln hn 0: lch dng (ui bn phi di hn) .... 16
Biu 1.9-1 th phn phi xc sut ca X ................................................................... 20
Biu 1.9-2 th ca mt s phn phi chun ............................................................. 21
Biu 4.1-1 Mt s phn phi Gauss, vi phng sai 2 cng ln th cc gi tr x c gi tr
ln (xa kz vng) s c xc sut cao hn ............................................................................. 51

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

ix

M u
Vn thc t
Ngy nay, mi ngi nghe ni ngy cng nhiu v cc t t li c kh nng thay th con
ngi trong vic vn hnh xe, mt chng trnh my tnh s iu khin xe. Nhng chic xe
ny thm ch cn c gii thiu l an ton hn xe li bi con ngi trong mt s trng
hp.
Trong cc ng dng bo v nh camera an ninh, nhng thit b ny hot ng 24/24. Tuy
nhin, ch mt vi on phim c quay l c { ngha quan trng, chng hn nh on
phim ghi li cnh c ngi t nhp vo hnh lang (ni t camera) vo bui ti. Vy lm
sao chng ta c th tm ra on video ? S rt mt thi gian (v km hiu qu) nu ta
ngi xem ton b 24 gi phim do camera quay. Cc chng trnh s gip chng ta.
Mt ng dng khc, c th chng ta khng thch th lm, l cc tn la khng i
khng (air-to-air missile: AAM). cc l tn la dn hng c bn t mt my bay
tiu dit my bay khc. Tn la dn hng hot ng theo nguyn l pht hin mc tiu
(thng thng bng ra a hoc hng ngoi, i khi cng s dng Lazer hoc quang hc)
sau t ng dn n mc tiu [1].
V cn nhiu ng dng khc na.
Vy lm sao my tnh (cc chng trnh) lm c nhng vic trn? C nhiu th lin
quan cn phi gii quyt, nhng mt phn quan trng trong l vn pht hin ra cc
vt th chuyn ng.
V vic pht hin ra cc i tng di ng c s dng rt rng ri nh th nn c th
ni ti ny rt c { ngha trong khoa hc ln thc tin.

Mc ch, i tng v phm vi nghin cu


n ny s tm hiu v ci t thut ton pht hin mc tiu di ng da trn phn tch
mu sc v s dng b lc Kalman. ng dng c vit s dng th vin OpenCV 2.1 v
ngn ng lp trnh C++, IDE Visual Studio 2008.
C nhiu thut ton pht hin chuyn ng. Mt s thut ton ph bin c k n sau
y:

Lucas-Kanade: phn tch cc b (mt vng nh) tm ra v tr mi ca nhng im


c trng (thng l cc im gc (corner)).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

M U

Horn-Schunck: mt thut ton da trn phn tch ton cc, kh chm hn LucasKanade v ngy nay t dng [2].
Mean-Shift: mt k thut phn tch d liu tng qut. c dng trong nhiu lnh
vc khng ch ring trong x l nh [2]. Mt pht trin ca Mean-shift dng cho x
l nh l Cam-shift (continuously adaptive mean-shit).

Nhng thut ton ny kh phc tp i vi mt sinh vin i hc.


V vy, mt phng php n gin hn c tm hiu v s dng y. l phng
php pht hin vt th da trn mu sc (Chng 3) kt hp vi b lc Kalman (Chng 2)
theo di chuyn ng.
C th hn, chng ta s thc hin mt gii php pht hin v theo di cc i tng c
mu sc ch nh trc (Hnh 0-2). y i tng l mt phn cy bt c mu hng v
vng (Hnh 0-1).

Hnh 0-1 Phn mu vng v hng ca cy bt s c theo di

Hnh 0-2 Theo di i tng

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

M U

Hnh 0-3 Dng theo di chuyn ng v hnh t camera.

Hnh 0-4 nh kt qu ca thao tc v qua camera

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

M U
Sau khi theo di c chuyn ng ca vt th, ta s s dng cc thut ton trong
ha my tnh to ra mt ng dng v (Hnh 0-3 v 0-4) v iu khin nh t camera (di
chuyn v zoom nh) (Hnh 0-5 v 0-6).

Hnh 0-5 Zoom nh bng cch iu khin cc vt th

Hnh 0-6 Kt qu ca vic zoom nh

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

M U
ng dng c vit y dng li vi cc chc nng va trnh by. Tuy nhin, vi kin
thc v pht hin vt th v b lc Kalman, ni dung l thuyt c tm hiu hon ton c
th dng pht trin nhiu ng dng thch hp khc.

B cc ca bo co
Bo co ca n ny gm 2 phn chnh: Phn l thuyt v Phn vit ng dng.
Phn l thuyt gm 3 chng:

Chng 1: Nn Tng. Trnh by v cc ni dung ton v xc sut thng k c lin


quan ti xy dng b lc Kalman.
Chng 2: B Lc Kalman. Gii thiu v lc, gii thiu b lc Kalman, xy dng b
lc Kalman, b lc Kalman trong OpenCV 2.1.
Chng 3: Pht Hin Vt Th Da Trn Mu Sc. Trnh by v phng php pht
hin i tng bng phn tch mu sc v ci t vi OpenCV 2.1.

Phn vit ng dng gm 1 chng:

Chng 4: Thit K V Ci t Chng Trnh. Trnh by v thit k ca chng trnh


cng nh trch dn v gii thch mt s on code quan trng.

Bo co cn c phn Ph lc trnh by Cch ci t v cu hnh OpenCV 2.1 dng pht


trin chng trnh ca n ny.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

1 Chng

Nn Tng
Cc ni dung chnh:

Bin ngu nhin v cc c trng s ca n


Hm xc sut v hm tch ly
Hip phng sai v ma trn hip phng sai
c lng im
Nguyn tc trc giao

CHNG 1. NN TNG

Cc ni dung v xc sut v ton c trnh by y nhm mc ch phc v vic xy dng b lc


Kalman (Chng 2). Nu bn quan tm n cc vn v kha cnh su hn ca l thuyt xc sut
v ton, bn hy tm c cc ti liu chuyn v xc sut thng k v ton.

1.1 Cc khi nim c bn v xc sut


Trong cuc sng hng ngy, khi thc hin mt vic lm m c nhiu kt qu c th xy ra,
ngi ta s ngh ti kh nng xy ra ca mi kt qu. Xc sut ra i gip chng ta
nh gi kh nng .
Mt v d l vic tung xc xc. Kt qu s l 1 trong 6 trng hp: ta c mt 1 chm hay
2, 3, 4, 5 v 6 chm.
Trong xc sut thng k, vic tung xc xc c gi l mt php th. Php th n gin l
mt hnh ng m ta mun tnh ton kh nng xy ra gia cc kt qu ca n.
Kt qu ca php th c gi l mt bin c (hay s kin (event)). Trong v d trn, ta c
mt s bin c:

c mt 1 chm
c mt 3 chm
c mt 6 chm

Mi mt bin c c kh nng xy ra khc nhau, v ta c mt i lng l xc sut dng


do t kh nng ny.
V d: nu ta dng mt b bi gm c 52 l, v thc hin php th rt ra mt l t b bi,
nh vy c tt c 52 kh nng u ra. Nh vy, ta c mt vi bin c v xc sut ca n:

"Rt ra l bi va va en cng mt lc" (0 phn t), xc xut = 0/52 = 0


"L bi rt ra l con 5 c" (1 phn t), xc xut = 1/52
"L bi rt ra l con Gi" (4 phn t), xc xut = 4/52
"L bi rt ra l mt l bi" (52 phn t), xc xut = 52/52 = 1

1.1.1 Cng thc tnh xc sut


Thng th (nu khng i su vo cc vn phc tp), ta c th tnh c xc sut bng
trc gic, n gin xc sut trong cc trng hp trn l ly t l.
Cng thc c in
Tng qut, ngi ta nh ngha xc sut nh sau:
P(A) = mA / n

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

CHNG 1. NN TNG
vi mA l s bin c s cp thun li cho A, tc l, mt cch tng i1, cc bin c m n
xy ra th A xy ra. Cn n l s bin c s cp ng kh nng, tc l tt c cc trng hp
c th xy ta khi thc hin php th.
Cng thc tnh xc sut theo thng k
nh ngha xc sut c in c nhng hn ch (nhng trng hp khng tnh c xc
sut) l:

N ch xt trong trng hp s bin c s cp (n) l hu hn.


V ch xt trong trng hp h bin c l ng kh nng2.

Do , ngi ta a ra thm nh ngha xc sut theo thng k:


P(A) = lim (m/n), n
trong , n l s ln thc hin php th cn m l s ln bin c A xut hin.
Trong thc t, n khng cn ti v cng, ty theo trng hp m ngi ta chn mt s n
ln l c. Khi , ta c
P(A) m/n

1.1.2 Xc sut c iu kin


Quan st lc bn cnh.
Ly ngu nhin mt im M trong hnh E. Gi A l
bin c M A v B l bin c M B.
Gi s bin c B xy ra, bng trc gic ta c th
thy cc bin c s cp thun li cho bin c A
chnh l phn giao gia A v B: A B.
V vy xc sut A xy ra khi B xy ra l:
P(A|B) = S(AB) / S(B), vi S l din tch.
P(A|B) c gi l xc xut c iu kin, c l Xc xut A xy ra khi B xy ra.
C l khng phi ni, P(A|B) v P(A) = S(A) / S(E) khng bng nhau.
Tip theo, chia t v mu cho S(E) ta c:
P(A|B) = [S(AB) / S(E)] / [S(B) / [S(E)] = P(AB) / P(B), vi P(B) > 0
trong AB l bin c xy ra khi A v B ng thi xy ra.
1

gii thch y th no l mt bin c s cp thun li s phi i su vo khi nim bin c. Ta s


khng lm iu y. Nu quan tm bn c th c cc ti liu v xc sut.
2
H bin c ng kh nng l h bin c m cc bin c xy ra hon ton khng c th t u tin no.
Chng xy ra mt cch hon ton ngu nhin, cng bng.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

CHNG 1. NN TNG
Trn y ch l mt v d, nhng ta s thy cng thc tnh xc sut c iu kin cng ging
nh vy.
Mt cch tng qut, ngi ta nh ngha cng thc xc sut c iu kin nh sau:
P(A|B) = P(AB) / P(B), vi P(B) > 0
Ta ni n xc sut c iu kin y v di y ta s cp n khi nim kz vng c
iu kin.
Nh vy n y ta c cc khi nim c bn v php th, bin c v xc sut.
Tuy nhin, cc bin c nh vy vn mi ch c miu t bng li, khng th dng trong
tnh ton nh lng. V bin ngu nhin ra i gii quyt vn ny.

1.2 Bin ngu nhin


Bin ngu nhin (random variable) c th hiu n gin l mt nh x. N nh x mt bin
c vi gi tr s.
V d: Trong php th gieo mt ng xu, ta c th c mt nh x nh sau:
X(bin c) =

0
1

nu
nu

bin c="c mt hnh"


bin c="c mt s"

Mt v d khc l php th giao xc xc, ta c th c nh x nh sau:


X(s chm) = s chm
trong s chm l s chm gieo c ca xc xc.
Mi X trong cc v d trn c gi l mt bin ngu nhin.
Nh vy, bin ngu nhin khng c ngha l mt bin nh cc bin ton hc khc. Thc
cht n l mt hm s (hay nh x).
Cc kt qu u ra c nh x bi bin ngu nhin c gi l gi tr ca bin ngu
nhin. Trong v d gieo ng xu, bin ngu nhin X c 2 gi tr 0 v 1. Trong v d tung xc
xc, bin ngu nhin X c 6 gi tr 1, 2, 3, 4, 5 v 6.

1.3 Hm xc sut
i vi bin ngu nhin ri rc, hm xc sut, cn gi l hm khi xc sut (ting Anh:
Probability mass function), k hiu l p(x) c nh ngha nh sau:
1 , = 1
2 , = 2
3 , = 3
p(x) =

, =
0 ,
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

CHNG 1. NN TNG
trong , x1, x2, xn l cc gi tr ca bin ngu nhin, v p1, p2, pn l xc sut ti cc bin
c c gi tr tng ng. p(x) = 0 ti cc x khc v l cc bin c khng th xy ra (ging
nh bin c bc c l bi va va en trong b bi).
Hm ny l hm c trng cho mt bin ngu nhin ri rc.
Ni thm: i vi bin ngu nhin lin tc, c mt hm tng ng l hm mt . V
trc gic, hm mt chnh l hm xc sut c lm mn, tc l cc gi tr x gn nh
lin tip nhau (xk+1 xk 0). Hm mt c k hiu l f(x) (khc vi hm tch ly F(x)).

1.4 Hm tch ly
Hm tch ly cn gi l hm phn phi xc sut, c nh ngha nh sau (chung cho c
bin ngu nhin ri rc v lin tc):
F(x) = P[X<x], x R
Lu {: 2 hm xc sut (mt ) v tch ly u c th dng c trng cho mt bin ngu
nhin. Tuy nhin, trong ng dng, ngi ta thng dng hm xc sut (mt ) hn. Khi
ngi ta ni n phn phi xc sut ca mt bin ngu nhin, chnh l ang cp n
hm c trng ca n, v thng thng l hm xc sut.

1.5 Cc c trng s ca bin ngu nhin


1.5.1 K vng
Kz vng (expected value) ca mt bin ngu nhin X, cn gi l kz vng ton hay gi tr kz
vng, c nh ngha nh sau (i vi bin ngu nhin ri rc):
E(X) = xipi
C th din t bng li: Kz vng l tng ca tch gi tr (bin ngu nhin) vi xc sut ti
.
V d: Mt hp c 8 vin bi, 3 vin c trng lng 40g, 5 vin c trng lng 60g. Gi X l
bin ngu nhin c gi tr l trng lng c cc vin bi (hay ni cch khc, X l trng lng
mi vin bi). Ta tnh c kz vng ca X:
E(X) = 40 * 3/8 + 60 * 5/8 = 52.5
Trong v d trn, ta thy E(X) l trng lng trung bnh ca mt vin bi.
Mt cch tng qut, v { ngha, kz vng chnh l gi tr trung bnh (v mt xc sut) ca
mt bin ngu nhin.
V d: Trong tr chi s , ngi chi t 1 s t 00 99. Nu ngi chi t 1 ng th
khi thng s thu c 70 ng, nu khng th mt 1 ng. Vy nu gi X l bin ngu nhin
c gi tr l s tin thng c ca ngi chi th ta c kz vng ca X l:
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

10

CHNG 1. NN TNG
E(X) = 70 * 1/100 + -1 * 99/100 = -0.29
Nh vy c ngha l trung bnh c t 1 ng, ngi chi s thu v -0.29 ng (mt i
0.29 ng).
Ni thm: mt tr chi c kz vng khc 0 c coi l tr chi khng cng bng. Trong tr
chi s trn, ngi chi l.
1.5.1.1 Cc tnh cht ca k vng

Kz vng c tnh tuyn tnh, ngha l n c tnh cht sau:


E(aX + bY) = aE(X) + bE(Y), vi X, Y l 2 bin ngu nhin; a, b l 2 hng s
Ni cch khc, n bao gm cc tnh cht sau:

E(c) = c, vi c = hng s
E(c.X) = c.E(X)
E(X + Y) = E(X) + E(Y), vi X, Y l 2 bin ngu nhin

Kz vng khng c tnh nhn, ngha l E(X.Y) khng bng E(X).E(Y). Lng sai khc gia
E(X.Y) v E(X).E(Y) l hip phng sai cov(X,Y) (s ni bn di):
cov(X.Y) = E(X.Y) - E(X).E(Y)
E(X.Y) ch bng E(X).E(Y) khi 2 bin ngu nhin l c lp:
E(X.Y) = E(X).E(Y), vi X v Y l 2 bin ngu nhin c lp
Ta s ni li vn ny trong phn Hip phng sai.
Ngoi ra d thy mt tnh cht na l v mt n v th E(X) c cng n v vi X, v d nu
X c n v l gram th E(X) cng c n v l gram.
1.5.1.2 K vng c iu kin

Cho 2 bin ngu nhin X v Y, ta c khi nim kz vng c iu kin c nh ngha nh


sau:
E[X|Y](y) = E[X|Y = y] =

.P( X=x|Y=y )

trong y l mt bin c m bin ngu nhin Y nh x, k hiu Y=y ngha l xy ra bin c


y. P( X=x|Y=y ) l xc sut c iu kin (xem mc 2.1.2).
Ni thm: Kz vng lp l mt khi nim da trn kz vng c iu kin:
E( E[X|Y] ) = E(X)
E( E[X|Y] ) gi l kz vng lp.
Chng minh:

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

11

CHNG 1. NN TNG

1.5.1.3 K vng ca ma trn

Nu bin ngu nhin X l mt ma trn th kz vng ca n l ma trn cc kz vng ca cc


phn t ca X:
1,1
2,1
E(X) = E(
,1

1,2
2,2

,2

1,
(1,1 ) (1,2 )
2,
(2,1 ) (2,2 )
)=

,
( ,1 ) ( ,2 )

(1, )
(2, )

( , )

Tnh cht ny c dng trong ma trn hip phng sai (s cp bn di).

1.5.2 Phng sai


Phng sai (variance) ca mt bin s ngu nhin ri rc X c nh ngha nh sau:
var(X) = E[(X - )2]
trong l kz vng ca X, = E(X).
Mt cch trc gic, nu coi kz vng l trung bnh, th phng sai chnh l khong cch
bnh phng trung bnh t cc gi tr ca X ti kz vng. Hay ni cch khc, nu cc gi tr
(ca bin ngu nhin X) cng phn tn (nm xa) gi tr trung bnh (kz vng) th var(X) cng
ln v ngc li.
Mt cng thc phng sai tng ng l:
var(X) = E(X2) - 2
Chng minh: S dng cc tnh cht ca kz vng ta c th chng minh cng thc ny nh
sau:
var(X) = E[(X - )2]
= E[ X2 2X + 2 ]
= E(X2) E(2X ) + E(2)
= E(X2) 2 E(X) + 2
= E(X2) 2 2 + 2
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

12

CHNG 1. NN TNG
= E(X2) - 2
Ni thm: Theo kin c nhn ca ti, c th ngi ta mun o phn tn quanh gi tr
trung bnh ca cc gi tr ca bin ngu nhin nn mun tnh E(|X-|). Tuy nhin vic dng
gi tr tuyt i dn ti kh khn no trong vic pht trin cc cng thc nn ngi
ta thay tr tuyt i bng bnh phng. D sao y ch l suy din c nhn v ngun gc
phng sai.
V mt n v, phng sai c n v l bnh phng n v ca X. V d X c n v l cm
th var(X) s c n v cm2.
Ngi ta a ra thm khi nim lch chun, k hiu (X), c tnh bng cn bc 2 ca
phng sai:
(X) = var(x)
Vi nh ngha ca phng sai, ta d thy n lun 0, v vy khng cn iu kin g y.
Nh vy, lch chun, do k tha tnh cht ca phng sai, cng c th dng so snh
s phn tn ca cc gi tr quanh gi tr kz vng: cng ln th cc gi tr cng nm xa
(phn tn) gi tr kz vng.
Mt thun li ca lch chun l n c cng n v vi lch chun.
Ni thm: C v nh lch chun l s quay tr v mong mun ban u: tnh ton
khong cch phn tn trung bnh (ch khng phi khong cch bnh phng trung
bnh phng sai). Khong cch phn tn trung bnh m ti ni l E(|X-|). Mc d
lch chun khng bng khong cch phn tn trung bnh ny ( E(|X-|) ) nhng cng
chng c vn g khi dng n gii quyt vn m ngi ta mong mun khong
cch phn tn trung bnh gii quyt: tnh ton s phn tn ca cc gi tr quanh gi tr kz
vng ca mt bin ngu nhin.

1.6 Moment ca bin ngu nhin


Moment c cp mc ny l moment trong ton v xc sut thng k, n khc vi
khi nim moment ca nh (s ni bn di) cng nh moment trong vt l.
Cho F l mt bin ngu nhin, ta c i lng E(Fk) c gi l moment bc k ca F, v i
lng E[ ( F-E(F) )k ] c gi l moment trung tm bc k ca F.
R rng, kz vng m chng ta cp trong cc mc trc chnh l moment bc 1 ca bin
ngu nhin. Cn phng sai chnh l moment trung tm bc 2.
Ni thm: Thng thng tip cn mt vn mi l, chng ta thng (v c l l nn)
bt u t trc gic ri n mt s tng qut n gin (gn trc gic) v sau l s tng
qut ha v m rng. C th khi nim moment ra i sau cc khi nim phng sai v
lch chun, v bn c th thy n l s tng qut ha v m rng ca cc khi nim ny.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

13

CHNG 1. NN TNG
Chng ta c th t cu hi cc moment khc kz vng v phng sai c { ngha g khng.
Hu nh mi s tng qut ha u rt c { ngha i vi s pht trin. Cc moment ca
bin ngu nhin cho ta cc thng tin v dng iu ca phn b xc sut (hnh dng ca
th hm xc sut (hay hm mt i vi bin ngu nhin lin tc)) ca bin ngu nhin
.
V d, nu moment trung tm bc 2 (phng sai) ca bin ngu nhin F nh, th c ngha l
cc gi tr ca F ni chung t b sai lch so vi gi tr kz vng ca n, hay ni cch khc phn
ln xc sut ca phn b xc sut ca F tp trung trong mt khong nh xung quanh im
gi tr kz vng. Ngc li, nu moment trung tm bc 2 ln, th phn b xc sut ca F ni
trung s phn tn ra xa im gi tr kz vng hn. y l { ngha ta ni trn.
V d: C 2 hp bi, mi hp ng 12 vin bi. Gi bin l bin ngu nhin nh x khi lng
(n v gram) cc vin bi, ni cch khc X l khi lng cc vin bi. Ta c:
Hp 1:
X (gram)

30

40

50

60

70

S lng

X (gram)

30

40

50

60

70

S lng

Hp 2:

C hai hp u c E(X) = 47.5 (gram) (kz vng: khi lng trung bnh)
Nhng phng sai th khc nhau: (nhc li: var(X) = E(X2) (E(X))2)

Hp 1: var(X) = 2491.67 47.52 = 235.42


Hp 2: var(X) = 2391.67 47.52 = 135.42

Suy ra: cc gi tr (khi lng) ca hp 2 tp trung gn gi tr kz vng (47.5) hn.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

14

CHNG 1. NN TNG
0.33
0.25

Xc sut P(X)

0.25

0.08

0.08

K vng

30

40

47.5

50

60

70

X (khi lng)
Biu 1.6-1 Phn phi xc sut ca X hp 1, phng sai ln hn: cc gi tr phn tn xa k vng hn

0.33

Xc sut P(X)

0.25

0.17

0.17

0.08

K vng

30

40

47.5 50

60

70

X (khi lng)
Biu 1.6-2 Phn phi xc sut ca X hp 2, phng sai nh hn: cc gi tr tp trung hn quanh k vng

Moment trung tm bc 3 ca F th hin lch (skewness) ca phn b xc sut ca F:


Nu F c phn b xc sut i xng quanh im gi tr k vng (c ngha l F v 2E(F) - F
c cng phn b xc sut), th moment trung tm bc 3 ca n bng 0. Nu nh moment
trung tm bc 3 ln hn khng th phn b xc sut ca F c gi l lch dng hay lch
v bn phi (phn ui bn phi di hn), cn nu moment trung tm bc 3 nh hn
khng th phn b xc sut ca F c gi l lch m hay lch v bn tri (phn ui bn
tri di hn).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

15

CHNG 1. NN TNG
(+) Phn b lch dng
(ui phi di hn)

(-) Phn b lch m


(ui tri di hn)

V d: Gi s c mt bin ngu nhin F vi phn b xc sut ri rc sau:


F

-2

p(F)

1/2

1/4

1/4

Khi gi tr kz vng ca F: E(F) = 0, moment trung tm bc 3 ca F bng:


E[ (F-E(F))3 ] = -23.1/2 + 13.1/4 + 33.1/4 = 3 > 0
th phn b xc sut ca F c phn ui lch v bn phi so nu ly im gi tr kz vng
(F=0).

Xc sut P(F)

0.50

-2

K vng
|
0

0.25

0.25

F
Biu 1.6-3 Moment trung tm bc 3 ln hn 0: lch dng (ui bn phi di hn)

Cn moment trung tm bc 4 c lin quan n cng thc tnh kurtosis m ta c th coi l


nhn ca phn b xc xut so vi phn b chun3, nu nhn ny ln hn 0 th
bin ngu nhin c th ca phn b xc sut nhn hn phn b chun, ngc li th
n bt hn. Xem thm ti ti liu [3].
3

Phn b chun (normal distribution) l phn b xc sut thng dng trong thc t. Ta s ni n phn b
ny trong cc mc sau.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

16

CHNG 1. NN TNG

Hnh 1.6-1 Cc phn phi xc sut v " nhn". ng gia: phn phi chun.

1.7 Hip phng sai


1.7.1 nh ngha
Cho 2 bin ngu nhin X v Y, ta c nh ngha hip phng sai (covariance) ca X v Y , k
hiu Cov(X,Y):
Cov(X,Y) = E[ (X-x)(Y- y) ]
trong x, y ln lt l kz vng ca X, Y.
Mt cng thc tng ng ca hip phng sai:
Cov(X,Y) = E (X Y) - xy
Chng minh: S dng cc tnh cht ca kz vng.
Cov(X,Y) = E[ (X-x)(Y- y) ]
= E( XY - xY - X y + xy )
= E(XY) - E(xY) - E(X y) + E(xy)
= E(XY) - xE(Y) - y E(X) + xy
= E(XY) - 2xy + xy
= E (X Y) - xy
Theo cng thc th nht, mt cch trc gic, ta c th thy { ngha ca hip phng sai,
l s bin thin cng nhau ca 2 bin ngu nhin: Nu 2 bin c xu hng thay i
cng nhau (ngha l, khi mt bin c gi tr cao hn gi tr kz vng th bin kia c xu hng
cng cao hn gi tr kz vng), th hip phng sai gia hai bin ny c gi tr dng. Mt
khc, nu mt bin nm trn gi tr k vng cn bin kia c xu hng nm di gi tr k
vng, th hip phng sai ca hai bin ny c gi tr m.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

17

CHNG 1. NN TNG
Nu 2 bin ngu nhin l c lp (s bin thin ca chng khng lin quan nhau) th hip
phng sai ca chng bng 0.
X,Y c lp Cov(X,Y) = 0
Tuy nhin iu ngc li khng ng: nu hip phng sai ca X, Y bng 0 th khng nht
thit 2 bin ny c lp. Cc bin ngu nhin m c hip phng sai bng 0 c gi l
khng tng quan (uncorrelated), chng c th c lp nhau hoc khng.
Chng ta tng cp trong phn kz vng: Kz vng khng c tnh nhn, v lng khc
bit gia kz vng ca tch v tch cc kz vng l hip phng sai:
Cov(X,Y) = E(X Y) - xy
y cng l cng thc m chng ta va trnh by.
Nh vy, nu X, Y c lp, ta c Cov(X,Y) = 0 E(X,Y) = xy
Cng t cng thc nh ngha hip phng sai, ta thy n v ca hip phng sai l tch
n v ca X v Y, v d X c n v l m, Y c n v l kg th cov(X,Y) c n v m.kg.

1.7.2 Tnh cht


Vi X, Y l 2 bin ngu nhin, a, b l cc hng s (theo ngha a, b khng l bin ngu nhin)
ta c cc tnh cht sau c suy ra t nh ngha hip phng sai v tnh cht kz vng:

Cov(X,X) = Var(X)
Cov(X,Y) = Cov(Y,X)
Cov(aX, bY) = abCov(X,Y)
Cov(X1+X2, Y1+Y2) = Cov(X1, Y1) + Cov(X2, Y1) + Cov(X1, Y2) + Cov(X2, Y2)

Tng qut, vi cc bin ngu nhin X1, X2, Xn v Y1, Y2, Ym ta c:


Cov(x Xi, Y Yj) = XY Cov(Xi, Yj)

Var(X1 + X2) = Var(X1) + Var(X1) + 2Cov(X1, X2)

Tng qut, vi cc bin ngu nhin X1, X2, Xn ta c:


Var(x X) = x Var(X) + 2

i, j:i<j Cov(X i ,

Xj )

Ni thm: Ngoi khi nim hip phng sai, ngi ta cn c khi nim h s tng quan,
k hiu X, Y, bng hip phng sai chia cho tch lch chun () ca 2 bin ngu nhin.
X, Y = Cov(X,Y) / XY
H s tng quan c trng cho quan h tuyn tnh ca 2 bin ngu nhin, nu 2 bin
ngu nhin c tr tuyt i h s tng quan cng gn bng 1 th chng cng c quan h
tuyn tnh, v ngc li. Nu 2 bin ngu nhin c h s tng quan = 0 th chng khng c
quan h tuyn tnh. V mt n v, h s tng quan li khng c n v (khc vi phng
sai c n v l bnh phng n v ca X v lch chun c n v l n v ca X).
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

18

CHNG 1. NN TNG

1.8 Ma trn hip phng sai4


Nh chng ta va trnh by, hip phng sai l i lng tnh ton s tng quan gia 2
bin ngu nhin.
Vy gi s chng ta c mt vector bin ngu nhin5 c 3 phn t X1, X2, X3. Nu ta mun
tnh s tng quan gia tt c cc cp bin ngu nhin th ta phi tnh tt c l 3 hip
phng sai: Cov(X1, X2), Cov(X1, X3), Cov(X2, X3).
Mt cch tng qut, ma trn hip phng sai ra i cho php ta tnh tt c cc Cov
gia 2 bin ngu nhin trong mt vector bin ngu nhin.
Cho mt vector bin ngu nhin X cha n bin ngu nhin, ma trn hip phng sai ca X,
k hiu l , c nh ngha l:
1 , 1
2 , 1
=

, 1
vi X =

1 , 2
2 , 2

, 2

1 ,
2 ,

Ni d hiu, ma trn hip phng sai l ni cha cc hip phng sai. Mi phn t ca
n l mt hip phng sai ca 2 bin ngu nhin Xi v Xj vi i l ch s hng v j l ch s
ct (i, j = 1..n).
Quan st trn ng cho ca ma trn hip phng sai (i=j) ta thy ti l cc phng
sai, v: Cov(Xi, Xi) = Var(Xi).

1.9 Phn phi chun (phn phi Gauss)


Trong cc mc va ri chng ta tm hiu kh cc kha cnh c bn ca mt bin ngu
nhin.
Chng ta cng cp n hm xc sut (hm mt ) l hm c trng cho mt phn
phi xc sut. Ni mt cch n gin phn phi xc sut (hay phn b xc sut) l mt
thut ng dng ch s phn b cc xc sut ca mt bin ngu nhin.
Trong v d v hp bi mc 1.6, chng ta c mt hp ng 12 vin bi. Gi bin l bin
ngu nhin nh x khi lng (n v gram) cc vin bi, ni cch khc X l khi lng cc
vin bi. Ta c:

Ti liu [4] Lindsay I Smith, A tutorial on Principal Components Analysis, 2002, c ni v ma trn hip
phng sai v ng dng ca n trong phn tch thnh phn chnh (mc 2.1.4 The covariance Matrix). Bn
cng c th tham kho cch ni d hiu v cc khi nim xc sut ng dng trong tin hc trong quyn ny.
5
Vector bin ngu nhin c th hiu n gin l mt mng (tp) cc bin ngu nhin.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

19

CHNG 1. NN TNG
X (gram)

30

40

50

60

70

S lng

Bng trn cng l mt cch biu din phn phi xc sut ca X, bi v nu ta ly s


lng chia cho 12 (tng s bi) ta s xc sut ca bi c khi lng tng ng. Hoc ta c
th:
0.33
0.25

Xc sut P(X)

0.25

0.08

0.08

K vng

|
30

40

47.5 50

60

70

X (khi lng)
Biu 1.9-1 th phn phi xc sut ca X

th trn cng l mt cch biu din mt phn phi xc sut.


Ni tm li, khi ta ni n mt phn phi xc sut l ta mun ni v phn phi cc xc sut
ca cc gi tr ca mt bin ngu nhin, tc l phn phi xc sut cho bit mi gi tr ca
bin ngu nhin s nhn xc sut l bao nhiu.
C rt nhiu phn phi xc sut, v d ca chng ta va ni ti cng l mt phn phi xc
sut. Tuy nhin, trong thc t, ngi ta thng s dng mt phn phi xc sut c tn l
phn phi chun (normal distribution), hay phn phi Gauss.
Mt bin ngu nhin X c ni l c phn phi Gauss khi n c hm mt l hm
Gauss, k hiu l XN(, ), c l X c phn phi chun (hay phn phi Gauss) vi tham
s , (2 tham s c t mt hm Gauss). Khi hm mt ca X l:
f(x; , ) = , 2 (x)=

1
2

(x-)2
22

Vi phn phi xc sut nh trn, ngi ta tnh c , ln lt chnh l kz vng v


lch chun ca X.
Di y l th ca mt s phn phi chun.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

20

CHNG 1. NN TNG

Biu 1.9-2 th ca mt s phn phi chun

Vi = 0 v = 1, phn phi c gi l phn phi chun chun ha.


Quan st th ta thy phn phi chun c dng i xng. Gi tr kz vng ca X l , chnh
l trc i xng. V lch chun (hay phng sai 2) cng ln th th ca n cng
bt, iu ny ph hp vi hiu bit ca chng ta: khi lch chun ln th cc gi tr
cng phn tn ra xa kz vng.

1.10 c lng
Trong mc ny ta s cp mt s khi nim lin quan n vn c lng (estimation).
Khi nim
c lng l phng on gi tr cha bit da vo cc quan st. C 2 loi:

c lng im: Gi tr c lng l mt s. V d, mt chic xe ang chy vi vn


tc khong 40km/h.
c lng khong: Gi tr c lng l mt on [a, b]. V d, mt chic xe ang
chy vi vn tc khong 35 n 40 km/h.

Trong bo co ny ta ch cp n c lng im.


c lng im

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

21

CHNG 1. NN TNG
Gi a l mt gi tr cha bit, khi ngi ta k hiu c lng im ca a l (c th c
l a m), v ta vit a .
Thng k
Trong c lng, ngi ta c khi nim thng k: Thng k l mt i lng m gi tr ca
n ch ph thuc vo cc quan st, khng ph thuc vo cc tham s cha bit.
V d: Cc biu thc dng tnh cc iu sau l cc thng k:

T l hc sinh gii.
im trung bnh ca sinh vin.

Nh vy, chng ta da vo cc thng k tm ra gi tr c lng, v cy ngi ta cn gi


thng k l hm c lng.
Mt cch tng qut nu ta c mu6 {x1, x2, xn}, th hm :
= (x1, x2, xn)
dng tnh ra gi tr c lng cho tham s c gi l hm c lng.
c lng khng chch (unbiased estimators)
Hm c lng gi l c lng khng chch ca tham s nu nh:
E() = .

Ngi ta chng minh c cc c lng sau y l cc c lng khng chch ca c


tham s tng ng:
Tham s

K hiu

c lng khng chch

Trung bnh

Phng sai

Var (hay 2)

S2

lch chun

Mu: c th hiu l b d liu quan st. c mt nh ngha y , xin tham kho cc ti liu v thng
k.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

22

CHNG 1. NN TNG

T l cc phn t
c tnh cht no

Bng 1.10-1 Bng cc c lng khng chch

vi X, f, S2, S, ln lt l trung bnh, t l cc phn t c tnh cht quan tm, phng sai v lch
chun ca mu quan st.
Hoc ni cch khc:

Trung bnh mu X l c lng khng chch cho trung bnh ca m ng 7.


Phng sai mu S2 8 ( lch chun S) l c lng khng chch cho phng sai (
lch chun) ca m ng.

T l cc phn t c tnh cht quan tm f l c lng khng chch cho t l cc phn


t ca m ng.

V d: tm t l ngi bit ni 2 ngoi ng ca mt nc (m ng), ngi ta kho st


mt b phn dn c (mu). T l ngi bit ni 2 ngoi ng trong b phn dn c ny l
mt c lng khng chch ca t l ngi bit ni 2 ngoi ng trong c nc.
Ni thm: Thng th m ng rt ln nn kho st ton b (cho kt qu chnh xc) gn
nh khng th, do ngi ta dng mu, l mt tp con ca m ng m ngi hy
vng kho st n s cho kt qu mun bit m ng.
V d: kho st chiu cao trung bnh ca ngi t tui 15-18, ngi ta khng th do
ht tt c nhng ngi trong tui ny (m ng), do ngi ta chn ra mt s
ngi o chiu cao (mu). Bng nhiu phng php ngi ta c th m bo hoc
khng nh rng kt qu t mu l ng vi m ng. c ng khng chch lm c
phn no mc ch .
Ngoi ra ngi ta cn c khi nim c lng hiu qu, c lng vng. Xin xem thm cc
ti liu v thng k nu mun bit chi tit.
chch (bias)
Gi l mt c lng ca , ta c nh ngha chch l:
Bias() = E()
Vi c lng khng chch ta c Bias bng 0.
7

m ng l tp hp cc phn t cn kho st.


Chnh xc l phng sai mu hiu chnh. Vi s lng cc phn t ca mu ln th phng sai v phng
hiu chnh gn bng nhau. Tuy nhin khi chng minh th ngi ta chng minh c phng sai mu hiu
chnh l c lng khng chch (ch khng phi phng sai). Xin xem thm cc ti liu v thng k nu
mun bit chi tit.
8

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

23

CHNG 1. NN TNG
Ngoi ra cn c cc khi nim c lng hiu qu tt nht, c lng nht qun vng,
c th tham kho ti liu [5] Cao Ho Thi, c lng cc tham s thng k.
Sai s bnh phng trung bnh (Mean Squared Error - MSE)
Sai s bnh phng trung bnh ca c lng c nh ngha l:
MSE() = E[ ( )2 ]
Ngi ta chng minh c rng:
MSE() = Var() + [ - E() ]2
Hay
MSE() = Var() + [ Bias() ]2
Nu l c lng khng chch th:
MSE() = Var(),
v Bias() = 0

1.11 Nguyn tc trc giao (Orthogonality principle)


Nguyn tc trc giao c dng nhiu nht trong thit lp c lng tuyn tnh.[6]
Nguyn tc trc giao c dng ti u c lng. N c th c dng tm c
lng c sai s bnh phng trung bnh nh nht (Minimum MSE - MMSE).[6]
Gi x l mt vector ngu nhin9 cha bit s c c lng da trn vector quan st10 y.
Nu c lng x ca x v y c quan h tuyn tnh:
x = Hy + c, vi H l mt ma trn v c l mt vector no .
Khi , nguyn tc trc giao pht biu rng c lng s c sai s bnh phng trung
bnh nh nht (MMSE) khi v ch khi:
E[ ( - x)yT ] = 0, v
E( - x) = 0
9

Nhc li: vector ngu nhin n gin l mt b cc bin ngu nhin. V d ta c th gi ta mt im


trong khng gian 2 chiu l mt vector ngu nhin, v 2 ta x v y ca n c th xem l 2 bin ngu nhin.
10
Vector quan st y l ma trn cng kch thc vi vector ngu nhin x cn tm. V d: vector x cn tm l
mt vector ct 2x1 th vector quan st y cng l vector ct 2x1. N chnh l b d liu m ta dng c
lng x. V d: ta mun c lng vn tc ca mt vt khi bit ta ca n qua thi gian, khi vn tc l
x, ta l vector quan st y.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

24

CHNG 1. NN TNG
Nu x v y c trung bnh (mean, hay kz vng) bng 0 th ch cn iu kin th nht l c
(v iu kin th 2 t ng tha).
Mt cht ghi ch: yT l ma trn chuyn v ca y.

Vy nguyn tc trc giao thc cht l h phng trnh dng tm cc tham s cho mt
hm c lng ( y l H v c) n t ti u (theo ngha c lng ny c sai s bnh
phng trung bnh nh nht MMSE).
Bn c th xem v d v pht biu cho trng hp tng qut ca nguyn tc trc giao
trong ti liu [6] Orthogonality principle Wikipedia.
Nguyn tc ny cng nh hu ht cc ni dung trnh by trong chng ny s c
dng trong xy dng b lc Kalman (Chng 2).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

25

2 Chng

B Lc Kalman
Cc ni dung chnh:

Gii thiu v lc
Gii thiu b lc Kalman
Xy dng b lc Kalman
B lc Kalman trong OpenCV

26

CHNG 2. B LC KALMAN

2.1 Gii thiu v lc


Mt cch tng qut, lc l loi b nhng phn khng quan tm hoc khng c { ngha hoc
nhng phn sai st thu c mt u ra tt hn (theo ngha hp hn vi mong mun,
quan tm ca ta).
V d: Trong x l nh ta c lc lm trn lm mn nh, lc trung v kh nhiu mui
tiu. Trong microphone hoc cc my thu m cng c mt b phn lc loi b tp m.
Hnh thc hn mt cht, gi s ta c trong mt tn hiu X bao gm tn hiu S (signal) ta
quan tm v nhiu N (noise):
X(k) = S(k) + N(k)
Nu ta bit nhiu N dao ng quanh 0 v c gi tr trung bnh bng 0:
N(k) / m = 0, m: s ln quan st N(1), N(2), N(m)
cng tc l N(k) = 0
Vy khi ta c:
X(k) = (S(k) + N(k)) = S(k) + N(k) = S(k)
Nhn theo mt kha cnh no ta loi c nhiu N.
Tuy nhin, trn y ch l mt v d. Trong thc t cc nhiu rt a dng v phc tp nn
rt kh (i khi l khng th) loi b hon ton nhiu. B lc ch lm sch tn hiu n
mt mc no v trong a s trng hp ta cng ch cn c th.

2.2 Gii thiu b lc Kalman


2.2.1 Tng quan
Nm 1960, R.E. Kalman cng b bi bo ni ting v mt gii php quy gii quyt bi
ton lc thng tin ri rc tuyn tnh (discrete data linear filtering).[13] Bi bo c ta A
New Approach to Linear Filtering and Prediction Problems. Khong 50 nm tri qua, b
lc Kalman tr nn ph bin. N xut hin trong rt nhiu ng dng (xem mc 2.2.2) v
bi v vn lc m n gii quyt l mt vn c bn trong rt nhiu lnh vc, nn n c
th vn lun cn c dng nhiu ng dng mi na tng lai (tr khi c mt b lc
hay mt gii php no tt hn ra i).
Mt cch tng qut, b lc Kalman l mt tp hp cc phng trnh ton hc gip ti u
c lng trng thi ca mt h (theo ngha gi tr c on c sai s bnh phng trung
bnh nh nht MMSE) da trn m hnh h thng (system model), gi tr o
(measurement value) v cc hiu bit v nhiu (ca h thng ln php o).
Biu sau y l mt m t hnh thc ca mt b lc ni chung.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

27

CHNG 2. B LC KALMAN

Tn hiu
cn o

Tn hiu
nhiu
Cm bin
(B o)

Tn hiu
lc

Tn hiu
o
B lc

Sai s ca
cm bin

Trong biu trn, b lc Kalman cng nh cc b lc khc s nm vo v tr ca hnh ch


nht B lc. im khc bit ca b lc Kalman l s hiu qu ca n.
Nh phn sau s trnh by, ta s phng trnh ha cc tn hiu: tnh hiu u vo (cn o),
tn hiu nhiu (bao gm sai s cm bin), tn hiu o c v tn hiu u ra.
Ngoi ra b lc Kalman cn cho php thm mt tn hiu iu khin v cng k n nhiu
h thng (do m hnh h thng, khc nhiu ca php o ni trn).

2.2.2 i nt v Rudolf Emil Kalman


Rudolf Emil Kalman sinh nm 1930 ti th Budapest, Hungary. Nm nay (2011) ng
81 tui. ng tt nghip bng c nhn v thc s v Electrical engineering ti hc vin MIT
nm 1953 v 1954. ng nhn bng tin s ti i hc Columbia nm 1957.
Nhng v tr chnh ng ph trch:

Nghin cu ton hc ti RIAS (Research Institute for Advanced Study) ti Baltimore


t 1958 1964.
Gio s ti i hc Standford t 1964-1971.
Gio s nghin cu sau i hc (Graduate Research Professor) v Gim c Center
for Mathematical System Theory, i hc Florida, Gainesville t 1971 1992.
T nm 1973, ng tr thnh thnh vin ca Mathematical System Theory ti ETH
(Swiss Federal Institute of Technology), Zurich.

ng cng nhn nhiu gii thng nh:

Huy chng danh d ca IEEE (1974)


Huy chng Centennial ca IEEE (1984)
Gii thng Kyoto trong cng ngh cao ca t chc Inamori, Nht Bn (1985)
Gii thng Steele ca Hi Ton hc M (American Mathematical Society) (1987)
Gii thng Bellman (1997)

ng cng l vin s ca Vin Hm lm Khoa hc Quc gia (M), Vin Hn lm K thut Quc
gia (National Academy of Engineering) (M) v Vin Hn lm Khoa hc v Ngh thut
(American Academy of Arts and Sciences) (M).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

28

CHNG 2. B LC KALMAN
ng cn l vin s ca cc vin hm lm cc nc khc nh Vin Hn lm Khoa hc
Hungary, Php v Nga. ng cng nhn nhiu bng tin s danh d.[7]

2.2.3 ng dng ca b lc Kalman


Bi v b lc Kalman gii quyt mt vn c bn l lc nhiu v ti u cho cc c lng
nn n c ng dng rt rng ri.
Mt s ng dng c lit k t bi vit Kalman Filter trn Wikipedia [8]:

Li t ng ca my bay (Autopilot)
c lng trng thi sc ca pin (Battery state of charge (SoC) estimation)
Giao din tng tc vi my tnh bng no (Braincomputer interface)
Chaotic signals
nh v chuyn ng (Dynamic positioning)
Cc ng dng trong kinh t, c bit l kinh t v m, time series, v econometrics
H thng dn ng qun tnh (Inertial guidance system)
Theo di bng radar (Radar tracker)
H thng nh v v tinh (Satellite navigation systems)
Speech enhancement
D bo thi tit (Weather forecasting)
H thng nh v (Navigation Systems)
M hnh ha 3 chiu (3D-Modelling)

Vit Nam c mt s ng dng nh:

ng dng lc Kalman trong phn tch bin dng nh cao tng do bc x nhit mt
tri.[9]
Ci thin cht lng truyn ng khng ng b bng cu trc tch knh trc tip
s dng kalman filter quan st t thng.[10]
ng dng Kalman Filter cho d bo nhit 2m t sn phm m hnh HRM.[11]
H thng dn ng qun tnh INS/GPS.[12]

2.2.4 V d dn nhp
Chng ta s xem xt mt v d v c lng sau.
Gi s ta c mt vt th chuyn ng thng u (vn tc khng i) theo phng x no
. Ta cn xc nh v tr ca vt sau thi gian t.
Cc thng tin ta bit l:

Vn tc ca vt khng i: v = 70 m/s.
V tr ban u ca vt x(0) = 0

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

29

CHNG 2. B LC KALMAN
Chng ta cng c mt b phn nh v gn trn vt th cho chng bit v tr x(t) ca vt th
lc t.
Vy l chng ta c 2 cch xc nh v tr vt:
Cch 1: Dng phng trnh ng hc tnh v tr vt
Ta c v tr ca vt ti thi im t l x(t) = x(0) + v.t
Hay vit di dng truy hi l:
1(0) = 0
1(1) = 1(0) + v = v
1(2) = 1(1) + v = 2v

(k hiu 1 c ngha l c lng v tr cch 1)


Cch 2: S dng b phn nh v gn trn vt
Khi cc v tr n gin l gi tr do b phn ny cung cp:
2(0) = z(0)
2(1) = z(1)
2(2) = z(2)

Trong z(k) l gi tr do b phn nh v cung cp ti thi im k.


n y ta thy, nu nh 1(k) = 2(k), vi mi k, th c v nh kt ca tnh ton v gi tr
o c ca b phn nh v l c th tin tng. Tuy nhin, bn s tht vng khi bit rng
ch l cm gic ca bn, cn thc t khng phi vy!
Bi l php tnh ca bn (trong nhng trng hp phc tp) ln gi tr cung cp bi b
phn nh v khng c c s no khng nh l chnh xc vi thc t. Cho d 2 kt qu
ny hon ton trng khp th cng c th ch l ngu nhin.
Mt trng hp khc thng xy ra hn l khi 2 kt qu ny khng ging nhau. Vy bn s
tin tng kt qu no?
Cu hi ny a n mt gii php th 3, l kt hp c 2 kt qu.
Cch 3: Tnh ton kt qu bng cch tng hp 2 phng php
3(k) = . 1(k) + . 2(k)

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

30

CHNG 2. B LC KALMAN
Cch ny nhn c v n. V c th c trng hp 1 chnh xc hn, c trng hp 2 chnh
xc hn, nn s l tt nht nu ty vo trng hp m ta chn (hoc kt hp) kt qu mt
cch thch ng.
Tuy nhin, n y li ny sinh 2 vn mi:
1. v phi chn ra sao c kt qu ti u?
2. V nh ni, v c th s thay i ( ty trng hp m kt hp 2 c
lng cho hp l nht), vy th u s l cn c, tiu chun ta cp nht 2 h s
ny?
n y, b lc Kalman xut hin. 2 vn chng ta va nu chnh l i tng gii quyt
ca b lc Kalman.

2.2.5 M hnh tng qut ca c lng dng b lc Kalman


S khi sau s m t m hnh tng qut ca mt c lng dng b lc Kalman.
Gi tr tnh ton
M hnh h thng
Gi tr c lng
ti u
B lc Kalman

Cm bin
(b o)

Gi tr o

Chng ta c th nh x cc phn trong v d mc 2.2.4 vo s trn nh sau:

M hnh h thng: phng trnh ng hc x(k) = x(k-1) + v.


Cm bin: b nh v gn trn vt.
Gi tr c lng ti u: 3.
B lc Kalman: hp en tnh cc h s v .

Mt c lng thc s s dng b lc Kalman cng bao gm cc phn nh trn.


Nh vy n y chng ta c y cc khi nim cn thit bc vo xy dng b
lc Kalman (thc cht l tm v gii cc phng trnh tnh ton cc tham s cho c
lng ti u).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

31

CHNG 2. B LC KALMAN

2.3 B lc Kalman
2.3.1 Cc k hiu s dng
Mc ny lit k cc k hiu dng trong biu din cc phng trnh qu trnh xy dng cng
nh kt qu ca b lc Kalman. Cc k hiu ny c s dng thng nht trong bo co
ny nhng cc sch v ti liu khc c th c h thng k hiu khc. Bn c th tham
kho vn k hiu ny trong mc 1.3 ON THE NOTATION USED IN THIS BOOK ca ti liu
[14].
K hiu

ngha

Ma trn o nhy c dng xc nh quan h tuyn tnh ca vector trng


thi v vector o.

Ma trn li Kalman

Ma trn hip phng sai ca sai s c lng

Ma trn hip phng sai ca sai s h thng

Ma trn hip phng sai ca sai s o t

Vector trng thi

Vector o (measurement vector)

Ma trn chuyn trng thi


Bng 2.3-1 K hiu chun ca b lc Kalman

K hiu

ngha

Vector trng thi

xk

Phn t th k ca chui cc trng thi x1, x2, x3,

c lng ca x

xk ()

Tin nghim ca c lng xk

xk (+)

Hu nghim ca c lng x ti thi im tk

o hm ca x theo thi gian t


Bng 2.3-2 Cc k hiu lin quan n vector trng thi

K hiu
x

Tn
Vector trng thi h thng

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

Kch thc (hng x ct)


nx1

32

CHNG 2. B LC KALMAN
w

Vector nhiu h thng

rx1

Vector iu khin

rx1

Vector gi tr o t

lx1

Vector nhiu o t

lx1

Vector chuyn trng thi

nxn

Ma trn hip phng sai


nhiu h thng

rxr

Ma trn h s quan h tuyn


tnh

lxn

Ma trn hip phng sai


nhiu o t

lxl

Bng 2.3-3 K hiu v kch thc cc ma trn

Tn
Trng thi h thng
Gi tr o

Biu thc
xk = xk-1 + wk-1
zk = H xk + vk
Bng 2.3-4 Biu thc ca trng thi v gi tr o

2.3.2 Xy dng b lc Kalman11


Theo nh m hnh ca c lng dng b lc Kalman cp trn, trc tin, m
hnh h thng s cho ta mt gi tr gi l c lng tin nghim (c lng cha qua b
lc Kalman). N c tnh bng phng trnh:
xk () = xk-1 (+) + wk-1
trong :

xk () : gi tr tin nghim ti bc k
xk-1 (+): gi tr hu nghim ca bc k-1 (gi tr ti u ca bc trc)

wk-1: nhiu h thng ti bc k-1

11

Phn ny l phn din dch li v gii thch chi tit hn ni dung t mc 4.2 KALMAN FILTER
trong ti liu [14] Mohinder S. Grewal and Angus P. Andrews, KALMAN FILTERING - Theory and
Practice Using MATLAB, third edition, John Wiley & Sons, 2008.
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

33

CHNG 2. B LC KALMAN
Mt ch quan trng: Tt c cc nhiu trong b lc Kalman u c gi nh l tun theo
phn phi chun (Gauss) (xem 1.9, chng 1).
Sau , gi tr tin nghim xk () s i qua b lc Kalman kt hp vi gi tr o (zk) to
ra mt c lng ti u.
C th tm tt qu trnh lm vic ca lc Kalman nh sau:
Tnh tin nghim (t hu nghim bc trc) Lc Hu nghim (c lng ti u)

Ta c phng trnh quan h ca c lng tin nghim v hu nghim:

trong :

xk () : gi tr tin nghim
xk (+) : gi tr hu nghim
K1 v K k : cc ma trn cha bit, K k l li ca b lc Kalman

Theo quy tc trc giao, sai s ca c lng bnh phng trung bnh l nh nht
(MMSE) ta phi c:

Thay xk = xk-1 + wk-1 v biu thc ca xk (+) vo phng trnh th nht ta c:

Tip tc thay zk = H xk + vk vo ta thu c:

S dng cc iu kin sau:

(do vk v z l 2 bin ngu nhin c lp v vk c phn phi chun vi kz vng bng 0 nn ta


c E(v.z) = E(v) x E(z) = 0 x E(z) = 0)
Ta bin i phng trnh trn:

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

34

CHNG 2. B LC KALMAN

Nh vy ta c:

t cc sai s:

Sai s k(+) v k(-) l cc sai s ca c lng ng vi tin nghim v hu nghim. Sai s


k l sai s ca o t.
Tr 2 phng trnh sau:
+ () = 0

(hai phng trnh ny c l v ta mun tha quy tc trc giao)


ta thu c:
+ = 0
Thay xk, k v k vo phng trnh trn ta c:

Lu { l v cc bin ngu nhin w, v c kz vng bng 0 v chng c lp vi x, z nn ta c:

v thay K1 , zk v k(-) vo ta c:

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

35

CHNG 2. B LC KALMAN

Nhc li: ta c theo nh ngha


Cov(XY) = E[( X-x )( Y-y )]
= E(XY) - xy
vi x, y ln lt l kz vng ca 2 bin ngu nhin X v Y.
Vy nu X hoc/v Y c kz vng bng 0 th:
Cov(XY) = E(XY)
T tnh cht trn, ta c ma trn hip phng sai ca sai s ca c lng tin nghim l:
(thc cht P chnh l sai s bnh phng trung bnh MSE)

bi v k(-) l bin ngu nhin c kz vng bng 0.12


Khai trin phng trnh pha trn v th Pk vo ta thu c:

trong : Rk l ma trn hip phng sai ca sai s nhiu o t (cng thu c do kz vng
ca nhiu o t v bng 0)
=
Nh vy ta thu c li ca b lc Kalman:

Tng t, i vi hu nghim ca c lng ta cng c ma trn hip phng sai ca sai s


c lng hu nghim:

Thay biu thc ca K1 tm c trn

12

Chng minh: do l c lng khng chch nn E[k(-)] = E[xk]

Ta c: E[k(-)] = E[k(-)-xk] = E[k(-)] E[xk] = 0


GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

36

CHNG 2. B LC KALMAN
vo phng trnh quan h ca tin nghim v hu nghim:

ta thu c
+ = + ,
+ = + .
Tr 2 v cho xk v thay zk = H xk + vk vo phng trnh trn ta c :

Th biu thc va thu c vo Pk(+) v s dng:

ta c:

Phng trnh ta va thu c gi l dng Joseph (Joseph form) ca phng trnh cp nht
ma trn hip phng sai.
Tip tc khai trin phng trnh ny ta c:

Phng trnh cui cng thng c dng cp nht Pk(+) nht.


Ma trn hip phng sai ca sai s:
Ta c:

Tr 2 v ca phng trnh sau cho xk v th xk = xk-1 + wk-1 vo ta thu c:


GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

37

CHNG 2. B LC KALMAN

Thay biu thc ca sai s c lng tin nghim k(-) va thu c vo Pk(-) v s dng:

ta c:

y chnh l biu thc ca ma trn hip phng sai ca sai s ca c lng tin nghim.

2.3.3 Tm tt cc phng trnh ca b lc Kalman


Trong phn trn chng ta xy dng xong cc phng trnh ca b lc Kalman. Phn ny
s tm tt li cc phng trnh cho vic tra cu khi s dng.
M t

Phng trnh

M hnh h thng

xk = xk-1 + wk-1
wk N(0, Qk)

M hnh o

zk = H xk + vk
vk N(0, Rk)

Gi tr khi to

E(x0)=0
E(x0 xT0 )=P0

Gi thit c lp

E(wk vTj )=0 vi mi k v j

c lng trng thi

() = 1 1 (+)

Ma trn hip phng sai ca sai s

() = 1 1 (+)1
+ 1

Cp nht trng thi

(+) = () + [ ()]

Cp nht ma trn hip phng sai ca sai s

(+) = [ ] ()

Ma trn li Kalman

= () () +

Bng 2.3-5 Tm tt cc phng trnh ca b lc Kalman

V qu trnh lm vic ca b lc Kalman c th tm tt trong hnh sau:


GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

38

CHNG 2. B LC KALMAN

Kt hp gi tr o to c lng ti u
Tnh trng thi t m hnh h thng

(3) Tnh li Kalman:

(1) Cp nht trng thi:

= () () +

() = 1 1 (+) + Buk-1 (iu khin)

(4) Kt hp gi tr o to c lng ti u:

(2) Tnh ma trn hip phng sai ca sai s:


() =

1 1 (+)1

(+) = () + [ ()]

+ 1

(5) Cp nht ma trn hip phng sai sai s:


(+) = [ ] ()

Khi to 1 (+) v 1 (+)


Hnh 2.3-1 Tm tt qu trnh lm vic ca lc Kalman

2.4 B lc Kalman trong OpenCV


thc hin lc Kalman, OpenCV cung cp cho chng ta cc hm sau:

Hm to v hy cu trc CvKalman:

cvCreateKalman(
int
nDynamParams,
int
nMeasureParams,
int
nControlParams
);

//S chiu vector trng thi


//S chiu vector o
//S chiu vector iu khin

cvReleaseKalman(
CvKalman** kalman
);

Cu trc CvKalman cha cc thng tin dng trong b lc Kalman: vector trng
thi, ma trn li (Kalman gain) v cc ma trn lin quan.

typedef struct CvKalman {


int MP;
int DP;
int CP;
CvMat* state_pre;

//
//
//
//
//
//
//

measurement vector dimensions


state vector dimensions
control vector dimensions
predicted state:
x_k = F x_k-1 + B u_k
corrected state:
x_k = x_k + K_k (z_k- H

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

39

CvMat* state_post;
x_k)

CHNG 2. B LC KALMAN
CvMat* transition_matrix;
CvMat* control_matrix;
control)
CvMat* measurement_matrix;
CvMat* process_noise_cov;
CvMat* measurement_noise_cov;
CvMat* error_cov_pre;
CvMat* gain;
+ R)^-1
CvMat* error_cov_post;
CvMat* temp1;
CvMat* temp2;
CvMat* temp3;
CvMat* temp4;
CvMat* temp5;
} CvKalman;

// state transition matrix


//
F
// control matrix
//
B
//
(not used if there is no
//
//
//
//
//
//
//
//
//
//

measurement matrix
H
process noise covariance
Q
measurement noise covariance
R
prior error covariance:
(P_k=F P_k-1 Ft) + Q
Kalman gain matrix:
K_k = P_k H^T (H P_k H^T

// posteriori error covariance


//
P_k = (I - K_k H) P_k
// temporary matrices

Hm tin on trng thi, kt qu ca hm ny l tin nghim state_pre.

cvKalmanPredict(
CvKalman* kalman,
const
CvMat* control = NULL
);

Hm tnh ton ti u cho c lng ca trng thi (kt hp gi tr ca php


o), kt qu ca hm ny l hu nghim stat_post.

cvKalmanCorrect(
CvKalman* kalman,
CvMat*
measured
);

Sau khi thc hin 2 hm trn, chng ta thc hin xong mt chu kz ca b c lng
dng b lc Kalman.
Tm tt lm vic ca b lc Kalman trong OpenCV:
1. Khi to cc tham s v ma trn cn thit (trong cu trc CvKalman):

MP: kch c vector o


DP: kch c vector o
CD: kch c vector iu khin
transition_matrix (F): ma trn chuyn trng thi
control_matrix (B): ma trn iu khin (nu c)
measurement_matrix (H): ma trn o

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

40

CHNG 2. B LC KALMAN

process_noise_cov (Q): ma trn hip phng sai ca nhiu


h thng
measurement_noise_cov (R): ma trn hip phng sai ca
nhiu o

l cc tham s bt bin. Ngoi ra ta cn phi khi to trng thi ban u cho h thng:

state_post (x_k+): hu nghim (coi nh trng thi u tin),


c th khi to ngu nhin.
error_cov_post (P_k+): ma trn hip phng sai ca sai s hu
nghim (coi nh sai s ca trng thi u tin)

2. Sau khi cc thng s trn c khi to ta gi hm


x_k- = cvKalmanPredict( cautrucCvKalman, vectordieukhien )

ly v trng thi tin nghim. Tham s vectordieukhien bng 0 nu khng c iu


khin.
Khi gi cvKalmanPredict, trng thi tin nghim s c tnh bng cch ly hu nghim
ca bc trc nhn vi ma trn chuyn trng thi cng vi ma trn iu khin (nu c):
x_k- = F* x_k-1- + B*vectordieukhien
3. Sau ta ly gi tr o z_k v gi tip hm cvKalmanCorrect ly hu nghim:
x_k+ = cvKalmanCorrect(cautrucCvKalman, z_k)

Khi gi hm cvKalmanCorrect, cc thng s: li K_k, trng thi hu nghim x_k+ v


ma trn hip phng sai ca sai s hu nghim P_k+ v s c tnh.
Nh vy, s dng b lc Kalman trong OpenCV c th tm tt trong lc sau:
Khi to Lp
[ Gi cvKalmanPredict Cung cp gi tr o Gi cvKalmanCorrect ]

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

41

3 Chng

Pht Hin Vt Th
Da Trn Mu Sc
Cc ni dung chnh:

H mu HSV
Cc moment ca nh
Thut ton pht hin vt th da trn
mu sc
Ci t thut ton vi OpenCV

42

CHNG 3. PHT HIN VT TH DA TRN MU SC

3.1 H mu HSV
3.1.1 nh ngha
C nhiu h mu khc nhau dng biu din mu sc trong my tnh. Trong s thng
dng l h mu RGB (trong mt s mn hnh LCD th dng BGR, y ch l s thay i v tr
3 mu c bn).
Trong m thut ngi ta thng dng mu HSV (hay cn c tn HSB) hoc HSL v cc h
mu ny trc quan, d cm nhn. Trong mc ny ta s trnh by v h mu HSV.
H mu HSV c Alvey Ray Smith a ra nm 1978.

Hnh 3.1-1 Hnh nn ngc biu din h mu HSV

Hnh trn bn di y l mt mt ct ngang biu din H v S.

Hnh 3.1-2 Hnh trn biu din cc sc mu (H: 0-360) v bo ha (S: 0-1).
Mu : H=0, mu xanh l: H=120, mu xanh dng: H=240

H mu HSV c 3 tham s:

H (hue) (0-360): sc mu. V d mu c H = 0, mu vng c H = 60.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

43

CHNG 3. PHT HIN VT TH DA TRN MU SC

S (saturation) (0-1): bo ha. Ch ra mc thun ca mu, mu c S cng ln


th cng r, ngc li th cng m. Ti S=0 sc mu khng cn gi tr, mi H u
ch cho mu xm hoc trng.
V (value, c ni ghi B: Brightness) (0-1): pht sng. l cng nh sng m
t i tng pht ra ch khng phi do phn x t cc ngun sng khc.

H mu HSV ny c biu din bi mt hnh nn ngc (Hnh 3.1-1).


Trong H (mu sc) c biu din bng gc quay quanh trc ng ca hnh nn, v vy
H c gi tr 0-360o, vi:

Mu c H = 0o
Mu xanh l c H = 120o
Mu xanh dng c H = 240o

S l khong cch t trc hnh nn ti im xt mu. S c gi tr thc nm trong on 0-1.


Ti trc: S = 0, ti vnh ngoi cng: S = 1. Ta c th quan st thy mu ca S cng r khi
cng nm gn vnh (S>0). Vi S = 0 th H khng cn { ngha, nh trong hnh, ti trc ca
hnh nn ch c mu xm v trng.
pht sng V (hay B) l khong cch t nh di ca hnh nn (v hnh nn b lt ngc)
ti mt ct ngang hnh nn cha im xt mu. Ti nh (bn di) ca hnh nn, V c gi
tr l 0, ti l mu en (khng c nh sng). V = 1 ti tm ca mt y pha trn, ti l
mu trng (H: khng xc nh, S=0, V= 1).
Mt tnh cht quan trng ca h mu HSV l cc mu c c trng bng sc (H). Tc
l mt vt th c mt mu nht nh th H ca n thay i rt t trong cc sng khc
nhau ca mi trng. Ngha l, v d, mt vt th c mu vng vi H = 32. 3 th khi mi
trng thay i sng, ch c gi tr S v V ca n (mu ca vt th) l thay i, cn H ch
dao ng trong khong 32.3 6. y l tnh cht khin ta chn HSV lm h mu cho
nh mun phn ngng (mc 3.3).

3.1.2 Chuyn t mu RGB sang HSV


Nh mc trn va trnh by, trong l thuyt ca h mu HSV th:

H: Sc mu [0-360] vi mu ti im 0
S: bo ha [0-1]
V: Gi tr cng sng [0-1]

Nhng trong OpenCV, HSV c lu ging nh RGB, tc 1 byte cho mt gi tr H, S v V,


nn khong c gi tr 0-255.
Bi v H c gi tr ln hn 255 nn n c lu l H/2, v d: H = 240 (mu xang dng)
th OpenCV lu H = 240/2 = 120. Cn S v V th c gin thnh 0-255 (s nguyn) tng

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

44

CHNG 3. PHT HIN VT TH DA TRN MU SC


ng cho khong 0-1 (s thc). y l mt lu { quan trng biu din mu HSV trong
OpenCV.
Thut ton Chuyn t mu RGB sang HSV:
(Thut ton ny tnh ton trn l thuyt. Sau khi c c gi tr trn l thuyt (Hl, Sl, Vl)
(vi Hl: 0-360, Sl: 0-1, Vl: 0-1) ta chuyn v gi tr c lu bi OpenCV: H=Hl/2, S = Sl*255,
V = Vl*255)
t:
M = max (R, G, B)
m = min (R, G, B)
C=Mm

Gi tr H:
,

H = 60 *

6,

+ 2,

+ 4,

Gi tr S =

0,

= 0

= 0

Gi tr V = M/255

Thut ton hon thnh.


Ch : mod l php chia ly d trn S THC (nh hm MOD trong MS Excel hoc mod
trn http://www.wolframalpha.com).
Ni thm: vy trong ti ca chng ta, ly c khong ngng ti u ta lm nh
sau:

Chp mt hnh cha vt th.


Pick mt mu ra (dng MS Paint hoc phn mm rgbhsv)
Tnh H, S, V theo thut ton trn (nh i sang dng ca OpenCV sau khi tnh (H: 0180))

Ch :

Nht thit phi tnh H theo thut ton trn, ch H t cc chng trnh hoc code
khc l khng ng.
H th thng bin thin rt t i vi mt mu, ta ch cn +, - 3 vo H tnh l c
khong ti u.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

45

CHNG 3. PHT HIN VT TH DA TRN MU SC

Cn S, V th chng trnh rgbhsv tnh ng, c th dng tra khong bin thin
ca 2 i lng ny cho thun tin.

V d: ta c mu vi gi tr RGB = (195, 125, 43) (mu vng hi ti nu).


Ta tnh:

M = 195 (R)
m = 43
C = M-m = 152

Gi tr H:

(G-B)/C = 0.5395
0.5395 mod 6 = 0.5395
0.5395*60 = 32.37o (gi tr l thuyt)
Gi tr lu trong OpenCV l: H = 32.37 / 2 = 16

Gi tr S:

C/M = 0.7795 (gi tr l thuyt)


Gi tr lu trong OpenCV l: S = 0.7795*255 = 198

Gi tr V:

M/255 = 0.7647
Gi tr lu trong OpenCV l: V = 0.7647*255 = 195

3.2 Moment ca nh (image moment)


Moment 2 chiu ca bc (p+q) ca mt nh f(x, y) c kch thc MxN c nh ngha l:
Mpq =

1
=0

1
=0 (, )

trong p=0, 1, 2, v q=0, 1, 2, l s nguyn.


Mt s tnh cht nh n gin c c trng bi moment nh l:

Din tch (cho nh nh phn13) hoc tng mc xm (i vi nh xm14): M00.


Tm nh: {xc, yc} = {M10/ M00, M01/ M00}

2 tnh cht trn ca moment s c dng trong phn pht hin i tng theo mu sc.

3.3 Thut ton pht hin i tng theo mu sc


T nhng kin thc trnh by trong cc phn trn, ta c th xy dng mt thut ton pht
hin i tng theo mu sc n gin nh sau:
13
14

nh nh phn: l nh c mu trng (f = 255) v en (f = 0).


nh xm: nh c mc xm f=0..255.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

46

CHNG 3. PHT HIN VT TH DA TRN MU SC


(1) Chuyn t nh RGB (hoc cc h mu khc) v HSV.
(2) Thc hin phn ngng nh: to nh nh phn t nh HSV vi ngng trn v di
thch hp (tham kho cch ly ngng trong mc 3.1.2). Cc im nh nm trong
khong ngng trn v ngng di s c gi tr 1 (trng), cn cc im cn li s
c gi tr 0 (en).
(3) Lm mn nh phn ngng loi b cc im nhiu (c th dng lc trung v).
(4) Tnh ton cc moment M00, M10 v M01 ly tm ca vt th (xc, yc) = (M10/ M00,
M01/ M00).
Thut ton hon thnh.
C mt s im cn lu { trong thut ton trn:

H mu c chn bc 1 phi l HSV. C mt h mu tng t c dng


trong nhiu h thng l HSL. Mc d 2 h mu ny da trn cng mt { tng v
Sc mu, bo ha v sng, nhng chng c nhng khc bit khin cho h
mu HSL khng phi l ng vin tt nht cho phn ngng nh theo mu (sc ).
Khi ly cc gi tr ngng, nu tm c mt ngng (mt mu) c trong h RGB ta
phi chuyn n v h HSV theo theo thut ton trnh by mc 3.1.2. C nhiu
chng trnh (v c code) chuyn t mu RGB sang HSV nhng chng khng chnh
xc v iu ny dn ti tht bi trong vic phn ngng nh. Ngoi ra ta cng phi
lu cch biu din mu HSV trong OpenCV l HSV = (0-180, 0-255, 0-255) a
gi tr vo chng trnh cho ng.
im lu { sau cng l v bc (3). Trong thc t ci t, nu ta tin hnh lm mn
nh (kh nhiu) s nh hng rt nhiu ti hiu nng ca chng trnh (chng
trnh s chm i r rt). Bn cnh vic ny cng khng cn thit lm chng
trnh ca chng ta bi v mu ca vt th m ta chn kh khc bit vi mi trng,
nn nu ta chn ngng tt th hu nh nh sau phn ngng s khng c nhiu15.
Cho nn gii php y (cho phn ci t) l b qua bc 3. Thay vo , n
gin ta ch dng mt cu lnh iu kin:
nu (M00 < din_tch_min) th quay li bc (1)

Cu lnh trn c ngha l nu din tch ca vt th (M00) nh hn mt gi tr no


(din_tch_min) th ta b qua vic tnh ta tm, xem nh l mt nhiu ch khng
phi vt th (v vt th ca ta lun c kch thc ln hn din_tch_min ny).

3.4 Ci t thut ton pht hin vt th da theo mu sc vi


OpenCV
Trong OpenCV c h tr chng ta cc hm dng cho thut ton pht hin vt th theo mu
sc va trnh by.
15

Nhiu y l cc im nh khng thuc v vt th ta quan tm m vn lt c vo vng phn ngng.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

47

CHNG 3. PHT HIN VT TH DA TRN MU SC


Hm cvCvtColor
void cvCvtColor(
const CvArr* src,
CvArr*
dst,
int
code
);

Hm ny dng chuyn nh t mt h mu ny sang h mu khc. Trong src l nh


ngun, dst l nh u ra, v code l m chuyn. Mt s code thng dng:

CV_BGR2RGB: chuyn t BGR sang RGB


CV_RGB2BGR: chuyn t RGB sang BGR
CV_RGB2RGBA: thm tham s Alpha cho h mu RGB
CV_BGR2BGRA: thm tham s Alpha cho h mu BGR
CV_BGR2HSV: chuyn t BGR sang HSV (ta dng m ny trong chng trnh)

Hm cvInRangeS
void cvInRangeS(
const CvArr*
CvScalar
CvScalar
CvArr*
);

src,
lower,
upper,
dst

Hm ny to ra nh phn ngng. Trong , src l nh ngun v dst l nh u ra. lower


v upper l 2 ngng ca ta, n c dng l mt 3 gi tr (H, S, V).
Hm cvMoments
void cvMoments(
const CvArr* image,
CvMoments*
moments,
int
isBinary = 0
);

Hm ny thc hin tnh ton cc moment ca nh, trong image l nh cn tnh moment
v moments l mt bin cu trc cha cc moment ca nh.
typedef struct CvMoments {
// spatial moments
double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;
// central moments
double mu20, mu11, mu02, mu30, mu21, mu12, mu03;
// m00 != 0 ? 1/sqrt(m00) : 0
double inv_sqrt_m00;
} CvMoments;

Bng vic s dng cc hm trn chng ta c th d dng ci t thut ton pht hin vt
th da trn mu. Code c th cho phn ny s c trnh by trong chng 4.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

48

4 Chng

Thit K V Ci t
Chng Trnh Pht Hin Di ng
Cc ni dung chnh:

Thit k chng trnh: M hnh h


thng v B o.
Ci t: Hot ng ca chng trnh
v Cc on m quan trng.

49

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

4.1 Thit k
4.1.1 M hnh h thng
Nh trnh by trong chng 2, cc c lng s dng b lc Kalman phi gm 2 phn:
M hnh h thng (tnh ton gi tr c lng cho trng thi h thng) v Cm bin (ly gi
tr o thc t ca trng thi). Trong mc ny chng s trnh by v m hnh ca h thng.
Mc ch ca chng ta l xy dng mt m hnh theo di vt th chuyn ng, nh vy
chng ta c th m hnh h thng nh sau:
4.1.1.1 Vector trng thi

Vector trng thi l mt vector ct cha 4 thnh phn:

xk =

Trong x, y l ta ca vt th, vx, vy l vn tc theo phng x v y. y chng ta xem


vt th c mt chuyn ng vi vn tc khng i nn ta c ma trn chuyn trng thi nh
sau:
1
0
=
0
0

0
1
0
0

1
0
1
0

0
1
0
1

Nu ly ma trn chuyn trng thi nhn vi vector trng thi ta s c trng thi bc
sau:
1
0
xk+1 = xk =
0
0

0
1
0
0

1
0
1
0

0
1
0
1

+
=

Tc l ta c xk+1 = xk + vx v yk+1 = yk + vy.


4.1.1.2 Nhiu h thng

Bi v vector trng thi c kch thc 4x1 nn vector nhiu h thng wk cng phi cng kch
thc 4x1. Do ma trn hip phng sai ca nhiu h thng Q l mt ma trn 4x4:
103
Q= 0
0
0

0
103
0
0

0
0
103
0

0
0
0
103

N l mt ma trn ch c cc phn t trn ng cho chnh (ch s hng = ch s ct) khc


khng, bi v ta gi thit rng nhiu ca cc gi tr khc nhau l c lp thng k. V d
nhiu ca x v y l c lp thng k nn Cov(x, y) = 0. i vi cc gi tr trn ng cho
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

50

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


chnh, l phng sai ca bin ngu nhin , v d: phn t 0, 016 chnh l Var(X). Cc
gi tr ny th hin ln ca khong gi tr ca nhiu (hay ni cch khc chnh l ln
ca nhiu). Nh ta bit, b lc Kalman gi nh cc nhiu c phn phi chun vi kz
vng bng 0 (hm mt i xng qua trc Oy), v vy, nu phng sai (hay lch
chun) cng ln th cc gi tr x ln s c xc sut cao hn. Ngc li, nu phng sai cng
nh th cc gi tr cng tp trung quanh gi tr kz vng ( y l 0), cc im x c gi tr ln
s c xc sut gn bng 0.
Nh vy, tm li, nu ta mun (hay ngh rng) nhiu c gi tr ln th cho phng sai (cc
gi tr trn ng cho) ln v ngc li.

Biu 4.1-1 Mt s phn phi Gauss,


vi phng sai 2 cng ln th cc gi tr x c gi tr ln (xa k vng) s c xc sut cao hn

4.1.1.3 Vector o

Mc d vector trng thi c 4 thnh phn, nhng cc gi tr ta c on ch c 2, l ta


x v y. V vy vector o zk ca chng ta cng ch c 2 thnh phn x, y:

zk =
Bi v vector trng thi c kch thc 4x1, vector o c kch thc 2x1 nn ma trn o H
(th hin quan h tuyn tnh gia x v z) s c kch thc 2x4: (2x1) = (2x4)(4x1)

16

Ch s hng v ct trong OpenCV bt u t 0 (nh mng trong C++).

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

51

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


H=

1
0

0 0
1 0

0
0

Ma trn H trn th hin ng quan h ca x v z, bi v x v z u l cc ta :

1 0 0 0
zk = Hxk =
=

0 1 0 0

Ni thm v ma trn o: Ma trn o l ma trn th hin quan h tuyn tnh gia trng thi
v gi tr o. Xem li V d dn nhp mc 2.2.4, chng 2, ta c b phn nh v tr v ta
nn gi tr o c quan h vi trng thi quan tm x - ta ca vt th, l:
z = a.x, a l h s tuyn tnh (m y l ma trn H)
Trong trng hp khc, nu ta khng c b phn nh v tr v ta m c ng h vn
tc tr v vn tc, th khi vector o z l vn tc v d nhin n khng bng x. Gia z v x
khi s c mt h s tuyn tnh a khc. Chng hn trong chuyn ng u th:
z = (1/t) * x, a = (1/t), t l thi gian tnh t lc x = 0.
Nh vy, ta li c thm mt lu { na, h s a (hay y l ma trn H) c th thay i
theo thi gian.Tuy nhin trong trng hp ca chng ta th n phi l khng i.
4.1.1.4 Nhiu o

Bi v vector o c kch thc 2x1 nn vector nhiu o wk cng c kch thc l 2x1, do
ma trn hip phng sai ca nhiu o R s l ma trn c kch thc 2x2.
4
R = 10
0

0
104

Nh trong mc 4.1.2 ni, cc gi tr khng nm trn trn ng cho s bng 0 bi v


nhiu ca cc thnh phn khc nhau l c lp nhau.
Cc gi tr trn ng cho chnh cng ln th nhiu c th cng ln. y ta cho nhiu
cng nh chng t ta cng tin tng php o (nhiu y c th coi l sai s ca php
o).

4.1.2 B o
B o cho ra gi tr ca vector o z y chnh l hm pht hin vt th da trn mu sc
vit theo thut ton trnh by trong chng 3. u ra ca hm ny l ta tm ca vt
th quan tm.
Ngoi ra cn c 2 gi tr cn khi to l:

Hu nghim ca bc 0: ta khi to vi gi tr ngu nhin.


Ma trn hip phng sai sai s hu nghim bc 0: khi to l ma trn n v.

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

52

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

4.2 Ci t
Chng trnh vit cho n ny s dng th vin OpenCV 2.1 (xem cch ci t v thit
lp trong phn Ph lc) vi ngn ng lp trnh C++, CLR Windows Forms Application
project, IDE Visual Studio 2008.

4.2.1 Hot ng ca chng trnh


Chng trnh c 3 form chnh: Ca s iu khin, Camera v Khung nhn.

Ca s iu khin: form ny th hin cc chc nng ca chng trnh:


Theo di (mc nh): theo di v tr ca vt th c mu quan tm (vng v
hng).
V: v cc ng theo di chuyn ca vt th.
iu khin: di chuyn, zoom mt nh theo chuyn ng v s xut hin ca
cc vt th.
Thot: dng v thot chng trnh.
Gii thiu: hin ca s thng tin v chng trnh.

Hnh 4.2-1 Ca s iu khin

Camera: l ca s ghi hnh, n hin hnh thu t camera cng nh kt qu ca chc


nng v v theo di.

Hnh 4.2-2 Ca s camera hin kt qu ca chc nng theo di

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

53

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

Hnh 4.2-3 Ca s camera hin kt qu ca chc nng v

Khung nhn: ni hin th kt qu ca chc nng v v iu khin nh.

Hnh 4.2-4 nh kt qu ca thao tc v qua camera trn Khung nhn

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

54

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

Hnh 4.2-5 Zoom nh bng cch iu khin cc vt th

Hnh 4.2-6 Kt qu ca vic zoom nh trong Khung nhn

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

55

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

4.2.2 Cc on m chnh
Phn ny s ghi li code v gii thch km theo ca mt s hm quan trng.
4.2.2.1 Hm StartCamera_MotionTracking

Hm ny s ly tng frame nh v gi cc hm khc x l{, sau n th hin kt qu.


public: void StartCamera_MotionTracking()
{
/*
Ta s tin hnh detect vt th da trn mu (color
based tracking)
Sau dng b lc Kalman to ra kt qu ti u
theo Gi tr o, m hnh h thng v nhiu
*/
static CvScalar mauVang =
static CvScalar mauHong =

CV_RGB(255,255,0);
CV_RGB(255,0,225);

//Khi to capture cho camera


CvCapture* capture;
capture = cvCreateCameraCapture(0);
//Nu khng c camera th thot chng trnh
assert( capture != NULL );
//Ly tng frame v x l
//To nh cha ng v qu o ca vt th (t
vic bt mu, cha lc Kalman)
IplImage* imgScribbleYellow = NULL;
IplImage* imgScribblePink = NULL;
//nh cha 2 qu o v
IplImage* imgYellowAndPink = NULL;
//to nh cha frame ly t camera
IplImage* frame = NULL;
//ly ra mt frame t camera
frame = cvQueryFrame( capture );
if( !frame ) return;
//v khi to cc nh cng kch thc vi frame
imgScribbleYellow =
cvCreateImage(cvGetSize(frame), IPL_DEPTH_8U, 3);
imgScribblePink = cvCreateImage(cvGetSize(frame),
IPL_DEPTH_8U, 3);
imgKalmanYellow = cvCreateImage(cvGetSize(frame),
IPL_DEPTH_8U, 3);
imgKalmanPink = cvCreateImage(cvGetSize(frame),
IPL_DEPTH_8U, 3);
imgYellowAndPink = cvCreateImage(cvGetSize(frame),
IPL_DEPTH_8U, 3);
//Khi to tt c phn t v 0
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

56

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


cvZero(imgScribbleYellow);
cvZero(imgScribblePink);
cvZero(imgKalmanYellow);
cvZero(imgKalmanPink);
cvZero(imgYellowAndPink);
//Khai bo nh phn ngng mu vng v mu hng
IplImage* imgYellowThresh = NULL;
IplImage* imgPinkThresh = NULL;
//Khai
static
static
static
static

bo
int
int
int
int

cc bin cha v tr ca vt th
posXYellow, XYellow_Kalman;
posYYellow, YYellow_Kalman;
posXPink, XPink_Kalman;
posYPink, YPink_Kalman;

//v v tr trc (trong frame trc)


int lastXYellow, lastYYellow, lastXPink,lastYPink;
int XYellow_Kalman_last, YYellow_Kalman_last;
int XPink_Kalman_last, YPink_Kalman_last;
//Cc ngng mu cn thit (h mu HSV)
//TT NHT MU VNG:
//MU VNG: H = 17.4
//MU HNG: H = 168.5
//New: nh sng nhiu (1/1/2011)
//MU VNG: H = 12.1
//MU HNG: H = 166.6
//Ti u c
//CvScalar yellowLower =cvScalar(14, 150, 130),
yellowUpper=cvScalar(20, 250, 240);
//CvScalar pinkLower =cvScalar(166, 150, 150),
pinkUpper=cvScalar(171, 255, 235);
//Ti u mi:
//CH : KHNG GIM H THP QU (Vng: ko di 14).
//v KHNG M KHONG S,V RNG QU, v s trng mu
da v cc vt khc
//TT NHT MU VNG:
CvScalar yellowLower =cvScalar(11, 130, 150),
yellowUpper=cvScalar(20, 240, 255);
//TT NHT MU HNG:
CvScalar pinkLower =cvScalar(165, 150, 150),
pinkUpper=cvScalar(171, 255, 250);
//ngng S v V nh sau (rng qu) ko tt bng.
(xem phin bn 0.4)
//Th vi gi tr scale to 255 (ch khng chia 2)
: KHNG chnh xc. (xem phin bn 0.4)
//=>(QUAN TRNG) Kt lun: H: tnh bng mod v
chia 2 l chnh xc (nh wiki)
//
S, V: ly
nh bn ngoi dng chng trnh RGB to HSV (chnh xc nht)
//Mu XANH DUONG (test)
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

57

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


//CvScalar pinkLower =cvScalar(100, 100,50),
pinkUpper=cvScalar(140, 240, 150);
//tm vt th
CvPoint yellowCenter , pinkCenter;
//bin bool ch nh c gi tr mi hay ko (c
pht hin vt th trong frame mi ko)
bool
coGiaTriMoiYellow=false,coGiaTriMoiPink=false;
//Khi to cu trc CvKalman
CvKalman* kalmanYellow;
KhoiTaoKalman(kalmanYellow);
CvKalman* kalmanPink;
KhoiTaoKalman(kalmanPink);
//Vector o : vector ct 2x1: cha ta x v y
CvMat* vectorDo_z_k =cvCreateMat( 2, 1, CV_32FC1
);
cvZero( vectorDo_z_k );
const CvMat* trangThaiPre_UocDoan;
const CvMat* trangThaiPost_ToiUu;
/*Bt u vng lp ly tng frame t camera v x
l*/
while(tiepTuc)
{
//ly mt frame x l
frame = cvQueryFrame( capture );
if( !frame ) break;
//Lt ngc frame li (nh gng)
cvFlip(frame,0 ,1);
/*X l bt i tng chuyn ng da trn
mu sc*/
//To nh phn ngng mu vng v hng
imgYellowThresh =
TaoAnhPhanNguong(frame,yellowLower,yellowUpper);
imgPinkThresh=
TaoAnhPhanNguong(frame,pinkLower, pinkUpper);
//lm trn lc nhiu
//HM NY LM CHM CHNG TRNH NG K
//cvSmooth(imgYellowThresh,imgYellowThresh,CV_MEDIAN,5,0,0,0);
//Ly ta tm
yellowCenter=
LayToaDoTamVatThe(imgYellowThresh,coGiaTriMoiYellow);
pinkCenter=
LayToaDoTamVatThe(imgPinkThresh,coGiaTriMoiPink);
//lu li v tr trong frame trc
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

58

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


lastXYellow = posXYellow;
lastYYellow = posYYellow;
lastXPink = posXPink;
lastYPink = posYPink;
XYellow_Kalman_last
YYellow_Kalman_last
XPink_Kalman_last =
YPink_Kalman_last =

= XYellow_Kalman;
= YYellow_Kalman;
XPink_Kalman;
YPink_Kalman;

//Cp nht v tr mi
if(coGiaTriMoiYellow)
{
posXYellow = yellowCenter.x;
posYYellow = yellowCenter.y;
//Cp nht gi tr cho vector
vectorDo_z_k
//hng 0, ct 0
cvSetReal2D(vectorDo_z_k,
0,0,posXYellow);
//hng 1, ct 0
cvSetReal2D(vectorDo_z_k,
1,0,posYYellow);
/*Thc hin lc Kalman y*/
LocKalman(kalmanYellow, vectorDo_z_k,
trangThaiPre_UocDoan, trangThaiPost_ToiUu);
//Ly gi tr mi ti u
XYellow_Kalman=
cvGetReal2D(trangThaiPost_ToiUu,0,0);
YYellow_Kalman=
cvGetReal2D(trangThaiPost_ToiUu,1,0);
}
if(coGiaTriMoiPink)
{
posXPink = pinkCenter.x;
posYPink = pinkCenter.y;
//Cp nht gi tr cho vector
vectorDo_z_k
//hng 0, ct 0
cvSetReal2D(vectorDo_z_k,
0,0,posXPink);
//hng 1, ct 0
cvSetReal2D(vectorDo_z_k,
1,0,posYPink);
/*Thc hin lc Kalman y*/
LocKalman(kalmanPink, vectorDo_z_k,
trangThaiPre_UocDoan, trangThaiPost_ToiUu);
//Ly gi tr mi ti u
XPink_Kalman=
cvGetReal2D(trangThaiPost_ToiUu,0,0);
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

59

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


YPink_Kalman=
cvGetReal2D(trangThaiPost_ToiUu,1,0);
}
//v ng ni 2 v tr ca ca vt th
//CH : Kim tra cc ta u >0 (vt th
c pht hin) mi v
//if(lastXYellow>0 && lastYYellow>0 &&
posXYellow>0 && posYYellow>0)
//{
// cvLine(imgScribbleYellow,
cvPoint(posXYellow, posYYellow), cvPoint(lastXYellow, lastYYellow),
CV_RGB(0,0,255), 1);
//}
//if(lastXPink>0 && lastYPink>0 &&
posXPink>0 && posYPink>0)
//{
// cvLine(imgScribblePink, cvPoint(posXPink,
posYPink), cvPoint(lastXPink, lastYPink), CV_RGB(255,0,0), 1);
//}
//
if(dangTheoDoi)
{
//Kim tra c ta ln hn 0 (detect
c vt th) mi v
if(yellowCenter.x > 0)
{
VeHinhVuongTracking(frame,
XYellow_Kalman, YYellow_Kalman, mauVang);
}
if(pinkCenter.x > 0)
{
VeHinhVuongTracking(frame,
XPink_Kalman, YPink_Kalman, mauHong);
}
}
if(dangVe)
{
//v ng thng ni v tr detect
frame trc v v tr hin ti
if(XYellow_Kalman_last>0 &&
YYellow_Kalman_last>0 && XYellow_Kalman>0 && YYellow_Kalman>0 )
{
cvLine(imgKalmanYellow,
cvPoint(XYellow_Kalman, YYellow_Kalman), cvPoint(XYellow_Kalman_last,
YYellow_Kalman_last), mauVang, 3, CV_AA);
}
if(XPink_Kalman_last>0 &&
YPink_Kalman_last>0 && XPink_Kalman>0 && YPink_Kalman>0 )
{
cvLine(imgKalmanPink,
cvPoint(XPink_Kalman, YPink_Kalman), cvPoint(XPink_Kalman_last,
YPink_Kalman_last), mauHong, 3, CV_AA);
}

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

60

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG

frame);
mu thi)

//thm nh qu o va v vo frame
//cvAdd(frame, imgScribbleYellow,
//nh qu o cha qua lc Kalman (mi detect da trn
//cvAdd(frame, imgScribblePink,

frame);
cvAdd(frame, imgKalmanYellow, frame);
cvAdd(frame, imgKalmanPink, frame);
//cng 2 nh qu o vng v hng
v ra ca s quan st
cvAdd(imgKalmanYellow,imgKalmanPink,imgYellowAndPink);
//V ln khung nhn PictureForm
pictureForm>SetImage(imgYellowAndPink);
pictureForm->VeLenPictureBox();
}
if(dangDieuKhien)
{
//Nu tm thy ng thi 2 vt th, v
c nh t file vo xong th
//ta tin hnh zoom v xoay nh
if(yellowCenter.x > 0 && pinkCenter.x
> 0 && imgForControl_AnhGoc != NULL)
{
imgForControl_BienDoi =
ZoomAnh(imgForControl_AnhGoc, XYellow_Kalman_last, YYellow_Kalman_last,
XYellow_Kalman, YYellow_Kalman,
XPink_Kalman_last,
YPink_Kalman_last, XPink_Kalman, YPink_Kalman );
//V ng ni 2 vt th cho
bit
VeDuongNoi2VatThe(frame,
XYellow_Kalman, YYellow_Kalman, XPink_Kalman, YPink_Kalman);
//V ln khung nhn PictureForm
pictureForm>SetImage(imgForControl_BienDoi);
pictureForm->VeLenPictureBox();
}
//Nu ch thy mt vt th ta tin
hnh di chuyn nh
else if( (yellowCenter.x > 0 ||
pinkCenter.x > 0) && imgForControl_AnhGoc != NULL)
{
if(yellowCenter.x > 0)
{
imgForControl_BienDoi =
DiChuyenAnh(XYellow_Kalman_last, YYellow_Kalman_last, XYellow_Kalman,
YYellow_Kalman);
VeHinhVuongTracking(frame,
XYellow_Kalman, YYellow_Kalman, CV_RGB(0,0,255));
}
else
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

61

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


{
imgForControl_BienDoi =
DiChuyenAnh(XPink_Kalman_last, YPink_Kalman_last, XPink_Kalman,
YPink_Kalman);
VeHinhVuongTracking(frame,
XPink_Kalman, YPink_Kalman, CV_RGB(0,0,255));
}
//V ln khung nhn PictureForm
pictureForm>SetImage(imgForControl_BienDoi);
pictureForm->VeLenPictureBox();
}
}
//Hin nh threshold (mc ch debug)
//DrawCvImage(imgYellowThresh,pictureBoxCam);
//Hin nh ra
DrawCvImage(frame,pictureBoxCam);
//Ht vng lp
}
//Gii phng b nh: Xa nh, ma trn
cvReleaseImage(&imgScribbleYellow);
cvReleaseImage(&imgScribblePink);
cvReleaseImage(&imgYellowThresh);
cvReleaseImage(&imgPinkThresh);
cvReleaseImage(&imgYellowAndPink);
cvReleaseMat(&vectorDo_z_k);
cvReleaseKalman(&kalmanYellow);
cvReleaseKalman(&kalmanPink);
//frame ko th release (c li)
//cvReleaseImage(&frame);
//Xa capture, chng trnh khc c th dng
cvReleaseCapture( &capture );
}

4.2.2.2 Hm TaoAnhPhanNguong

Hm ny c chc nng to ra mt nh phn ngng vi cc ngng di v ngng trn


l cc tham s lowerGrade v upperGrade.
public: IplImage* TaoAnhPhanNguong(IplImage* img, CvScalar lowerGrade,
CvScalar upperGrade)
{
//H mu ca nh t camera l BGR
//Chuyn nh t BGR thnh HSV
IplImage* imgHSV = cvCreateImage(cvGetSize(img),
8, 3);
cvCvtColor(img, imgHSV, CV_BGR2HSV);
//Khai bo nh phn ngng
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

62

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


IplImage* imgThreshed =
cvCreateImage(cvGetSize(img), 8, 1);
//Phn ngng nh
cvInRangeS(imgHSV, lowerGrade, upperGrade,
imgThreshed);
cvReleaseImage(&imgHSV);
return imgThreshed;
}

4.2.2.3 Hm LayToaDoTamVatThe

Hm ny thc hin tnh cc moment ca nh phn ngng v ly ra ta tm vt th.


u ra ca n chnh l vector o zk ca chng ta.
public: CvPoint LayToaDoTamVatThe(IplImage* imgThresh,bool &coGiaTriMoi)
{
//Khai bo bin kiu cu trc CvMoment cha cc
moment ca nh
CvMoments *moments =
(CvMoments*)malloc(sizeof(CvMoments));
//Khai bo cc bin cha cc gi tr moment ca
nh
double area, moment10, moment01;
//Tnh ton cc moment cn thit
cvMoments(imgThresh, moments, 1);
//Ly ra moment 0th v 1th tnh v tr tm ca
vt th mu
//area l moment bc (0,0) ca nh: din tch
//moment10, moment01 l moment bc (1,0), (0,1)
//T , ta c ta tm ca vt th l
// xCenter = area/moment10
// yCenter = area/moment01
area = cvGetCentralMoment(moments, 0, 0);
moment10 = cvGetSpatialMoment(moments, 1, 0);
moment01 = cvGetSpatialMoment(moments, 0, 1);
//Thm vo xt area ln hn dienTichMin th mi
ly, khng th b qua (thay cho lc nhiu) (v lc nhiu lm chm chng
trnh
static const int dienTichMin=30;
if(area >= dienTichMin)
{
coGiaTriMoi=true;
}
else
{
coGiaTriMoi=false;
}
CvPoint
tamVatThe=cvPoint((int)(moment10/area),(int)(moment01/area));
delete moments;
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

63

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


return tamVatThe;
}

4.2.2.4 Hm KhoiTaoKalman

Hm ny thit lp cc ma trn ca b lc Kalman v khi to cc gi tr u vo:

Hu nghim bc trc xk-1(+) v


Ma trn hip phng sai ca sai s hu nghim bc trc Pk-1(+).

public: void KhoiTaoKalman(CvKalman* &kalman)


{
//Khi to generator cho random number
CvRandState rng;
cvRandInit( &rng, 0, 1, -1, CV_RAND_UNI );
//Khi to cu trc Kalman:
//kch c vector trng thi nDynamParams:
x,y,vx,vy; vx, vy l vn tc theo phng x v y
// y ta coi chyn ng l u v cho vx = vy =
2 (2pixel / 1frame)
//kch c vector o nMeasureParams: 2: to x, y
tnh t oht hin vt th theo mu
//kch c vector iu khin nControlParams: 0
(khng dng)
kalman = cvCreateKalman( 4, 2, 0 );
//To
//[ 1
// 0
// 0
// 0
//vi
//
//
//
//

ma trn chuyn trng thi F


0 vx 0
1 0 vy
0 1 0
0 0 1 ]
ma trn nh vy ta c F*x_k s l:
x_k.x = x_k.x + vx
x_k.y = x_k.y + vy
x_k.vx = vx
x_k.vy = vy

//int vx = 1;
//vn tc u theo phng x
//int vy = 1; //vn tc u theo phng y
int vx = 2; //vn tc u theo phng x
int vy = 2; //vn tc u theo phng y
//hng 0
cvSetReal2D(kalman->transition_matrix, 0,0,1);
cvSetReal2D(kalman->transition_matrix, 0,1,0);
cvSetReal2D(kalman->transition_matrix, 0,2,vx);
cvSetReal2D(kalman->transition_matrix, 0,3,0);
//hng 1
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,

1,0,0);
1,1,1);
1,2,0);
1,3,vy);

//hng 2
cvSetReal2D(kalman->transition_matrix, 2,0,0);
cvSetReal2D(kalman->transition_matrix, 2,1,0);
cvSetReal2D(kalman->transition_matrix, 2,2,1);
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

64

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


cvSetReal2D(kalman->transition_matrix, 2,3,0);
//hng 3
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,
cvSetReal2D(kalman->transition_matrix,

3,0,0);
3,1,0);
3,2,0);
3,3,1);

////////////
//Khi to cc
//Ma trn o,
//ma trn hip
//ma trn hip
//ma trn hip

ma trn:
phng sai ca nhiu h thng,
phng sai ca nhiu o,
phng sai ca sai s hu nghim

(khi to tnh)
//cvRealScalar(n): to cu trc CvScalar(n,0,0,0):
ch mt s thc
//cvSetIdentity(): to ma trn ch c ng cho
(i=j) l khc 0 (bng gi tr ca cvRealScalar(n) = n), cn li bng 0
cvSetIdentity( kalman->measurement_matrix,
cvRealScalar(1) );
cvSetIdentity( kalman->process_noise_cov,
cvRealScalar(1e-3) );
//1e-3 = 10^-3
//Vic chn gi tr cc phn t trong ma trn hip
phng sai cng ln th c ngha l nhiu cng ln
//Ta chn gi tr ny cng nh nu ta cng tin
tng gi tr ca php o.
cvSetIdentity( kalman->measurement_noise_cov,
cvRealScalar(1e-4) );
//1e-4 = 10^-4
cvSetIdentity( kalman->error_cov_post,
cvRealScalar(1));
//Khi to trng thi hu nghim ban u (ngu
nhin)
cvRand( &rng, kalman->state_post );
/*Khi to xong*/
}

4.2.2.5 Hm LocKalman

Sau gi hm KhoiTaoKalman ta c th gi hm ny. Hm ny chnh l b lc Kalman.


N s tnh gi tr hu nghim ti u t gi tr tin nghim theo m hnh h thng v gi tr
o, n cng cp nhp cc ma trn sn sng cho mt ln lc k tip.
public: void LocKalman(CvKalman* &kalman, CvMat* vectorDo_z_k,const CvMat*
&trangThaiPre_UocDoan,const CvMat* &trangThaiPost_ToiUu)
{
/*Bt u b lc Kalman*/
//Tin on tin nghim (trng thi x_k+1 (-) )
trangThaiPre_UocDoan=cvKalmanPredict( kalman, 0 );
//Gi tr o z_k c a vo l vectorDo_z_k

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

65

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


//Ta tin hnh Ti u c lng (to hu nghim)
trangThaiPost_ToiUu = cvKalmanCorrect( kalman,
vectorDo_z_k );
/*Xong mt chu k lc*/
}

4.2.2.6 Hm TinhTienAnh

Hm ny v hm ZoomAnh l 2 hm dng cc thut ton ha my tnh iu khin


nh. Hm ny lm nhim v tnh tin nh.
V mt t chc chng trnh, c th zoom v di chuyn qua mt lot cc ln khc nhau
(theo di chuyn v xut hin ca vt th) ta lu li nh gc ban u v mt ma trn bin
i. Mi ln c mt php di chuyn hay zoom mi xy ra ta li cp nht ma trn ny bng
cch nhn vo bn tri n:
MaTranBienDoi = MaTranPhepBienDoiCuoi * MaTranBienDoi

Nh vy ta ch cn lu li mt ma trn ny v mt nh gc, mun to ra nh bin i (di


chuyn hay zoom nh) ta ch vic nhn ma trn bin i (c cp nht lin tc) ny vi
nh gc. Nh ta s c hiu qu l mt lot cc bin i nh lin tc.
/*Tnh tin nh t im A n im B
Hm ny i khi dc dng ch cp nht
MaTran_BienDoiAnhGoc (tham so: thucHienBienDoiTrenAnh = false,
capNhatMaTranBienDoi = true)
Khi , sau khi gi hm ny, c bin i thc s, ta
phi gi:
cvWarpAffine( imgForControl_AnhGoc, dst,
MaTran_BienDoiAnhGoc);
scale: co dn (dc nhn vi khong cch gia 2 im)
*/
public: void TinhTienAnh(const IplImage* src, IplImage* dst, CvPoint
diemA, CvPoint diemB, double scale, bool thucHienBienDoiTrenAnh, bool
capNhatMaTranBienDoi)
{
int xA, yA, xB, yB;
xA = diemA.x;
yA = diemA.y;
xB = diemB.x;
yB = diemB.y;
//Mng 3 im vo v 3 im ra, tnh ma trn
bin i warp_mat
CvPoint2D32f srcTri[3], dstTri[3];
//Ma trn bin i hnh
CvMat* warp_mat = cvCreateMat(2,3,CV_32FC1);
//Tnh ma trn bin i warp matrix
//Ly 3 im ti 3 gc ca nh gc
srcTri[0].x = 0;
//src Top left
srcTri[0].y = 0;
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

66

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


srcTri[1].x
srcTri[1].y
srcTri[2].x
srcTri[2].y

=
=
=
=

src->width - 1;
0;
0;
src->height - 1;

//src Top right


//src Bottom left

if(scale<=0)
scale = 1;
int doDoiX = (xB - xA)*scale;
int doDoiY = (yB - yA)*scale;
//3 im u ra (v tr mi ca 3 im trn)
dstTri[0].x = srcTri[0].x + doDoiX;
//dst Top
left
dstTri[0].y = srcTri[0].y + doDoiY;
dstTri[1].x = srcTri[1].x + doDoiX;

//dst Top

dstTri[1].y = srcTri[1].y + doDoiY;


dstTri[2].x = srcTri[2].x + doDoiX;

//dst Bottom

right
left offset
dstTri[2].y = srcTri[2].y + doDoiY;
//ly ma trn bin i
cvGetAffineTransform( srcTri, dstTri, warp_mat );
//bin i hnh theo ma trn va tnh
if(thucHienBienDoiTrenAnh)
cvWarpAffine( src, dst, warp_mat );
//Nu thucHienBienDoiTrenAnh == false ngha l hm
dc gi ch tnh ma trn bin i
if(capNhatMaTranBienDoi)
NhanMaTranBienDoi(warp_mat,
MaTran_BienDoiAnhGoc ,MaTran_BienDoiAnhGoc);
cvReleaseMat(&warp_mat);
}

4.2.2.7 Hm ZoomAnh

Hm ny thc hin chc nng zoom nh.


private: IplImage* ZoomAnh(const IplImage* anhGoc, int xa_last, int
ya_last, int xa_new, int ya_new,
int xb_last, int yb_last, int xb_new, int yb_new)
{
double khoangCachMoi, khoangCachCu;
khoangCachCu = KhoangCach(xa_last, ya_last,
xb_last, yb_last);
khoangCachMoi = KhoangCach(xa_new, ya_new,
xb_new, yb_new);
double scale;
if(khoangCachCu != 0)
scale = khoangCachMoi/khoangCachCu;
else
scale = 1;

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

67

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


//nh kt qu
IplImage *imgZoomAndRotate =
cvCreateImage(cvSize(chieuRongKhungNhin, chieuCaoKhungNhin), IPL_DEPTH_8U,
3);
//CvPoint2D32f centerAnhGoc = cvPoint2D32f(
anhGoc->width/2, anhGoc->height/2);
//Tnh ma trn xoay
//Ma trn xoay
CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1);
//NHC LI: Do php bin i tnh tin ban u
nn c th coi (v chnh xc l phi xem vy) tm ca hnh by gi l tm
ca khung nhn
CvPoint2D32f center = cvPoint2D32f(
chieuRongKhungNhin/2, chieuCaoKhungNhin/2);
double angle = 0.0;
//ly ma trn xoay v zoom
cv2DRotationMatrix( center, angle, scale, rot_mat
);
//CP NHT MA TRN BIN I MaTran_BienDoiAnhGoc
//V ta c cc php bin i:
//
X2 = M1 x X1
//
X3 = M2 x X2 = M2 x M1 x X1
//
...
//Vy ta c ma trn bin i tng hp l Mk x Mk1
//MaTran_BienDoiAnhGoc = rot_mat x
MaTran_BienDoiAnhGoc
//Tuy nhin, CH : Cc ma trn bin i l (2x3)
v vy ta khng nhn chng vi nhau dc
//Ta phi pad thm hng cui: 0 0 1 cho n thnh
ma trn vung
//V vy ta dng hm NhanMaTranBienDoi()
NhanMaTranBienDoi(rot_mat,MaTran_BienDoiAnhGoc,MaTran_BienDoiAnhGoc);
//xoay v zoom hnh
cvWarpAffine(anhGoc, imgZoomAndRotate,
MaTran_BienDoiAnhGoc );
////khung nhn c kch c bng kch c nh u ra
( y l 640, 480), v vy ta tnh tm khung nhn nh sau
//CvPoint2D32f centerKhungNhin = cvPoint2D32f(
imgZoomAndRotate->width/2, imgZoomAndRotate->height/2);
////Sau khi zoom v xoay xong, ta phi di nh
////sao cho tm nh (centerAnhGoc) trng tm
khung nhn (centerKhungNhin)
//IplImage *imgZoomAndRotate_Out =
cvCreateImage(cvSize(imgZoomAndRotate->width,imgZoomAndRotate->height),
IPL_DEPTH_8U, 3);

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

68

CHNG 4. THIT K V CI T CHNG TRNH PHT HIN DI NG


//TinhTienAnh(imgZoomAndRotate,imgZoomAndRotate_Out, centerAnhGoc,
centerKhungNhin);
///////////////
cvReleaseMat(&rot_mat);
return imgZoomAndRotate;
}

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

69

Kt Lun
n ny hon thnh thu c cc kt qu sau:

V l thuyt

Nm r c b lc Kalman.
C kh nng pht trin h thng c lng dng b lc Kalman.
Nm c thut ton pht hin vt th da trn mu sc, cch kt hp vi b lc
Kalman to ra mt theo di cc i tng chuyn ng.

V ng dng

Mt ng dng dng cc kin thc l thuyt nu trn hon chnh: Chng trnh
pht hin mc tiu di ng v ng dng v, iu khin nh.
Trong chng trnh, ngoi ng dng cc kin thc v lc Kalman v pht hin vt
th da trn mu sc cn ng dng thut ton bin hnh ca ha my tnh
iu khin nh.

Hng pht trin

Mt mc pht trin nh ca ng dng l thm cc chc nng iu khin c th t


vic pht hin mc tiu di ng, chng hn iu khin cc chc nng ca my tnh
thay cho chut.
Mt hng khc l thay thut ton pht hin vt th da trn mu sc. Nu ta thay
b o ny bng cc ci t ca cc thut ton pht hin chuyn ng tinh vi hn, ta
c th m rng ng dng ra nhiu hng mi: iu khin my tnh bng di chuyn
ca tay, mt; theo di cc h thng giao thng v a ra gii php phn lung ti
u da vo lu lng xe

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

70

Ph Lc
Hng dn ci t OpenCV 2.1 cho project Winform CLR, Visual
Studio 2008 C++
1. Ci t OpenCV 2.1 (file OpenCV-2.1.0-win32-vs2008.exe)
Nh chn: Add OpenCV to the system PATH for all users
2. Ci t Cmake (file cmake-2.8.3-win32-x86.exe)
3. Chy Cmake, thc hin cc bc sau:
Where is the source code: th mc OpenCV ci bc 1 (mc nh l
C:/OpenCV2.1)
Where to build the binaries: th mc lu cc file to bi Cmake (ty , y ta
chn: F:/QbuildOpenCV)
Nhn Configure, Specify the generator for this project: chn Visual Studio 9 2008.
Chn Use default native compilers v nhn Finish.

Hnh PL-0-1 Cu hnh CMake 2.8.3

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

71

PH LC

Chn thm cc ty chn (hoc mc nh) v nhn Configure ln na.


Nhn Generate.

4. Dng VS2008 m solution OpenCV


Cmake va to trong filder ta ch nh,
y l F:\QbuildOpenCV\OpenCV.sln
5. ch debug v build sulution.
6. Sau chuyn qua release v build
solution.
(s mt vi pht)
7. M th mc lib/Debug v lib/Release
trong th mc ca solution ( y l
F:\QbuildOpenCV\) v copy tt c file .lib
trong 2 th mc y vo
C:\OpenCV2.1\lib.
Ch : file cvhaartraining.lib phi l file ca
debug.
Ta c cc file trong C:\OpenCV2.1\lib nh sau:
8. Cu hnh VS 2008:
To mt project C++ CRL Windows Forms Application, v d: project tn
QtryOpenCV:

Hnh PL-0-2 To project CLR Windows Forms Application

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

72

PH LC

Right click project v chn Add new item, v d: QTry1:

Hnh PL-0-3 Thm item

Thm vo mt menu strip v to menu Open:

Hnh PL-4 Thm menu

Thm mt picture box t tn pictureBox1.


Double vo menu item Open vo thm vo code: OpenFile();

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

73

PH LC
Vi hm OpenFile() nh sau (c t vo cng file code ny)
private: void OpenFile()
{
OpenFileDialog^ dlg = gcnew OpenFileDialog;
dlg->Filter
=
"SelectFile(*.bmp,*.jpg,*.png,*.tif,jp2)|*.bmp;*.jpg;*.png;*.tif;*.jp2";
if
(dlg->ShowDialog()
==
System::Windows::Forms::DialogResult::Cancel) return;
System::String^ strFilename = dlg->FileName;
char*
pStr
=
(char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(strF
ilename).ToPointer();
src_img
=
cvLoadImage(pStr,
CV_LOAD_IMAGE_ANYCOLOR);

CV_LOAD_IMAGE_ANYDEPTH

System::Runtime::InteropServices::Marshal::FreeHGlobal(IntPtr
(pStr));
///////////////////////////////////
Bitmap^ bmpPicBox = gcnew Bitmap(strFilename);
this->pictureBox1->Image = bmpPicBox;
///////////////////////////////////
this->pictureBox1->Refresh();
this->Invalidate();
//delete bmpPicBox;
}

Trn u file code ny, thm m sau ( thm cc th vin cn thit cho chng
trnh) (ch chnh li ng ng dn ti th mc vi OpenCV trn my):

#pragma once
#include "C:\OpenCV2.1\include\opencv\cv.h"
#include "C:\OpenCV2.1\include\opencv\highgui.h"
#ifdef _DEBUG

//Debug
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cv210d.lib")
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cxcore210d.lib")
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cvaux210d.lib")
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\highgui210d.lib")

#else
//Release
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cv210.lib")
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cxcore210.lib")

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

74

PH LC
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\cvaux210.lib")
#pragma comment(lib,"C:\\OpenCV2.1\\lib\\highgui210.lib")
#endif

Thm code sau:

IplImage* src_img;

Di phn sau:
private:
/// <summary>
/// Required designer variable.
/// </summary>

Ta c:
private:
/// <summary>
/// Required designer variable.
/// </summary>
IplImage* src_img;

Trong hm hy ( y l ~QTry1()) thm code sau:

if (src_img != NULL){
IplImage *temp_img = src_img;
cvReleaseImage(&temp_img);
src_img = NULL;
}

Ta c hm hy nh sau:
protected:

/// <summary>
/// Clean up any resources being used.
/// </summary>
~QTry1()
{
if (components)
{
delete components;
}
///////////////////////
if (src_img != NULL){
IplImage *temp_img = src_img;
GVHD: ThS. Trn Tin c
SVTH: Trn Nht Quang trannhatquang4810@gmail.com

75

PH LC
cvReleaseImage(&temp_img);
src_img = NULL;
}
}

(QUAN TRNG) Right click project v chn Properties, trong Configuration


Properties/ General/ Common language Runtime support: chn Common
Language Runtime Support (/clr) project chp nhn unmanaged code.
Sa file chnh ca project (trng tn project), y l file: QtryOpenCV.cpp,
chy form ca chng ta

// QTryOpenCV.cpp : main project file.


#include "stdafx.h"
#include "QTry1.h"

///////Sa Form1.h thnh QTry1.h

using namespace QTryOpenCV;


[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
//
created

Enabling

Windows

XP

visual

effects

before

any

controls

are

Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// Create the main window and run it
Application::Run(gcnew QTry1());

///////Sa Form1.h thnh QTry1.h

return 0;
}

Bin dch v chy th project, nu c th nhn Open m mt bc hnh l thnh


cng.

Hnh PL-5 Kt ca vic ci t v chy thnh cng mt chng trnh Winform dng OpenCV

GVHD: ThS. Trn Tin c


SVTH: Trn Nht Quang trannhatquang4810@gmail.com

76

TI LIU THAM KHO


[1] Tn la khng i khng, http://vi.wikipedia.org/wiki/Tn_la_khng_i_khng
[2] Gary Bradski and Adrian Kaehler, Learning OpenCV, OReilly, 2008.
[3] Bi ging xc sut thng k: Bin ngu nhin (3),
http://zung.zetamu.com/2009/09/bai-ging-xac-sut-thng-ke-bin-ngu-nhien-3/
[4] Lindsay I Smith, A tutorial on Principal Components Analysis,
users.ecs.soton.ac.uk/hbr03r/pa037042.pdf, 2002
[5] Cao Ho Thi, c lng cc tham s thng k,
www.ctu.edu.vn/~dvxe/stat/stat_caohaothi/MS07-R07bV.pdf
[6] Orthogonality principle, http://en.wikipedia.org/wiki/Orthogonality_principle
[7] Rudolf Emil Kalman, http://www.cs.unc.edu/~welch/kalman/kalmanBio.html
[8] Kalman filter, http://en.wikipedia.org/wiki/Kalman_filter
[9] http://www.cesti.gov.vn/kh-cn-trong-n-c/ng-d-ng-l-c-kalman-trong-phan-tich-bi-n-dng-nha-cao-t-ng-do-b-c-x-nhi-t-m-t-tr-i.html
[10]
http://webcache.googleusercontent.com/search?q=cache:WflSR0tXXe8J:khcn.vimaru.edu.
vn/fckfiles/file/danhmuc_tckhcn/DANH%2520MUC%2520BAI%2520DANG%252020.doc+d
ung+kalman&cd=40&hl=vi&ct=clnk&gl=vn&client=opera
[11] http://www.nchmf.gov.vn/web/vi-VN/71/155/5760/Default.aspx
[12] http://www6.vnmedia.vn/newsdetail.asp?CatId=35&NewsId=148914
[13] Gii thiu v b lc Kalman,
http://vntelecom.org/diendan/showthread.php?t=134&page=1
[14] Mohinder S. Grewal and Angus P. Andrews, KALMAN FILTERING - Theory and Practice
Using MATLAB, 3rd edition, John Wiley & Sons, 2008

77

You might also like