You are on page 1of 82

I HC QUC GIA H NI

TRNG I HC CNG NGH

Nguyn Xun c

IU KHIN ROBOT DI NG S DNG


TH VIN OPENCV

N TT NGHIP I HC H CHNH QUY


Ngnh: C hc K thut

H NI-2010

I HC QUC GIA H NI
TRNG I HC CNG NGH

Nguyn Xun c

IU KHIN ROBOT DI NG S DNG


TH VIN OPENCV

N TT NGHIP I HC H CHNH QUY


Ngnh: C hc K thut
Cn b hng dn:ThS. Phng Vn Hip

H NI 2010

LI CM N

Khi bt u nhn n tt nghip ny em rt lo lng bi x l nh l lnh vc


cn mi m Vit Nam v bn thn cng ln u tin tip xc vi lnh vc ny. Em
rt vui v cui cng hon thnh tt n c giao.
Trc ht em xin gi li cm n su sc n ThS. Phng Vn Hip tuy khng c
iu kin trc tip c lm vic cng thy nhiu, nhng qua nhng ln tip xc ngn
ngi chnh thy cho em nhng li ng vin, nhng li khuyn qu bu, em hc
c thy rt nhiu t phong cch lm vic n phong cch sng, em rt khm phc
thy.
ng thi em xin gi li cm n n ThS. V c M, cn b nghin cu ti
Vin Cng ngh V tr - Vin Khoa hc v Cng ngh Vit Nam. Mc d ch c
trc tip lm vic vi thy trong thi gian ngn do thy phi i cng tc xa v rt bn
rn nhng thy vn lun dnh thi gian qu bu hng dn, ch bo tn tnh, gip em
bc t nhng bc i u tin n lc em hon thnh c n ny.
Em xin gi li cm n chn thnh n KS. Nguyn Thanh Tun cn b nghin
cu phng ng lc hc v tr v C in t chnh xc - Vin Cng ngh V tr Vin Khoa hc v Cng ngh Vit Nam. KS. Nguyn Thanh Tun khng nhng gip
em rt nhiu trong qu trnh thc hin n ny m cn ch bo, gip em ngay
t khi em bt u c n hc tp ti Vin.
Qua y em cng xin gi li cm n n thy, c gio cng tc ti trng i
Hc Cng Ngh - i Hc Quc Gia H Ni v cc cn b nghin cu ti Vin Cng
Ngh V tr Vin Khoa hc v Cng ngh Vit Nam gip em v chuyn mn,
to iu kin thun li em hon thnh n ny.
Thc s con cng khng bit lm th no ni ht cng n b m dnh cho
con!
Mt ln na xin cm n tt c mi ngi, cu chc cho tt c mi ngi mnh
khe, vui v, hnh phc v thnh cng!

Sinh vin
Nguyn xun c

TM TT NI DUNG N

Lnh vc r bt ang ngy cng chim c s quan tm ca cc nh nghin cu


v x hi. T tnh hnh thc t , vic xy dng cc chng trnh hot ng cho r
bt l iu thit yu, c bit i vi r bt di ng. Bi ton r bt di ng bm i
tng l mt bi ton thng gp trong lnh vc r bt.
n ny trnh by xy dng mt gii php iu khin r bt di ng bm i
tng da vo thut ton CamShift trong th vin OpenCV. theo di i tng
trong OpenCV cn phi c qu trnh d tm, phn tch v nhn dng i tng.
B cc ca n ny c trnh by nh sau: trc ht n trnh by nhng
khi nim v th vin OpenCV, sau trnh by cc c s l thuyt ca th vin
OpenCV. Trn c s tm hiu tm hiu th vin OpenCV n xy dng thut ton
theo di i tng da vo mt thut ton rt ph bin trong OpenCV l thut ton
CamShift. Mt Webcam c s dng thu thp hnh nh ng vai tr nh l con
mt ca r bt v mt laptop c s dng lm b x l trung tm cho r bt. M
hnh r bt c ch to nhm kim nghim thut ton xy dng. Kt qu n l
cn c pht trin v xy dng cc thut ton iu khin r bt s dng OpenCV sau
ny.

MC LC

M U .......................................................................................................................... 1
CHNG 1. GII THIU CHUNG ................................................................................ 2
1.1. Gii thiu chung v r bt...................................................................................... 2
1.2. Gii thiu r bt bm i tng ............................................................................. 3
1.3. Mc tiu ca n ................................................................................................. 6
1.4. Gii hn ca n ................................................................................................. 6
CHNG 2. TNG QUAN V TH VIN OPENCV V MT S LINH KIN S
DNG TRONG KHI PHN CNG.............................................................................. 7
2.1. Th no l th gic my? ........................................................................................ 7
2.2. Th vin OpenCV.................................................................................................. 7
2.2.1. OpenCV l g? ................................................................................................ 7
2.2.2. V sao la chn OpenCV? .............................................................................. 8
2.2.3. Cu trc v ni dung OpenCV nh th no? ................................................... 9
2.2.4. Cc hm I/O trong OpenCV.......................................................................... 10
2.2.5. Cc hm thc hin x l nh......................................................................... 12
2.2.6. Cc hm Histograms and Matching .............................................................. 13
2.2.7. Hm Contours............................................................................................... 13
2.2.8. C s ton hc ca thut ton CamShift ....................................................... 14
2.3. C bn v PIC16F877A ....................................................................................... 15
2.3.1. PIC l g?...................................................................................................... 15
2.3.2. c im ni bt ca PIC16F877A ............................................................... 15
2.3.3. S cc chn ca PIC16F877A .................................................................. 16
2.4. Giao tip RS232................................................................................................... 18
2.5. Gii thiu v chp mch cu L298N ..................................................................... 20
CHNG 3. XY DNG PHN MM IU KHIN ................................................ 22
3.1. Th gic my iu khin r bt di ng bm i tng ........................................ 22
3.2. Thut ton tnh hng v kch c ca i tng cn theo di............................... 23
3.2.1. Thut ton chung .......................................................................................... 23
3.2.2. Nhn dng v bm mc tiu di ng ............................................................. 24
3.2.3. Chuyn i khng gian mu t RGB n HSV ............................................. 25
3.2.4. Histogram ..................................................................................................... 26
3.2.5. Lc nhiu Filter ............................................................................................ 27
3.2.6. Thut ton CamShift ..................................................................................... 28
3.2.7. Thit k hon chnh phn mm iu khin .................................................... 30
CHNG 4. XY DNG MCH PHN CNG ......................................................... 34
4.1. S mch dng trong n ............................................................................... 34

4.1.1. Khi iu khin trung tm ............................................................................ 34


4.1.2. Khi ngun ................................................................................................... 35
4.1.3. Khi truyn thng RS232 ............................................................................. 35
4.1.4. Khi iu khin ng c ............................................................................... 36
4.2. Tp lnh iu khin r bt ................................................................................... 37
CHNG 5. KT QU THC HIN ........................................................................... 38
5.1. Kt qu th nghim vi mi trng tnh .............................................................. 40
5.2. Kt qu th nghim vi mi mi trng ng...................................................... 42
KT LUN .................................................................................................................... 46
PH LC A. CHNG TRNH X L NH ............................................................. 48
PH LC B. CHNG TRNH IU KHIN ROBOT............................................... 62
PH LC C. CHNG TRNH TRUYN THNG RS232 ......................................... 66
TI LIU THAM KHO............................................................................................... 72

DANH SCH HNH V

Hnh 1: PANrobot (ngun: mobilerobot.org ................................................................ 4


Hnh 2: R bt MIDbo (ngun: telepresenceoptions.com) ........................................... 4
Hnh 3: R bt Pops (ngun: slashgear.com)............................................................... 5
Hnh 4: R bt thm him sao ho (ngun: robotics.youngester.com) ......................... 5
Hnh 5: Qu trnh pht trin ca OpenCV ................................................................... 8
Hnh 6: Cu trc c s ca OpenCV............................................................................ 9
Hnh 7: PIC16F877A................................................................................................. 16
Hnh 8: S khi ca PIC16F877A ......................................................................... 17
Hnh 9: Cng giao tip RS232 ................................................................................... 19
Hnh 10: Chp mch cu L298N ................................................................................ 21
Hnh 11: S khi tng qut ca r bt .................................................................. 22
Hnh 12: S thut ton chung ............................................................................... 23
Hnh 13: Mt phng nh ............................................................................................ 24
Hnh 14: Biu din i tng di chuyn trn mt phng nh ..................................... 25
Hnh 15: Chuyn i khng gian mu RGB n HSV................................................. 26
Hnh 16: Histogram ................................................................................................... 26
Hnh 17: kt qu trc v sau khi lc nhiu ............................................................... 27
Hnh 18: S thut ton CamShift .......................................................................... 28
Hnh 19: Kt qu tnh to tm bng thut ton CamShift ...................................... 29
Hnh 20: Kt qu bc u theo di i tng bng thut ton CamShift ................. 29
Hnh 21: Giao din phn mm thit k hon chnh ..................................................... 31
Hnh 22: Kt qu th nghim vi phn mm .............................................................. 32
Hnh 23: Kt qu th nghim vi phn mm .............................................................. 33
Hnh 24: S khi iu khin trung tm .................................................................. 34
Hnh 25: S khi ngun ........................................................................................ 35

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com

Hnh 26: S khi truyn thng RS232 ................................................................... 35


Hnh 27: S nguyn l mch cu iu khin ng c ............................................ 36
Hnh 28: S phn cng hon chnh. ...................................................................... 36
Hnh 29: Hnh nh robot hon chnh ......................................................................... 39

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com

DANH SCH BIU

Biu 1: Gi tr to tm i tng mi trng tnh (160x120). .......................... 40


Biu 2: Gi tr to tm i tng mi trng tnh (176x144). .......................... 40
Biu 3: Gi tr to tm i tng mi trng tnh (320x240) ........................... 41
Biu 4: Gi tr to tm i tng mi trng tnh (640x480). .......................... 42
Biu 5: Gi tr to tm i tng mi trng ng (160x120). ........................ 42
Biu 6: Gi tr to tm i tng mi trng ng (176x144). ........................ 43
Biu 7: Gi tr to tm i tng mi trng ng (320x240). ........................ 43
Biu 8: Gi tr to tm i tng mi trng ng (640x480). ........................ 44
Biu 9: Gi tr to tm i tng mi trng ng tc khng i ............... 44

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com

DANH SCH BNG

Bng 1: Chc nng cc chn ca L298N ................................................................... 20


Bng 2: Tm tt nguyn tc iu khin ng c s dng L298N ................................ 21
Bng 3: Tp lnh iu khin r bt ............................................................................ 37

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com

M U

X l nh bao gm l thuyt v cc k thut lin quan nhm mc ch to ra mt


h thng nhn to c th tip nhn thng tin t cc hnh nh thu c hoc cc tp d
liu a chiu. i vi mi ngi chng ta, qu trnh nhn thc th gii bn ngoi l
mt iu d dng. Qu trnh nhn thc c hc thng qua qu trnh sng ca
mi ngi. Tuy nhin vi cc vt v tri v gic nh nh cc my tnh, r bt v..v. th
iu qu thc l mt bc tin rt gian nan. Cc thit b ngy nay khng ch nhn
thng tin dng tn hiu n l m cn c th c ci nhn tht vi th gii bn
ngoi. Ci nhn ny qua qu trnh phn tch, kt hp vi cc m hnh nh my hc,
mng nron v..v. s gip cho thit b tin dn ti mt h thng nhn to c kh nng ra
quyt nh linh hot v ng n hn rt nhiu. OpenCV l th vin m ngun m v
x l nh ca Intel n p ng y cc yu cu ca lnh vc x l nh.
Trn th gii lnh vc r bt di ng s dng x l nh pht trin v cng mnh
m v c c nhng bc tin ng kinh ngc. Vit Nam lnh vc r bt di ng
ang rt pht trin, tuy nhin lnh vc r bt di ng s dng cng c x l nh cn
mi m do thiu cc thit b h tr v ti liu. V vy, y s l mt hng pht trin
mi y ha hn v cng khng t thch thc. Vi mong mun tham gia vo lnh vc
cn mi ny v gp phn vo s pht trin lnh vc r bt di ng s dng x l nh
Vit Nam, em thc hin ti iu khin r bt di ng s dng th vin OpenCV.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
1

CHNG 1
GII THIU CHUNG

1.1. Gii thiu chung v r bt


R bt hay ngi my l mt loi my c th thc hin nhng cng vic mt
cch t ng bng s iu khin ca my tnh.
R bt l mt tc nhn c kh, nhn to, thng l mt h thng c kh-in t.
Vi s xut hin v chuyn ng ca mnh, r bt gy cho ngi ta cm gic rng n
gic quan ging nh con ngi. T "r bt" (ngi my) thng c hiu vi hai
ngha: r bt c kh v phn mm t hot ng. V lnh vc ngi my, Nht Bn l
nc i u th gii v lnh vc ny.
Ngy nay r bt ang l tm im ca mt cuc cch mng ln sau Internet. R
bt ngy cng c s dng rng ri trong lnh vc cng nghip, y t, gio dc o
to, gii tr, an ninh quc phng, thm him khng gian.
R bt l sn phm cng ngh c phc tp cao, cha hm lng tri thc v cng
phong ph v tt c cc lnh vc ca khoa hc v cng ngh.
Ngy nay, ngi ta vn cn ang tranh ci v vn Mt loi my nh th no
th tiu chun c gi l mt r bt ? Mt cch gn chnh xc, r bt phi c
mt vi (khng nht thit phi y ) cc c im sau y:
Khng phi l t nhin, tc l do con ngi sng to ra.
C kh nng nhn bit mi trng xung quanh.
C th tng tc vi nhng vt th trong mi trng.
C s thng minh, c kh nng a ra cc la chn da trn mi trng v
c iu khin mt cch t ng theo nhng trnh t c lp trnh trc.
C kh nng iu khin c bng cc lnh c th thay i ty theo yu cu
ca ngi s dng.
C th di chuyn quay hoc tnh tin theo mt hay nhiu chiu.
C s kho lo trong vn ng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
2

1.2. Gii thiu r bt bm i tng


H thng iu khin r bt c th gic c s dng theo di mc tiu di ng
trong cc ng dng cng nghip, quc phng v x hi. H thng th gic c th c
phn thnh 2 lp, theo nh cu trc ca h, l h c camera gn c nh v h c
camera gn trn tay my (eye-in-hand). Trong h camera c nh, camera c gn c
nh so vi h to thc, thu thp nh ca c mc tiu v c mi trng. Mc tiu
ca h ny l cung cp tn hiu iu khin sao cho tay my t c v tr mong mun.
Mc ch ca cu truc eye-in-hand l iu khin tay my sao cho nh ca mc tiu c
nh hay di ng lun c duy tr v tr mong mun trn mt phng nh thu c.
Trn c s nh thu c t camera, c s ho v tch hp trong vng iu khin
phn hi, h thng iu khin cc khp ca tay my.
Cc nghin cu ca mi trng ng b b kh xa so vi ca mi trng tnh do
b nh hng kh ln ca tc tnh ton cng nh chnh xc ca vic phn tch
nh. Do vy c nhiu thut ton ci thin tc x l v xem xt n cc qu trnh
nhiu tc ng ln qu trnh thu thp hnh nh.
Mt thch thc ca th gic my l vic phn loi i tng. Mt r bt c th
phi i mt vi nhiu i tng khc nhau, trong khi ch c mt mc tiu quan
tm, cn cc i tng khc th khng.
nhn bit c thng tin v v tr ca mc tiu trong mi trng ng, cc
c trng ca mc tiu rt quan trng. Cc im l, cc gc cnh, cc c im hnh
hc ca mc tiu c phn tch qua qu trnh nhn dng. c tnh v trng tm ca
mc tiu c th tnh d dng qua moment bc nht trong mi trng tnh, nhng trong
mi trng ng vic ny rt kh v chi ph thi gian tnh ton ln.
Bi ton bm mc tiu di ng vi qu o khng bit trc yu cu phi gi
c i tng mt v tr nht nh trn mt phng nh. Thut ton CamShift c
s dng tnh ton to trng tm ca i tng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
3

Hnh 1: PANrobot (ngun: mobilerobot.org

Hnh 2: R bt MIDbo (ngun: telepresenceoptions.com)

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
4

Hnh 3: R bt Pops (ngun: slashgear.com)

Hnh 4: R bt thm him sao ho (ngun: robotics.youngester.com)

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
5

1.3. Mc tiu ca n
Mc tiu nghin cu ca n c th chia thnh hai phn nh sau:
Th nht: Xy dng phn mm r bt di ng bm i tng s dng OpenCV.
Thut ton c la chn s dng trong n l thut ton CamShift.
Th hai: Xy dng khi phn cng kim nghim gii thut ca thut ton
xy dng s dng vi iu khin PIC16F877A.
Nh vy cng vic chnh ca n l:
Tm hiu th vin OpenCV.
Tm hiu v thut ton CamShift.
Lp trnh iu khin r bt di ng s dng thut ton CamShift.
Thit k mch phn cng v lp trnh iu khin ng c s dng
PIC16F877A.
Lp trnh truyn thng ni tip RS232.

1.4. Gii hn ca n
-

n tp trung ch yu vo xy dng phn mm iu khin s dng th vin


OpenCV.
R bt ch thc hin vic bm i tng trong mt s mi trng v i tng
nht nh m t b nh hng ca nhiu.

Mch phn cng v thut ton iu khin ng c ch thc hin vic iu khin
hng ca r bt, ngha l khng iu khin tc ca r bt.

S dng li phn c kh n kho trc xy dng c.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
6

CHNG 2
TNG QUAN V TH VIN OPENCV
V MT S LINH KIN S DNG TRONG KHI PHN CNG

2.1. Th no l th gic my
Th gic my l mt lnh vc a dng v ang rt pht trin. Khi nim th gic
my (Computer vision) c lin quan ti nhiu ngnh hc v hng nghin cu khc
nhau. T nhng nm 1970 khi m nng lc tnh ton ca my tnh ngy cng tr nn
mnh m hn, cc my tnh lc ny c th x l c nhng tp d liu ln nh cc
hnh nh, cc on phim th khi nim v k thut v th gic my ngy cng c
nhc n v nghin cu nhiu hn cho ti ngy nay. Hin ti, lnh vc ny c cc
chuyn gia nh gi l vn cn mi m v s c rt nhiu thay i trong thi gian ti.
Lnh vc nghin cu ca th gic my rt rng, v c im chung l cc bi ton
v th gic my tnh u khng c mt bi chung v cch gii duy nht. Mi gii
php gii quyt vn u c mt kt qu nht nh cho nhng trng hp c th. Ta
c th thy s tng quan gia th gic my vi cc lnh khc.

2.2. Th vin OpenCV


2.2.1. OpenCV l g ?
OpenCV vit tt ca Open Source Computer Vision Library.
N cha hn 500 hm s dng trong th gic my.
OpenCV l mt th vin m ngun m (open source) http://sourceforge.net/.
Th vin c vit bng ngn ng C v C++ c th chy trn cc h iu hnh Linux,
Window v Mac OS X. OpenCV c thit k nng cao hiu sut tnh ton v nhn
mnh n h thng thi gian thc. Mt iu tuyt vi ca OpenCV l n a ra mt h
thng n gin, d s dng gip mi ngi nhanh chng xy dng cc ng dng trong
th gic my, k c cc h thng kim tra trong nh my, bc nh trong lnh vc y hc,
bo mt, r bt hc v..v. N cha cc lp trnh x l nh rt n gin, k c thc thi
cc hm bc cao nh d tm khun mt, theo di khun mt, nhn dng khun mt, lc
Kalman.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
7

K t khi c gii thiu vo thng 1 nm 1999, OpenCV c s dng trong


rt nhiu ng dng, cc sn phm v cc nghin cu. V d trong lnh vc hng khng
v tr, bn web, s dng gim nhiu trong y hc, phn tch i tng, an ninh, h
thng d tm, theo di t ng v h thng bo mt, qun l h thng sn xut, x l
camera, ng dng trong qun s, h thng hng khng khng ngi li, trn mt t,
cc tu ngm. Ngoi ra, n cn c s dng trong nhn dng m thanh. OpenCV cn
l mt cha kha quan trng trong cc r bt s dng th gic my nh Stanford,
Asimo.

Hnh 5: Qu trnh pht trin ca OpenCV

2.2.2. V sao la chn OpenCV?


Th trng th gic my ang ngy cng m rng v lin tc pht trin.
Th vin tiu chun s to ra cc ng dng mi v cc gii php x l d dng
hn.
c bit ti u khi s dng cu trc ca Intel.
To ra cc mu ng dng bng cc th vin c cp nht thng xuyn v thc
hin c cc thut ton rt nng nh d tm khun mt.
C rt nhiu cng ngh hin i v cc cng ty ln s dng th vin OpenCV
trong ng dng ca mnh (in hnh nh Intel, Microsoft, IBM, Siemens, Google v..v.)
v cc trung tm nghin cu nh (Stanford, MIT, CMU, Cambridge, INRIA).

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
8

Hn 14000 thnh vin trn forum OpenCVyahoogroups.com vi trung bnh 10


n 20 bc thng ip c trao i hng ngy.
iu c th khng nh OpenCV thc s gp phn v cng ln trong lnh
vc th gic my.
2.2.3. Cu trc v ni dung OpenCV nh th no?
hiu OpenCV lm vic nh th no chng ta bt u t s phn chia cu trc
v ni dung ca OpenCV 5 phn. Cu trc ca OpenCV c chia thnh 5 phn
chnh, 4 trong s c ch ra trong hnh 6.
CV (computer vision) l thnh phn cha nhng x l nh c s v thut ton th
gic my mc cao.
MLL (machine learning library) l th vin machine learning, ci ny bao gm
rt nhiu lp thng k v gp cc cng c x l.
HighGUI cha cc th tc vo ra v cc hm dng cho vic lu tr v ti nh
video.
CXCore cha cu trc v ni dung d liu c s.

Hnh 6: Cu trc c s ca OpenCV

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
9

2.2.4. Cc hm I/O trong OpenCV


OpenCV cung cp cc hm m cho php chng ta tng tc trc tip vi h iu
hnh, cc file h thng, cc phn cng nh Webcam. Cc hm ny nm trong th vin
HighGUI, HighGUI cho php m mt window, hin th bc nh, c cc file lin quan
n ho (nh, video) cc file nh nh jpg, bmp v..v. cc file video nh avi, wma,
mp4, dat v..v. Ngoi ra n cn x l cc s kin chut, bn phm, OpenCV cn cho
php chng ta la chn thut ton linh ng hn bng cch cung cp cc hm to
thanh trt slider, switch v..v. lm vic vi OpenCV trc ht phi hc cc hm
trong th vin ny.
Th vin HighGUI c th chia thnh 3 phn: phn cng, phn file h thng v
phn GUI (Graphical User Interface) chng ta c th xem xt cc phn trong th vin
HighGUI nh sau.
Phn cng: l phn thit yu nht, lin quan n hot ng ca Camera, trong
phn ln h iu hnh vic tng tc vi phn cng rt kh khn v thc s rt kh
nhng OpenCV cung cp hm n gin thc hin vic tng tc ny v d:
cvCaptureFromCAM().
Phn file h thng: l khi nim lin quan n vic ti v lu nh, mt c im
rt tuyt vi trong th vin HighGUI l cho php chng ta lm vic vi nh tng t
khi lm vic vi video. V vy chng ta c th nhanh chng tip cn vi vic x l nh
m khng mt nhiu thi gian cho vic ti, lu nh, video.
Phn GUI: l h thng ca s (Window), th vin cung cp mt s hm n gin
m cho php chng ta m mt window hin th nh trn window ny. Ngoi ra n cn
cho php chng ta thc thi cc s kin nhn c t chut v bn phm.
Mt s hm n gin thng xuyn s dng trong th vin HighGUI nh sau:
u tin chng ta cn hc cch lm th no c v vit cc files nh, chp
video chuyn i gia cc nh dng mu, v truy cp d liu im nh tt c
qua giao din OpenCV.
c v vit mt bc nh.
Bc nh vo/ra th rt d dng trong OpenCV, c mt file nh, n gin
gi hm cvLoadImage(tn file). OpenCV h tr hu ht cc nh dng ph bin

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
10

k c JPEG, PNG v BMP. Bn khng cn cung cp thng tin nh dng.


cvLoadImage() t ng quyt nh dng file thng qua file header ny.
vit mt bc nh n mt file, ta dng hm cvSaveImage(). Hm ny cng
t quyt nh file nh dng, s dng t tn file m rng.
C cvLoadImage v cvSaveImage u nm trong module HighGUI .
Khi bn s dng xong bc nh u vo nhn c t cvLoadImage(), loi b
n bng hm cvReleaseImage(). Hm ny a ra mt a ch ca con tr ging
u vo ca n bi vic n lm l loi b an ton (Safe Release). N ch loi
bc nh ny khi bc nh l non-null. Sau khi loi b xong n t gi tr con tr
v 0.
Lm vic vi Video tng t nh l vic vi nh.
Nhn cc frame t mt webcam, hay cc thit b video s khc th d dng nh
ti n ln t mt file c sn. nhn mt khung t camera ta ch vic thay
cvCreateFileCapture() bng hm cvCreateCameraCapture().
Chng ta c th to cvCapture*Object vi cvCreateFileCapture(). Chng ta s
dng cvQueryFrame () nhn tng frame v cvWaitkey(33) ch 33ms gia
tng frame. Chng ta s dng cvReleaseCapture() loi b capture khi ngng
s dng.
Copy mt bc nh.
Lu tr bc nh trong OpenCV.
OpenCV lu bc nh ging cu trc C, IplImage, Ipl vit tt ca image
processing library.
Kiu d liu IplImage c nh ngha trong CXCORE. Thm vo d liu
nh thc, n cha mt s c im m t nh sau:
Width - rng bc nh tnh theo pixel.
Height - cao bc nh tnh theo pixel.
Depth - mt kiu tin nh ngha ch r lng bits/pixel/channel.
V d : Depth=IPL_DEPTH_8U, d liu cho mi pixel knh nh c lu gi
nh 8-bits khng du.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
11

nChannel s lng ca d liu channel nh (t 1- 4). Mi mt channel cha


mt kiu ca pixel d liu.
v d: bc nh RGB c 3 knh R (), G (xanh l cy), B (xanh da tri).
Grayscale l bc nh ch cha mt knh im nh sng nht.
Truy cp gi tr im nh.
Chng ta c th to ra rt nhiu hm truy cp im nh m khng cn tc ng
trc tip n d liu nh th.
Cch d nht c tng im nh ring l l s dng hm cvGet2D.
cvScalar cvGet2D(const *CvArr, int row, int col).
Hm ny c 3 thuc tnh: mt pointer tr n d liu cha trong CvArr*, mt
mng ch r v tr hng v ct. Hng topmost ca im nh l row=0, v
bottommost l row=height-1.
2.2.5. Cc hm thc hin x l nh
Th vin HighGUI ch cung cp cc hm thc hin vo ra bc nh tuy nhin vn
x l nh mi thc s l quan trng v kh khn. OpenCV cung cp cc hm thc
hin x l nh nm trong th vin cv. Mt bc nh khng ch n gin l mt mng
gi tr mu sc. khi chng ta cp n x l nh th n bao gm cc hm x l
lin quan n cu trc ca bc nh.
Mt s hm x l nh thng xuyn s dng nh sau:
Smoothing (lm mn).
Smoothing hay cn gi l blurring n l mt thut ton x l nh n gin v
thng xuyn s dng. C rt nhiu nguyn nhn chng ta dng n smoothing nhng
n thng dng loi b nhiu do my nh sinh ra. Smoothing quan trng khi bn
mun gim phn gii ca mt bc nh theo rt nhiu cch khc nhau.
Bng vic thay th kiu smooth v cc thng s s c cc bc nh tng i khc
nhau tuy theo mc ch s dng nhng thng dng nht vn l CV_GAUSSIAN.
Image morphology (hnh thi hc bc nh).
OpenCV cung cp hm chuyn i morphology nhanh chng v tin li khi lm
vic vi bc nh. C bn ca morphology l dilation (gin) v erosion (co) chng ngy

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
12

cng c s dng rng ri trong vic loi b nhiu, c lp nhng thnh phn ring r,
v lin kt cc thnh phn vi nhau.
Theshold (ngng).
Chng ta thng lm rt nhiu bc x l nh khc nhau v a ra nhng quyt
nh cui cng v im nh trn mt bc nh hay ni cch khc l loi b gi tr pha
trn hoc di mt ngng no gi li nhng im nh nm trong khong gi tr
mong mun lc ta dng hm threshold.
2.2.6. Cc hm Histograms and Matching
Histogram.
Trong vic phn tch hnh nh thng tin v i tng v video, chng ta thng
mun biu din chng ging nh l mt histogram. Histogram c th s dng biu
din rt nhiu dng khc nhau nh phn b mu ca i tng, dc mu cnh ca
mt i tng, hay xc sut phn b v tr ca i tng.
Tm histogram c s dng rt nhiu trong cc chng trnh ng dng th gic
my tnh. Histogram c s dng d tm s thay i gia cc cnh trong video
bng cch nh du khi cnh v mu sc thay i t khung ny n khung khc.
Chng s dng nhn dng nhng im quan tm trn mt bc nh bng cch gn
mi im nh mt tag cha nhng Histogram ca nhng c im gn nht.
Histogram ca cnh, mu, gc v rt nhiu c im khc. Mt chui cc mu sc,
cnh c th dng xc nhn d c hay khng mt video c copy trn web.
Ghp mu template matching.
Hm ghp cvMatchTemplate() khng da trn histogram, hn na, hm ny
ghp mt bc nh thc n mt bc nh u vo bng cch Sliding ng dn qua
bc nh u vo ny s dng thao tc ghp m t trong phn ny.
2.2.7. Hm Contours
Mc d thut ton nh d tm cnh candy c th s dng tm ra cnh pixel
phn bc nh thnh cc phn khc nhau. Bc tip theo l xy dng cc cnh ny
thnh contours.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
13

2.2.8. C s ton hc ca thut ton CamShift


Camshift vit gn ca Continuously Adaptive Mean Shift l c s ca thut
ton theo di khun mt trong OpenCV. N bao gm thut ton c s Mean Shift vi
thch ng cc bc thay i kch c ca vng. Nhn l mt hm step n gin nm
trong mt bn v xc sut (skin-probability). V xc sut ca mi mt im nh
c tnh ton da trn mu sc bng cch s dng mt phng php gi l Histogram
backprojection. Mu sc c a ra nh Hue t m hnh mu HSV.
K t nhn l mt hm step, Mean Shift mi mt ln lp th ch n gin l gi
tr trung bnh x v y ca v xc sut ng gp trong vng hin ti. iu ny c xc
nh bng cch chia moment th nht ca vng ny cho moment th khng mi ln
lp v dch chuyn vng n trng tm xc sut.
Sau khi Mean Shift hi t n mt v tr (x,y), phm vi ca vng c cp nht
da trn gi tr hin ti ca moment th 0. Gi tr ca bn cp nht ny c th thay i,
phm vi tuyn tnh ca n c gi nh l t l thun vi cn bc 2 ca tng ca cc
khon ng gp xc sut ca khu vc hin ti (v d. Moment th khng). Chiu rng
v chiu di ti thi im th i s c tnh thng qua gi tr ti thi im th i-1,
ngha l gi tr trc .
Trong thut ton CamShift, mt bc nh v xc sut phn b mu sc ca bc
nh trong chui video c to ra. u tin n to ra mt mu m t hue s dng mt
biu mu sc (color Histogram) v s dng khng gian mu Hue Saturation Value
(HSV) c tham chiu t khng gian mu tiu chun RGB. V phn b mu sc ca
cc bc nh trong video thay i theo thi gian, nn thut ton CamShift c sa
i d dng thch ng vi s thay i phn b xc sut mu sc ca mc tiu n
theo di.
Trong OpenCV thut ton CamShift c iu chnh t thut ton Mean Shift.
V n c tnh ton nh sau:
1) Chn v tr ban u ca Search Window.
2) Dng thut ton Mean Shift (lp li mt hoc nhiu ln), lu moment th 0 ny.
3) t kch c ca ca s tm kim bng mt hm ca moment th 0 tm c
trong bc 2.
4) Lp li bc 2 v 3 cho n khi hi t (v tr dch chuyn chnh t hn gi tr
threshold hin ti).

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
14

2.3. C bn v PIC16F877A
2.3.1. PIC l g ?
PIC l vit tt ca Programable Intelligent Computer, tm dch l My tnh
thng minh kh trnh do hng Microchip Technology t tn cho vi iu khin u
tin ca h v pht trin thnh dng h vi iu khin PIC sau ny.
2.3.2. c im ni bt ca PIC16F877A
S dng cng ngh tch hp RISC CPU.
Ngi s dng c th lp trnh vi 35 cu lnh c bn.
Tt c cu lnh thc hin trong mt chu k lnh, ngoi tr mt s cu lnh
r nhnh thc hin trong 2 chu k lnh.
Tc hot ng xung ng h l DC-20MHZ.
B nh hot ng l flash 8kx14 words.
B nh RAM 368x8 bytes.
B nh EFPROM 256x8 bytes.
- Kh nng ca b vi x l ny.
Kh nng ngt ln n 14 ngt trong v ngt ngoi.
Ngn nh Stack c phn chia lm 8 mc.
Truy cp b nh bng a ch trc tip hoc gin tip.
Ngun khi ng (POR).
B to xung (PWRT) v b to dao ng (OST).
B m thi gian (WDT) vi ngun dao ng trn chp (ngun dao ng
RC) hot ng ng tin cy.
C m chng trnh bo v.
Phng thc ct gi SLEEP.
C bng la chn dao ng.
Cng ngh CMOS FLASH/EFPRO ngun mc thp tc cao.
Thit k hon ton tnh.
Mch chng trnh ni tip c 2 chn.
Mch x l c ghi ti b nh chng trnh.
Di in th hot ng 2.0 n 5.5V.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
15

Ngun in s dng 25mA.


Dy nhit cng nghip v thun li.
Cng sut tiu th thp.
- Cc c tnh ni bt ca thit b ngoi vi trn Chip.
TIMER0: 8 bits ca b nh thi, b m vi h s t l trc.
TIMER1: 16 bits ca b nh thi, b m vi h s t l trc, c kh nng
tng trong khi ch sleep qua xung ng h c cung cp bn ngoi.
TIMER2: 8 bits ca b nh thi, b m vi 8 bits ca h s t l trc, h
s t l sau.
2.3.3. S cc chn ca PIC16F877A

Hnh 7: PIC16F877A

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
16

S khi vi iu khin PIC16F877A.

Hnh 8: S khi ca PIC16F877A

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
17

c im:
Chn 13, 14 l cc chn kt ni vi thch anh to dao ng cho chip (N
c v nh l qu tim ca chp). Ta mc thm vo 2 t in c in dung
= 33pF tng n nh cho dao ng thch anh.
PORTB v PORTB lc ny ng vai tr l ng xut nn cc thanh ghi
TRISB trong chp phi c t gi tr logic 1 (Nu ta t ng B l ng
nhp th ta phi t gi tr logic 0).
Cc thng s cn thit khi lm vic vi PIC ta dng bng datasheet ca h
PIC16F877A.
VDD: L in p cp ngun cho vi iu khin, ngun in cp l 5V.
GND: L chn ni mass khi s dng cn thit k mt mch n p bo v
cho vi iu khin , thng s dng IC n p 7805.
PORTA: C 6 pin t chn 2 n chn 7.
PORTB: C 8 chn t 34 n 40, ngoi chc nng lm cng xut nhp cn
c thm mt s chc nng ph khc.
PORTC, PORTE: Tng t nh PORTB.
Chn Reset (MCLR): Ng vo chn 1 dng thit lp iu kin u cho
vi iu khin.
OSC1, OSC2: Hai chn ny c s dng nhn ngun xung clock t bn
ngoi c th l t thch anh dao ng.
Cc chn RC3, RC4 dng kt I2C.
Cc chn RC6, RC7 l chn kt ni RS232.

2.4. Giao tip RS232


Chun giao tip RS232.
Vn giao tip gia PC v vi iu khin rt quan trng trong cc ng dng iu
khin, o lng v..v. ghp ni qua cng ni tip RS232 l mt trong nhng k thut
c s dng rng ri ghp ni cc thit b ngoi vi vi my tnh. N l mt chun
giao tip ni tip dng nh dng khng ng b, kt ni nhiu nht l 2 thit b, chiu
di kt ni ln nht cho php m bo truyn, nhn d liu l 12.5m n 25.4m, tc
20kbit/s, i khi l tc 115kbit/s vi mt s thit b c bit.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
18

y ti chn chun giao tip RS232 v iu khin Active X Microsoft


Communication 6.0 (MSComm).

Thit lp giao din cho chng trnh.


Vit m cho chng trnh.
Giao din ca RS232-9-pin v chc nng cc chn nh sau:
-

Chn 1: Data Carrier Detect (DCD): pht tn hiu mang d liu.

Chn 2: Receive Data (RXD): Nhn d liu.

Chn 3: Transmit Data (TxD): Truyn d liu.

Chn 4: Data Terminal Ready (DTR): u cui d liu sn sng kch hot bi
b phn khi mun truyn d liu.

Chn 5: Signal Ground (SG): mass ca tn hiu.

Chn 6: Data Set Ready (DSR): D liu sn sng, c kch hot bi b nhn
khi n mun truyn d liu.

Chn 7: Request to Send: Yu cu gi b truyn t ng ny ln mc hot


ng khi sn sng truyn d liu.

Chn 8: Clear to Send (CTS): Xo gi b nhn t ng ny ln mc hot


ng thng bo b truyn l n sn sng nhn tn hiu.

Chn 9: Ring Indicate (RI): Bo chung cho bit l b nhn ang nhn tn hiu
chung.

Hnh 9: Cng giao tip RS232

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
19

2.5. Gii thiu v chp mch cu L298N


IC L298N l mch tch hp n chp c v cng sut 15 chn (multi watt 15). L
IC mch cu i c kh nng hot ng in p cao, dng cao. N c 2 chn enable
c chc nng cho php hoc khng cho php chp hot ng, c lp vi chn tn hiu
vo. Cc pht (emitter) ca transitor di ca mi mch cu c ni vi nhau v ni
ra chn ngoi ni vi mch in tr cm ng dng khi cn.
N c thm mt chn cp ngun gip mch logic c th cp ngun in th
thp hn.
Bng 1: Chc nng cc chn ca L298N
Chc nng

MW. 15

Tn

1; 15

Sensor A;

Ni chn ny qua in tr cm ng dng xung GND

Sensor B

iu khin dng ti

2; 3

Out 1;
Out 2

VS

5; 7

Input 1;
Input 2

Ng ra ca cu A. Dng ca ti mc gia 2 chn ny


c quy nh bi chn 1.
Chn cp ngun cho tng cng sut, cn c mt t
in cm khng 100nF ni gia chn ny v chn
GND

Chn ng vo ca cu A, tng thch chn TTL


Chn ng vo Enable tng thch chun TTL. Mc
thp ca chn ny s cm ng ra cu A, i vi enable
A; hoc ng ra cu B i vi enable B;

6; 11

Enable A;
Enable B

GND

Chn mass

VSS

Chn cp ngun cho khi logic. Cn c t in 100nF


gia chn ny vi chn GND

10; 12

Input 3;
Input 4

Cc chn logic ng vo ca B

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
20

13; 14

Ng ra ca cu B, dng ca ti mc gia 2 chn ny


c quy nh bi chn 15.

Output 3;
Output 4

S chn

Hnh 10: Chp mch cu L298N


-

Bng iu khin ng c s dng L298N

Ta c th thay i trng thi ng c da vo bng s tht sau (Input 1; Input 2), y


ti lun mc ra chn cho php (enable) l mc cao.

Bng 2: Tm tt nguyn tc iu khin ng c s dng L298N


Chiu iu khin

Input 1

Input 2

Dng li

Quay thun

Quay ngc

Dng li

V vy, iu khin ng c ch cn iu khin gi tr xut ra t cng ca


PIC16f877A hai chn ni vi Input 1 v Input 2.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
21

CHNG 3
XY DNG PHN MM IU KHIN

S tng qut ca r bt di ng

Hnh 11: S khi tng qut ca r bt

3.1. Th gic my iu khin r bt di ng bm i tng


Mc tiu ca n l iu khin r bt bm theo mt i tng s dng
OpenCV. N phi duy tr c khong cch nht nh gia r bt v i tng, khi
i tng di chuyn r bt phi di chuyn theo da vo hnh nh thu c t webcam
xc nh i tng i thng, r phi, r tri, i tin, i li v..v. Ngha l chng ta
phi iu khin c tc v hng ca r bt tuy nhin trong n ny ti ch iu
khin hng, tc ca i tng c th xem l khng i. lm c vic ny,
chng ta phi nhn dng c i tng v xc nh c hng di chuyn ca n.
Th hai phi xy dng thut ton bm i tng. Th ba l phi xy dng c phn
cng kim nh thut ton CamShift.
C rt nhiu cch d tm i tng v d da trn hnh dng, m thanh v..v.
nhng thut ton ny thc s rt phc tp. gim kh ca thut ton theo di
chng ta t pha sau i tng mt vt c nhng thuc tnh v mu sc c bit v d

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
22

bng n led pht sng mu , mu vng, mu xanh v..v. Nh vy, lc tin hnh theo
di s gim c rt nhiu v vic x l nhiu do nn v cc i tng khng mong
mun gy ra, gim ng k s nhm ln i tng theo di. Chng trnh x l nh s
dng thut ton CamShift trong OpenCV tin hnh theo di cn c vo mu sc i
tng. Khong cch gia r bt v i tng chng ta t l c nh, da vo tm ca
i tng tm c qua thut ton CamShift chng ta bit c v tr ca i tng
tham chiu trn mt phng nh. Cc thuc tnh nhn c s truyn qua cng giao tip
RS232 xung vi iu khin PIC16f877A iu khin hng ng c mt chiu (DC)
thng qua mch cu iu khin ng c L298N.

3.2. Thut ton tnh hng v kch c ca i tng cn theo di


3.2.1. Thut ton chung

Hnh 12: S thut ton chung

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
23

3.2.2. Nhn dng v bm mc tiu di ng


Cu trc ca h bm mc tiu di ng gm hai phn chnh. Phn th nht l phn
x l nh da vo chui hnh nh thu c t webcam nhn dng v tnh ton v tr
ca i tng quan tm.
Phn th hai l phn iu khin, da vo thng tin v tr i tng nhn c
trong mt phng nh, tnh ton tn hiu iu khin r bt sao cho i tng di chuyn
c duy tr mt v tr nht nh trn mt phng nh v mt khong cch nht
nh.
gim nh hng ca nhiu v gim khi lng tnh ton trong x l nh nn
cc bc x l nh nhn dng, thch nghi cng c s dng. Cc bc ny s c
trnh by ln lt nh di y.
Nhn dng mc tiu l bc quan trng u tin trong h thng bm mc tiu di
ng. Mc tiu ca qu trnh ny l lu gi cc gi tr thuc tnh ca i tng
c chn nh ni trn cc thuc tnh nh cnh, gc, cc thuc tnh v mu
sc v..v. Trn c s so snh nhm phn bit mc tiu vi nn v cc mc tiu
khc. Qua xc nh c v tr ca mc tiu trn mt phng nh. Trong qu trnh
tm kim ta chia bc nh thnh tp hp cc pixel bao gm hai thnh phn hoc thuc
i tng hoc thuc nn. Qua ta tin hnh x l cc gi tr thuc tnh ca i
tng trong v tr mi v tm nhn dng c i tng cn theo di.
Mt phng nh l mt phng c gc nm pha trn bn tri, trc x l trc nm
ngang, trc y l trc thng ng nh hnh v.

Hnh 13: Mt phng nh

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
24

Cn c vo v tr dch chuyn ca i tng trn mt phng nh so vi gc to


m ta tnh ton cc kh nng di chuyn ca r bt sao cho i tng nm mt v tr
bt k trn mt phng nh.
Tnh ton v tr ca mc tiu di ng trong mi trng c nhiu s dng thut
ton CamShift. Cn c vo kt qu thu c v gi tr tm ca i tng qua thut
ton CamShift xut thut ton di chuyn nh sau.
Hnh v sau m t cc v tr tng ng ca i tng trn mt phng nh vi iu
kin di chuyn.

Hnh 14: Biu din i tng di chuyn trn mt phng nh

3.2.3. Chuyn i khng gian mu t RGB n HSV


Chng ta s dng hm cvCvtColor() chuyn i gia cc khng gian mu
trong OpenCV khng gian mu chnh l s lng cc knh hay l chuyn i t khng
gian mu ny n khng gian mu khc.
H: (Hue) vng mu.
S: (Saturation) bo ho mu.
V( hay B): sng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
25

Kt qu chuyn i trong khng gian mu.

Hnh 15: Chuyn i khng gian mu RGB n HSV


3.2.4. Histogram
Trong vic nhn dng i tng, bc nh v thng tin video, chng ta thng
mun m t i tng di dng biu (Histogram) d quan st. Histogram c th
c s dng ch ra s khc nhau gia cc i tng v mu sc, gc, cnh cc
mu Gradient cnh ca i tng v ch ra xc sut phn b mu sc. Trong mi mt
khung vng mu m chng ta quan tm c tnh ton khung hnh tip theo sau
mt chui cc khung hnh lin tip s c theo di vi Histogram. Histogram ca i
tng l duy nht nu gi tr Histogram mi nhn c gn vi gi tr histogram nht
th i tng s c chn.
To mt Histogram Camshift theo di i tng da cn c vo vic so snh
Histogram mu sc ca i tng nhn c vi gi tr ca thuc tnh v tr mi nn
vic to mt Histogram l iu thit yu u tin trong mc ch nhn dng i tng.

Hnh 16: Histogram

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
26

Quan st hai Histogram ca i tng trong hnh trn cho ta thy thuc tnh mu
sc ca hai i tng m chng ta cn theo di. Mi thanh mu ch r c bao nhiu
pixel c gi tr hue. Hue l mt trong ba thuc tnh m t mu ca pixel trong khng
gian mu HSV (Hue, Saturation, Value).
3.2.5. Lc nhiu Filter
Lc th c s dng loi b nhiu, c nhiu nguyn nhn pht sinh nhiu
trong qu trnh x l nh. Ngoi ra lc nhiu cn quan trng trong vic chng ta gim
phn gii ca bc nh. C rt nhiu cch chng ta loi b nhiu, trong n ny,
do i tng theo di l vt bt k nn ti t cc loi nhiu thng thng qua s
tu chnh tu thuc vo i tng nhn c.
Kt qu lc nhiu s dng trong n nh sau.

Hnh 17: kt qu trc v sau khi lc nhiu

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
27

3.2.6. Thut ton CamShift


Trong phn ny ti s trnh by vic dng thut ton CamShift theo di mc tiu di
ng.

Hnh 18: S thut ton CamShift

1) Histogram.
u tin mt Histogram s c to ra, Histogram ny cha cc thuc tnh lin quan
n mu sc nh trnh by phn trn. Tip theo, tm ca v kch c ca mc tiu
c tnh ton theo di mc tiu khi hnh dng v kch c ca n thay i.
2) Tnh ton xc sut phn b ca mc tiu cn c vo Histogram nhn c
Histogram c to ra duy nht mt ln, lc bt u theo di. Sau n c s dng
gn cho xc sut i tng gi tr mi im nh trong khung video tip theo.
3) Dch chuyn n v tr mi vi mi khung hnh va nhn c t video,
CamShift s dch chuyn n v tr m n c lng trn i tng n s m tp
trung nhiu im sng nht trong bc nh xc sut. N tm v tr mi bt u t v tr
trc v tnh ton gi tr trng tm ca xc sut phn b bn trong mt hnh ch
nht. Sau n dch chuyn v tr ca hnh ch nht v trng tm va tm c.
OpenCV s dng hm cvCamShift() thc hin chuyn dch ny. Vic tnh ton
trng tm trong Camshift th da vo thut ton Mean Shift nh cp trc .

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
28

Kt qu tnh ton tm i tng khi dng thut ton CamShift.

Hnh 19: Kt qu tnh to tm bng thut ton CamShift


Da vo gi tr x, y va tm c ny ta c th iu khin r bt chy bm i
tng.
Kt qu theo di i tng.

Hnh 20: Kt qu bc u theo di i tng bng thut ton CamShift

Da vo kt qu nhn c nh trn, ta s gi tn hiu iu khin ny qua cng kt ni


RS232 iu khin r bt di ng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
29

3.2.7. Thit k hon chnh phn mm iu khin


Chng trnh c thit k trn visual C++ 2008 (MFC Aplication). Giao din
chng trnh iu khin c chia thnh 3 khi chnh nh trn hnh sau.
-

DIEU KHIEN ROBOT. Khi c xy dng c chc nng iu khin r bt


quay phi, quay tri, i tin i lui v..v. c bit nt lnh T ng c tnh
hp chng trnh x l nh OpenCV nh ni trn.

MO CONG COM: Khi c chc nng thc hin vic giao tip RS232 gia
PIC16F877A v laptop.

DIEU KHIEN DONG CO DC. Khi thc hin vic iu khin ng c mt


chiu.

Vmin: gi tr nh nht sng ca bc nh.

Vmax: gi tr ln nht sng ca bc nh.

Smin: gi tr bo ha ca bc nh.

Dilate: gi tr gin ca cc thnh phn nh.

Erode: gi tr co li ca thnh phn nh.

Filter: cc hm lc khc nhau s dng trong chng trnh.

Histogram: gi tr histogram ca i tng.

Backproject: quan st bc nh t pha sau.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
30

Hnh 21: Giao din phn mm thit k hon chnh

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
31

Hnh 22: Kt qu th nghim vi phn mm

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
32

Hnh 23: Kt qu th nghim vi phn mm

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
33

CHNG 4
XY DNG MCH PHN CNG

4.1. S mch dng trong n


Mch phn cng c chia thnh 4 khi:
-

Khi iu khin trung tm s dng PIC16F877A.

Khi ngun.

Khi iu khin ng c.

Khi truyn thng RS232.

4.1.1. Khi iu khin trung tm


Khi iu khin trung tm l khi c chc nng iu khin chnh trong khi phn
cng bao gm iu khin ng c v giao tip RS232. PIC16F877A c la chn s
dng trong n m nhn chc nng khi iu khin ny.

Hnh 24: S khi iu khin trung tm

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
34

Trong khi phn cng dng PIC16F877A iu khin ng c. C ngt dng


trong vic truyn nhn d liu gia PC v PIC16F877A.
4.1.2. Khi ngun

Hnh 25: S khi ngun

Khi ngun c chc nng ly in p 12V t Acqui in p ny c a qua


IC7805 chuyn i thnh in p 5V cung cp ngun cho PIC16F877A.
4.1.3. Khi truyn thng RS232

Hnh 26: S khi truyn thng RS232


Khi ny c nhim v nhn tn hiu iu khin t cng RS232 ca laptop truyn
xung cho PIC16F877A iu khin hot ng ca r bt.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
35

4.1.4. Khi iu khin ng c


Khi ny c thnh phn chnh l mt mch cu L298N c chc nng iu khin
hot ng ca cc ng c r bt. Nguyn tc hot ng ca L298N nh trnh by
phn trn.
J5
+5V
VIN2_motor2
EN_motor2
IN1_motor2
IN2_Motor1
EN_motor1
IN1_Motor1

8
7
6
5
4
3
2
1

J3
2
1

C2
CAP NP

CON2
CON8
U1

D1

R3
Resistor
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

DIODE

D2
DIODE

D3
DIODE

D4
DIODE

R1
RESISTOR
J1

IN2_motor2
EN_motor2
IN1_motor2

D9
+5V

V-

VIN2_Motor1
EN_motor1
IN1_Motor1

1
2

LED
V+

V+

CON2

D10
DIODE
V+

R2
D5
DIODE

D6
DIODE

D7
DIODE

D8
DIODE

Resistor
L298
J4
2
1

C3
CAP NP

CON2

Hnh 27: S nguyn l mch cu iu khin ng c

Sau khi hon thin cc khi iu khin ta xy dng c mch iu khin phn
cng hon thin nh sau.
4.1.5. Phn cng hon chnh

Hnh 28: S phn cng hon chnh

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
36

4.2. Tp lnh iu khin r bt


Bng 3: Tp lnh iu khin r bt
Lnh

ng c 1

Tin

Li

Dng li

ng c 2

Tin

Li

Dng li

R bt

Tin

Tin

i thng

Li

Li

i li

Dng

Dng

Tin

Li

R phi

Li

Tin

R tri

Yahoo:thoi_chao_em_12325

Dng li

Email:xuanducdhcn@gmail.com
37

CHNG 5
KT QU THC HIN

Kt qu c th nghim trong mi trng sau:


-

Operating System: Window7 Ultimate.


Processor: Intel Core2 CPU T5500 @ 1.66GHz 1.67 GHz.
Installed memory (RAM): 2.00 GB.
System type: 32-bit Operating System.
Webcam: sony visual communication camera VGP-VCC4.

Mi trng tnh: r bt ng yn i tng di chuyn pha trc r bt, mi


trng tnh dng kim tra chnh xc, tc p ng v tin cy ca thut ton
xy dng.
Mi trng ng: r bt di chuyn bm theo i tng, qua s kim tra c
kh nng p ng v tin cy ca ton h thng a ra cc iu chnh ph hp
vi bi ton thc t.
Th nghim trong mi trng tnh v mi trng ng c t di nhng iu
kin nh sng nht nh, Webcam c iu chnh nhng phn gii khc nhau
qua ta s c rt ra c nh gi ton din hn cho ton h thng.
i tng th nghim l theo di vt trn mu c tc tng dn v lin tc
thay i em s dng tay di chuyn vt ny.
Biu gi tr X,Y l biu thay i gi tr ca tm i tng d tm c qua
thut ton xy dng trn.
Dng mt bin m trong thut ton kim tra c bao nhiu ln b mt i
tng do i tng di chuyn qu nhanh, hoc kch thc qu nh. S ln mt i
tng ny trn biu gi tr X,Y l cc on thng nm song song vi trc nm
ngang.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
38

Hnh 29: Hnh nh robot hon chnh

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
39

5.1. Kt qu th nghim vi mi trng tnh


Cng mt iu kin mi trng nhng bc nh c phn gii khc nhau s cho
ta kt qu khc nhau.
Mi trng tnh phn gii (160x120) kt qu cho thy c tng cng 34 ln b
mt i tng do i tng di chuyn qu nhanh.
350
300
250
200
X

150

100
50

1
133
265
397
529
661
793
925
1057
1189
1321
1453
1585
1717
1849
1981
2113
2245
2377
2509
2641
2773
2905
3037
3169
3301
3433

Biu 1: Gi tr to tm i tng mi trng tnh (160x120).


Mi trng tnh webcam phn gii (176x144) kt qu cho thy c tng cng
20 ln b mt i tng do i tng di chuyn qu nhanh.

350
300
250
200
150

100

50

1
121
241
361
481
601
721
841
961
1081
1201
1321
1441
1561
1681
1801
1921
2041
2161
2281
2401
2521
2641
2761
2881
3001
3121

Biu 2: Gi tr to tm i tng mi trng tnh (176x144).

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
40

Mi trng tnh webcam c phn gii (320x240) kt qu c 16 ln b mt


i tng do i tng di chuyn qu nhanh.
300
250
200
150

100

50

1
128
255
382
509
636
763
890
1017
1144
1271
1398
1525
1652
1779
1906
2033
2160
2287
2414
2541
2668
2795
2922
3049
3176

Biu 3: Gi tr to tm i tng mi trng tnh (320x240)

Mi trng tnh webcam c phn gii (640x480) kt qu 17 ln b mt i


tng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
41

350
300
250
200
X

150

100
50

1
108
215
322
429
536
643
750
857
964
1071
1178
1285
1392
1499
1606
1713
1820
1927
2034
2141
2248
2355
2462
2569
2676
2783

Biu 4: Gi tr to tm i tng mi trng tnh (640x480).

5.2. Kt qu th nghim vi mi mi trng ng


Mi trng ng webcam c phn gii (160x120) kt qu c 116 ln b mt
i tng.
350
300
250
200
X

150

100
50

1
182
363
544
725
906
1087
1268
1449
1630
1811
1992
2173
2354
2535
2716
2897
3078
3259
3440
3621
3802
3983
4164
4345
4526
4707

Biu 5: Gi tr to tm i tng mi trng ng (160x120).

Mi trng ng webcam c phn gii (176x144) kt qu c 97 ln mt i


tng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
42

350
300
250
200
150

100

50

1
182
363
544
725
906
1087
1268
1449
1630
1811
1992
2173
2354
2535
2716
2897
3078
3259
3440
3621
3802
3983
4164
4345
4526

Biu 6: Gi tr to tm i tng mi trng ng (176x144).

Mi trng ng webcam c phn gii (320x240) kt qu c 91 ln b mt


i tng.
350
300
250
200
X

150

100
50

1
190
379
568
757
946
1135
1324
1513
1702
1891
2080
2269
2458
2647
2836
3025
3214
3403
3592
3781
3970
4159
4348
4537
4726

Biu 7: Gi tr to tm i tng mi trng ng (320x240).

Mi trng ng webcam c phn gii (640x480) kt qu 89 ln b mt i


tng.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
43

350
300
250
200
X

150

100
50

1
136
271
406
541
676
811
946
1081
1216
1351
1486
1621
1756
1891
2026
2161
2296
2431
2566
2701
2836
2971
3106
3241
3376

Biu 8: Gi tr to tm i tng mi trng ng (640x480).

Mi trng ng i tng di chuyn tc va phi ph hp vi tc


ng c s ln mt i tng l 10.
300
250
200
150

X
Y

100
50

1
109
217
325
433
541
649
757
865
973
1081
1189
1297
1405
1513
1621
1729
1837
1945
2053
2161
2269
2377
2485
2593
2701

Biu 9: Gi tr to tm i tng mi trng ng tc khng i

Nhn xt: S ln mt i tng biu hin r nht trn biu ca ca mi trng


ng, ging nh nhn xt tng quan lc u cc thut ton trong mi trng tnh thc

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
44

s b kh xa trong mi trng ng. Biu hin c th trong cc th nghim trn (v


d: webcam c phn gii (640x480) trong mi trng tnh c 17 ln b mt i
tng, trong mi trng ng l 89 ln).
C nhiu nguyn nhn, tuy nhin trong trng hp ny phn ln l do tc
ng c 1 chiu c chn qu chm khng p ng kp yu cu ca phn mm iu
khin. C th lc theo di i tng tc i tng mc ph hp vi tc
ng c th h thng lm vic rt tt, s ln mt i tng trong mi trng ng lc
ny ch l 9.
H thng c th nghim nhiu trng hp, trong hu ht cc tnh hung
khi iu kin nh sng ph hp, r bt c th theo di i tng trn ng thng v
cc ng r, nu i tng dng li r bt lun iu chnh c i tng nm v tr
mong mun trn mt phng nh. Tuy nhin nu trng hp i tng di chuyn qu
nhanh th h thng gp mt t vn do tc h thng khng p ng kp.
Do tm nhn v tc ca webcam cn hn ch, tc p ng ca h thng
khng cao, do nu i tng chuyn ng qu nhanh hoc hng di chuyn thay
i qu nhanh th h thng s b mt i tng.
H thng lm vic tt di iu kin nh sng va phi, nu mi trng c
sng qu cao nh nh sng mt tri th h lm vic rt km do mu v sng ca i
tng lun thay i khi i tng thay i hng

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
45

KT LUN

nh gi kt qu t c
Bo co ny m t h thng r bt di ng bm i tng s dng th vin x l
nh OpenCV ca Intel. Thut ton s dng nhn hnh nh t webcam tin hnh kh
nhiu, histogram, s dng thut ton CamShift, tnh ton ta tm, kch c, gc,
thit k khi giao tip RS232 s dng Microsoft Communication Version 6.0. Thit k
mch iu khin ng c s dng PIC16F877A. Di nhng iu kin nh sng nht
nh i tng c th c tm ra nhanh chng chnh xc m t b nh hng ca
nhiu.
Hon chnh c c phn cng v phn mm ca r bt, tin hnh chy th trn
nhiu dng mi trng khc nhau, ban m, ban ngy, nh sng mnh, nh sng yu,
ng thng, ng vngkt qu, r bt lun bm theo gi i tng nm trn
mt phn ca mt phng nh m ta chn.
Tuy nhin chng trnh cn hn ch trong thit k phn cng (khung xe), phn
ny cn yu nn gy kh khn trong vic di chuyn v ng c ca r bt di chuyn
tc chm do khng p ng c tc ca webcam ca r bt. X l nh ph
thuc rt nhiu vo cht lng hnh nh v tc chp hnh ca webcam. Tc ca
r bt l c nh do cha xy dng thut ton iu khin tc r bt ph hp tc
dch chuyn ca i tng ang theo di.
Chng trnh c th c ci thin bng cch thm mt s hm lin quan n x
l nh nh trnh by trn. Tc theo di i tng ca thut ton CamShift l
tng i thp v d b mt i tng mt s iu kin nht nh nh i tng qu
nh hoc di chuyn qu nhanh. Nhc im ca thut ton CamShift c th c ci
thin bng thut ton lc Kalman. iu ny cha c nghin cu do thi gian c hn.
Chng trnh iu khin mi c th nghim trn mt s mi trng nht nh
kt qu t c l tng i tt. Tuy nhin trong x l nh vn nhiu trong mi
trng rt quan trng do cn c thm nhiu th nghim na mi c th nh gi
c tin cy ca kt qu t c.
Webcam ang s dng c kh nng lc nhiu tng i tt. Tuy nhin thi gian
tnh ton ca r bt s tng ln nu tng phn ca webcam tng ln. Trong ng
dng ny em s dng webcam c phn gii c th iu chnh c c th nh sau

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
46

(160x120, 176x144, 320x240, 640x480). Kt qu thc hin cho thy vic x l nhiu
kh khn hn vi cc webcam c phn gii tng dn do nhiu nh khng cn thit
tng ln, gn nh khng c thay i nhiu. Tuy nhin vi webcam c phn gii cao
hn th cha c kim nghim.
Cc hm lc nhiu c th loi b nhiu gn nh hon ton, nhng n phi qut
bc nh qu nhiu ln, do n s lm tng thi gian tnh ton ca chng trnh, cc
hm ny cn c ci thin v ti u hn.
R bt c xy dng di chuyn trong trng hp webcam t v tr cao
hn so vi i tng.

Hng pht trin ca n.


R bt ch c th nghim trn h thng c tc thay i chm, cn phi
c th nghim vi h thng c tc nhanh hn.
Qua th nghim cho thy r bt hot ng tt. Thay v d tm mt vng c bit
trn i tng nh ng trn mu , mu xanh v..v. H thng cn c ci thin
d tm i tng trc tip da vo cc vng c bit trn i tng. Khng ch mu
sc ca i tng c s dng m cn quan tm n cc c im ca cnh, gc, nh
vy s tng c tin cy cho vic d tm i tng.
Phn x l nh nn b sung thm b lc Kalman theo di nhng i tng
chuyn ng nhanh, kch thc b s khc phc c nhc im ca thut ton
CamShift.
Phn cng cn b sung thm thut ton tng, gim tc theo s thay i tc
ca i tng.
Kt qu th nghim cn mang tnh trc quan do cn xy dng c khi phc
v ring cho vic th nghim kt qu trong x l nh.

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
47

PH LC A
CHNG TRNH X L NH

//---------------------------------------------------------------------------------------------------// Chng trnh x l nh s dng trong n


// Nguyn Xun c K51H-CDT
// ngy 8.12.2010
// Ngn ng C++
//-----------------------------------------------------------------------------------------------------

#include "stdafx.h"
#include "afx.h"
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
#include "cxcore.h"
#include <windows.h>
#include <tchar.h>
#include <stdarg.h>
#include <iostream>
#include <fstream>
IplImage *image = 0, *hsv = 0, *hue = 0, *mask = 0, *backproject = 0, *histimg
= 0, *gray;
CvHistogram *hist = 0;

int backproject_mode = 0;
int select_object = 0;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
48

int track_object = 0;
int show_hist = 1;
CvPoint origin;
CvRect selection;
CvRect track_window;
CvBox2D track_box;
CvConnectedComp track_comp;
int hdims = 16;
float hranges_arr[] = {0,180};
float* hranges = hranges_arr;
int vmin = 10, vmax = 256, smin = 30, count;
CvPoint boxcenter,h;
int d2, d3,count1=0, dem=0;
int high_switch_value = 256;
int highInt = 0;
int low_switch_value = 0;
int lowInt = 0;
int d0=0;
CvPoint seed_point = cvPoint(305,195);
CvScalar color = CV_RGB(250,255,255);
int g_switch_value = 0;
int filterInt = 0;
int lastfilterInt = -1;
//int position;
void switch_callback( int position ){
if( position == 0 ){

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
49

cvSmooth( backproject, backproject, CV_GAUSSIAN,3,3 );


}else if(position==1){
cvSmooth( backproject, backproject, CV_GAUSSIAN,5,5 );
}else if(position==2){
cvSmooth( backproject, backproject, CV_GAUSSIAN, 7, 7 );
}else if(position==3){
cvSmooth(backproject,backproject,CV_BLUR,7,7);
}else if (position==4){
cvSmooth(backproject,backproject,CV_MEDIAN,7,7);
}
}
IplConvKernel* element = 0;
int element_shape = CV_SHAPE_RECT;
//the address of variable which receives trackbar position update
int open_pos=0, close_pos=0, erode_pos=0, dilate_pos=0;
CString data_send_RS232;
COleVariant tmp(data_send_RS232);
void Opening(int pos)
{
element = cvCreateStructuringElementEx( pos*2+1, pos*2+1, pos, pos,
element_shape, 0 );
cvErode(backproject,backproject,element,1);
cvDilate(backproject,backproject,element,1);
cvReleaseStructuringElement(&element);
}
void Closing(int pos)
{

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
50

element = cvCreateStructuringElementEx( pos*2+1, pos*2+1, pos, pos,


element_shape, 0 );
cvDilate(backproject,backproject,element,1);
cvErode(backproject,backproject,element,1);
cvReleaseStructuringElement(&element);
}
void Erosion(int pos)
{
element = cvCreateStructuringElementEx( pos*2+1, pos*2+1, pos, pos,
element_shape, 0 );
cvErode(backproject,backproject,element,1);
cvReleaseStructuringElement(&element);
}
void Dilation(int pos)
{
element = cvCreateStructuringElementEx( pos*2+1, pos*2+1, pos, pos,
element_shape, 0 );
cvDilate(backproject,backproject,element,1);
cvReleaseStructuringElement(&element);
}
void on_mouse( int event, int x, int y, int flags, void* param )
{
if( !image )
return;
if( image->origin )
y = image->height - y;
if( select_object )

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
51

{
selection.x = MIN(x,origin.x);
selection.y = MIN(y,origin.y);
selection.width = selection.x + CV_IABS(x - origin.x);
selection.height = selection.y + CV_IABS(y - origin.y);

selection.x = MAX( selection.x, 0 );


selection.y = MAX( selection.y, 0 );
selection.width = MIN( selection.width, image->width );
selection.height = MIN( selection.height, image->height );
selection.width -= selection.x;
selection.height -= selection.y;
}
switch( event )
{
case CV_EVENT_LBUTTONDOWN:
origin = cvPoint(x,y);
selection = cvRect(x,y,0,0);
select_object = 1;
break;
case CV_EVENT_LBUTTONUP:
select_object = 0;
if( selection.width > 0 && selection.height > 0 )
track_object = -1;
break;
}

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
52

}
// Chuyen doi tu khoang gian mau HSV den RGB
CvScalar hsv2rgb( float hue )
{
int rgb[3], p, sector;
static const int sector_data[][3]=
{{0,2,1}, {1,2,0}, {1,0,2}, {2,0,1}, {2,1,0}, {0,1,2}};
hue *= 0.033333333333333333333333333333333f;
sector = cvFloor(hue);
p = cvRound(255*(hue - sector));
p ^= sector & 1 ? 255 : 0;
rgb[sector_data[sector][0]] = 255;
rgb[sector_data[sector][1]] = 0;
rgb[sector_data[sector][2]] = p;
return cvScalar(rgb[2], rgb[1], rgb[0],0);
}
void CTUBODlg::OnBnClickedButtonAuto()
{
FILE * xFile;
FILE * yFile;
FILE * demFile;
fopen_s (&demFile,"dem.txt","w");
fopen_s (&xFile,"X.txt","w");
fopen_s (&yFile,"Y.txt","w");
UpdateData(true);
Setting();

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
53

CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);
if( !capture )
{
fprintf(stderr,"Could not initialize capturing...\n");
//

return -1;
}
printf( "Hot keys: \n"
"\tESC - quit the program\n"
"\tc - stop the tracking\n"
"\tb - switch to/from backprojection view\n"
"\th - show/hide object histogram\n"
"To initialize tracking, select the object with mouse\n" );

// Tao track_bar.
cvNamedWindow( "Histogram", 1 );
cvNamedWindow( "MobileRobot", 1 );
cvSetMouseCallback( "MobileRobot", on_mouse, 0 );
cvCreateTrackbar( "Vmin", "MobileRobot", &vmin, 256, 0 );
cvCreateTrackbar( "Vmax", "MobileRobot", &vmax, 256, 0 );
cvCreateTrackbar( "Smin", "MobileRobot", &smin, 256, 0 );
cvCreateTrackbar("Dilate","MobileRobot",&dilate_pos,10,Dilation);
cvCreateTrackbar("Erode","MobileRobot",&erode_pos,10,Erosion);
cvCreateTrackbar("Filter","MobileRobot",
switch_callback );

&g_switch_value,

5,

//start:
for(;;)
{

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
54

IplImage* frame = 0;
int i, bin_w, c;
frame = cvQueryFrame( capture );
if( !frame )
break;
if( !image )
{
/* allocate all the buffers */
image = cvCreateImage( cvGetSize(frame), 8, 3 );
image->origin = frame->origin;
cvFloodFill( image,
cvScalarAll(5.0), NULL, 4, NULL );

seed_point,

color,

cvScalarAll(5.0),

hsv = cvCreateImage( cvGetSize(frame), 8, 3 );


hue = cvCreateImage( cvGetSize(frame), 8, 1 );
mask = cvCreateImage( cvGetSize(frame), 8, 1 );
gray = cvCreateImage( cvSize(320,240), 8, 1 );
backproject = cvCreateImage( cvGetSize(frame), 8, 1 );
//cvThreshHist(hist,0);
hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 );
histimg = cvCreateImage( cvSize(320,200), 8, 3 );
cvThreshold(histimg,histimg,low_switch_value,high_switch_value,CV_THRE
SH_BINARY);
cvZero( histimg );
}
cvCopy( frame, image, 0 );
cvCvtColor( image, hsv, CV_BGR2HSV );
if( track_object )

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
55

{
int _vmin = vmin, _vmax = vmax;
cvInRangeS( hsv, cvScalar(0,smin,MIN(_vmin,_vmax),0),
cvScalar(180,256,MAX(_vmin,_vmax),0), mask );
cvSplit( hsv, hue, 0, 0, 0 );
if( track_object < 0 )
{
float max_val = 0.f;
cvSetImageROI( hue, selection );
cvSetImageROI( mask, selection );
cvCalcHist( &hue, hist, 0, mask );
cvNormalizeHist(hist,20*255);
cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 );
cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0.,
0 );
cvResetImageROI( hue );
cvResetImageROI( mask );
track_window = selection;
track_object = 1;
cvZero( histimg );
bin_w = histimg->width / hdims;
for( i = 0; i < hdims; i++ )
{
int val = cvRound( cvGetReal1D(hist->bins,i)*histimg->height/255
);
CvScalar color = hsv2rgb(i*180.f/hdims);
cvRectangle( histimg, cvPoint(i*bin_w,histimg->height),

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
56

cvPoint((i+1)*bin_w,histimg->height - val),
color, -1, 8, 0 );
}
}
cvCalcBackProject( &hue, backproject, hist );
cvFloodFill( backproject, seed_point, color, cvScalarAll(5.0),
cvScalarAll(5.0), NULL, 4, NULL );
cvNormalizeHist(hist,20*255);
cvEqualizeHist( backproject, backproject );
switch_callback(g_switch_value);
Erosion(erode_pos);
Dilation(dilate_pos);
//Closing(close_pos);
cvAnd( backproject, mask, backproject, 0 );
cvCamShift( backproject, track_window,
cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1
),

&track_comp, &track_box );
track_window = track_comp.rect;
if( backproject_mode )
cvCvtColor( backproject, image, CV_GRAY2BGR );
if(!image->origin)
track_box.angle = -track_box.angle;
cvCircle( image, boxcenter, 50, CV_RGB(255,0,0), 1,
8,0);\
track_box.angle = -track_box.angle;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
57

CvPoint2D32f dcenter=track_box.center;
boxcenter=cvPointFrom32f(dcenter);
m_IntX=boxcenter.x;
m_IntY=boxcenter.y;
fprintf (xFile, "

%4d\n",m_IntX);

fprintf (yFile, "

%4d\n",m_IntY);

float h=track_box.size.height;
float w=track_box.size.width;
float s=h*w;
m_floatkichthuoc=s;
m_floatGoc=track_box.angle;
cvCircle( image, boxcenter, 3, CV_RGB(0,255,0), -1, 8,0);

}
int d=(boxcenter.x);
int d1=(boxcenter.y);
count1 +=1;
if(count1==5){
if ((d!=d2)||(d1!=d3)){
d2=d;
d3=d1;
if ((115<=d)&& (d<=185)&&(150<=d1)&& (d1<=200))
{
data_send_RS232= "s";

m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
58

else if(d1>200)
{
data_send_RS232= "b";

m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}
else if((d1>0)&&(d1<150)&&(115<=d)&&(d<=185))
{
data_send_RS232= "f";
m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}
else if((d>185)&&(d1>0)&&(d1<=200))
{
data_send_RS232= "r";
m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}
else if((d>0)&&(d<115)&&(d1>0)&&(d1<=200))
{
data_send_RS232= "l";
m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}
}
else
if
(((d==d2)&&(d1==d3)&&(d!=0)&&(d1!=0))&&((d1<100)||(d1>200)||(d<115)||(d>18
5))){
dem= dem+1;
data_send_RS232= "s";

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
59

m_mscomm1.put_Output(COleVariant(data_send_RS232));//strOutput));
}
count1=0;
}
if( select_object && selection.width > 0 && selection.height > 0 )
{
cvSetImageROI( image,selection );
cvXorS( image, cvScalarAll(255), image, 0 );
cvResetImageROI( image );
}
cvSaveImage("image.jpg",image);
cvSaveImage("histimg.jpg",histimg);
cvSaveImage("backproject.jpg",backproject);
cvShowImage( "MobileRobot", image );
cvShowImage( "Histogram", histimg );
cvShowImage( "backproject",backproject);
c = cvWaitKey(10);
if( (char) c == 27 )
break;
switch( (char) c )
{
case 'b':
backproject_mode ^= 1;
break;
case 'c':
track_object = 0;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
60

cvZero( histimg );
break;
case 'h':
show_hist ^= 1;
if( !show_hist )
cvDestroyWindow( "Histogram" );
else
cvNamedWindow( "Histogram", 1 );
break;
default:
;
}
}
cvDestroyWindow("backproject");
cvDestroyWindow("Histogram");
cvDestroyWindow("MobileRobot");
cvReleaseImage(&image);
cvReleaseImage(&histimg);
cvReleaseCapture( &capture );
cvReleaseImage( &backproject);
fprintf(demFile," %4d\n",dem);
fclose (xFile);
fclose (yFile);
fclose (demFile)

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
61

PH LC B
CHNG TRNH IU KHIN ROBOT
//---------------------------------------------------------------------------------------------------// Khi iu khin Robot s dng PIC16F877A v L298N
// Nguyn Xun c K51H-CDT
// Ngy 8.12.2010
// Ngn ng: CCS C complier
//----------------------------------------------------------------------------------------------------#include <16F877A.h>
#include <defs_16f877a.h>
#device *=16 adc=10
#fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
#use delay(clock=20000000,RESTART_WDT)
20 megahertz

// Sets crystal oscillator at

#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7)


output pin & baud rate

//Sets up serial port

char value;
void forward(){
rb4=1;
rb5=0;
rb6=0;
rb7=1;
}
void backward(){
rb4=0;
rb5=1;
rb6=1;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
62

rb7=0;
}
void right(){
rb4=1;
rb5=0;
rb6=1;
rb7=0;
}
void left(){
rb4=0;
rb5=1;
rb6=0;
rb7=1;
}
void full_stop(){
rb4=0;
rb5=0;
rb6=0;
rb7=0;
}
void M2_forward(){
rb4=1;
rb5=0;
}
void M2_stop(){
rb4=0;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
63

rb5=0;
}
void M2_backward(){
rb4=0;
rb5=1;
}

void M1_forward(){
rb6=0;
rb7=1;
}
void M1_stop(){
rb6=0;
rb7=0;
}
void M1_backward(){
rb6=1;
rb7=0;
}
#INT_RDA
void RDA_interrupt(){
value = getc();
delay_ms(10);
putc(value);
switch(value)
{

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
64

case 'f': forward();

break; // neu ky tu nhan duoc la '0' di thang.

case 'l':

left();

break;

case 'r':

right();

break;

case 'b': backward();

break;

case '1':

M1_forward();

break;

case '2':

M1_backward();

break;

case '3':

M1_stop();

break;

case '4':

M2_forward();

break;

case '5':

M2_backward();

break;

case '6':

M2_stop();

break;

default: full_stop();break;

}
}
void main(){
ENABLE_INTERRUPTS(INT_RDA);
enable_interrupts(global);
SET_TRIS_B(0X00);
RB3=1;
RB2=1;
RB0=1;
while(true)
{
}
}
//-----------------------------------------------------------------------------------------

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
65

PH LC C
CHNG TRNH TRUYN THNG RS232
//---------------------------------------------------------------------------------------------------// Khi truyn thng RS232 s dng cng c Microsoft Communication version 6.0
// Nguyn Xun c K51H-CDT
// Ngy: 8.12.2010
// Ngn ng : C++ 2008 (MFC Aplication).
//----------------------------------------------------------------------------------------------------void CTUBODlg::InitComboBox(void)
{
// ComboBox ComPort
m_cboComPort.ResetContent();
m_cboComPort.AddString(L"COM1");
m_cboComPort.AddString(L"COM2");
m_cboComPort.AddString(L"COM3");
m_cboComPort.AddString(L"COM4");
m_cboComPort.AddString(L"COM5");
m_cboComPort.AddString(L"COM6");
m_cboComPort.AddString(L"COM7");
m_cboComPort.AddString(L"COM8");
m_cboComPort.AddString(L"COM9");
m_cboComPort.SetCurSel(2);
// ComboBox BitRate
m_cboBitRate.ResetContent();
m_cboBitRate.InsertString(0,L"600");
m_cboBitRate.InsertString(1,L"1200");

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
66

m_cboBitRate.InsertString(2,L"2400");
m_cboBitRate.InsertString(3,L"4800");
m_cboBitRate.InsertString(4,L"9600");
m_cboBitRate.InsertString(5,L"14400");
m_cboBitRate.InsertString(6,L"19200");
m_cboBitRate.InsertString(7,L"28800");
m_cboBitRate.InsertString(8,L"38400");
m_cboBitRate.InsertString(9,L"56000");
m_cboBitRate.InsertString(10,L"57600");
m_cboBitRate.InsertString(11,L"115200");
m_cboBitRate.InsertString(12,L"128000");
m_cboBitRate.InsertString(13,L"256000");
m_cboBitRate.SetCurSel(6);
// ComboBox Data Bits
m_cboDataBit.ResetContent();
m_cboDataBit.AddString(L"5");
m_cboDataBit.AddString(L"6");
m_cboDataBit.AddString(L"7");
m_cboDataBit.AddString(L"8");
m_cboDataBit.SetCurSel(3);
// ComboBox Stop Bit
m_cboStopBit.ResetContent();
m_cboStopBit.AddString(L"1");
m_cboStopBit.AddString(L"1.5");
m_cboStopBit.AddString(L"2");
m_cboStopBit.SetCurSel(0);

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
67

// ComboBox parity bit


m_cboParityBit.ResetContent();
m_cboParityBit.InsertString(0,L"None");
m_cboParityBit.InsertString(1,L"Old");
m_cboParityBit.InsertString(2,L"Even");
m_cboParityBit.InsertString(3,L"Mark");
m_cboParityBit.InsertString(4,L"Space");
m_cboParityBit.SetCurSel(0);
// ComboBox handshaking
m_cboHandshaking.ResetContent();
m_cboHandshaking.AddString(L"None");
m_cboHandshaking.AddString(L"XON/XOFF");
m_cboHandshaking.AddString(L"RTS");
m_cboHandshaking.AddString(L"RTS/CTS+XON/XOFF");
m_cboHandshaking.SetCurSel(0);
}
void CTUBODlg::Setting(void)
{
if (m_mscomm1.get_PortOpen())
m_mscomm1.put_PortOpen(false);
// Thiet lap ten cong
m_mscomm1.put_CommPort(m_cboComPort.GetCurSel()+1);
// Thiet lap bat tay

m_mscomm1.put_Handshaking(m_cboHandshaking.GetCurSel());
// Thiet lap tan so bit du lieu bit stop
CString

strBitRate=getCurStrInCombobox(m_cboBitRate);

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
68

CString

strParity=getCurStrInCombobox(m_cboParityBit);

CString

strDataBit=getCurStrInCombobox(m_cboDataBit);

CString

strStopBit=getCurStrInCombobox(m_cboStopBit);

CString

strSetting;

strSetting.Format(_T("%s,%c,%s,%s"),strBitRate,strParity[1],strDataBit,strSto
pBit);
m_mscomm1.put_Settings(strSetting);
// Thiet lap khac
m_mscomm1.put_RThreshold(1);
m_mscomm1.put_InputLen(1);

// Moi lan doc mot ky tu

m_mscomm1.put_InBufferSize(1024);
m_mscomm1.put_InputMode(0); // 0- text mode, 1- binary mode
m_mscomm1.put_OutBufferSize(1024);
m_mscomm1.put_PortOpen(true); // mo cong
}
void CTUBODlg::OnBnClickedButtonSend()
{
UpdateData(TRUE);
Setting();
m_mscomm1.put_Output(COleVariant(m_strTransfer));//strOutput));

UpdateData(false);
}
void CTUBODlg::OnBnClickedButtonClear()
{

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
69

UpdateData();
m_strReceive="";
UpdateData(false);
}
void CTUBODlg::OnCommMscomm1()
{
count+=1;
VARIANT data;
switch (m_mscomm1.get_CommEvent()){
case 1: // comEvSend
break;
case 2: // comEvReceive
data =m_mscomm1.get_Input();
m_strReceive += (CString)data.bstrVal;
if (count==500){
m_strReceive="";
count=0;
}
//

UpdateData(FALSE);

break;
case 3:// comEvCTS
break;
case 4:// ComEvDSR
break;
case 5: // comEvCD
break;

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
70

case 6: // comEvRing
break;
case 7: // comEvEOF
break;
default:

break;

};
UpdateData(false);
}

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
71

TI LIU THAM KHO

[1]

Gary Bradski & Adrian Kaehler. Learning OpenCV.

[2]

Ivor Horton's. Beginning Visual C++ 2008.

[3]

Microchip, Datasheet PIC 16F87XA.

[4] http://blog.gmane.org/gmane.comp.lib.opencv/month=20090401
[5] http://extremeelectronics.co.in/avr-tutorials/rs232-communication-the-levelconversion/
[6] http://homepages.inf.ed.ac.uk/rbf/CVonline/
[7] http://www.instructables.com/id/Control-your-motors-with-L293D
[8] http://nashruddin.com/opencv-examples-for-operation-on-images.html
[9] http://www.pages.drexel.edu/~nk752/distanceTut.html
[10] http://www.sourcecodeonline.com/list?q=object_tracking_using_opencv

Yahoo:thoi_chao_em_12325

Email:xuanducdhcn@gmail.com
72

You might also like