Mobile Robot OpenCV

download Mobile Robot OpenCV

of 82

Transcript of Mobile Robot OpenCV

  • 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

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    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:[email protected]

    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:[email protected]

    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:[email protected]

    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:[email protected]

    1

    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:[email protected]

    2

    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:[email protected]

    3

    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:[email protected]

    4

    Hnh 1: PANrobot (ngun: mobilerobot.org

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

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    5

    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:[email protected]

    6

    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:[email protected]

    7

    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:[email protected]

    8

    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:[email protected]

    9

    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:[email protected]

    10

    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:[email protected]

    11

    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:[email protected]

    12

    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:[email protected]

    13

    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:[email protected]

    14

    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:[email protected]

    15

    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:[email protected]

    16

    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:[email protected]

    17

    - S khi vi iu khin PIC16F877A.

    Hnh 8: S khi ca PIC16F877A

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    18

    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:[email protected]

    19

    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:[email protected]

    20

    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

    MW. 15 Tn Chc nng

    1; 15 Sensor A;

    Sensor B

    Ni chn ny qua in tr cm ng dng xung GND iu khin dng ti

    2; 3 Out 1;

    Out 2

    Ng ra ca cu A. Dng ca ti mc gia 2 chn ny c quy nh bi chn 1.

    4 VS Chn cp ngun cho tng cng sut, cn c mt t in cm khng 100nF ni gia chn ny v chn GND

    5; 7 Input 1;

    Input 2

    Chn ng vo ca cu A, tng thch chn TTL

    6; 11 Enable A; Enable B

    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;

    8 GND Chn mass

    9 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:[email protected]

    21

    13; 14 Output 3;

    Output 4

    Ng ra ca cu B, dng ca ti mc gia 2 chn ny c quy nh bi chn 15.

    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 0 0

    Quay thun 0 1

    Quay ngc 1 0

    Dng li 1 1

    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:[email protected]

    22

    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:[email protected]

    23

    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:[email protected]

    24

    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:[email protected]

    25

    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:[email protected]

    26

    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:[email protected]

    27

    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:[email protected]

    28

    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:[email protected]

    29

    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:[email protected]

    30

    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:[email protected]

    31

    Hnh 21: Giao din phn mm thit k hon chnh

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    32

    Hnh 22: Kt qu th nghim vi phn mm

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    33

    Hnh 23: Kt qu th nghim vi phn mm

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    34

    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:[email protected]

    35

    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:[email protected]

    36

    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.

    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

    112233445566778899101011111212131314141515

    U1

    L298

    D1

    DIODE

    D2

    DIODE

    D3

    DIODE

    D4

    DIODE

    D5

    DIODE

    D6

    DIODE

    D7

    DIODE

    D8

    DIODE

    12

    J1

    CON2V+

    R1RESISTOR

    D9

    LED

    D10DIODE

    12

    J3

    CON2

    12

    J4

    CON2

    C2CAP NP

    C3CAP NP

    V+V+V+V+V+V+

    V-

    R2

    Resistor

    R3Resistor

    V+

    V-

    IN1_Motor1EN_motor1IN2_Motor1

    +5VIN1_motor2EN_motor2IN2_motor2

    12345678

    J5

    CON8

    +5VV-

    IN2_motor2EN_motor2IN1_motor2IN2_Motor1EN_motor1IN1_Motor1

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    37

    4.2. Tp lnh iu khin r bt

    Bng 3: Tp lnh iu khin r bt

    Lnh ng c 1 ng c 2 R bt

    1 Tin

    2 Li

    3 Dng li

    4 Tin

    5 Li

    6 Dng li

    f Tin Tin i thng

    b Li Li i li

    s Dng Dng Dng li

    r Tin Li R phi

    l Li Tin R tri

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    38

    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:[email protected]

    39

    Hnh 29: Hnh nh robot hon chnh

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    40

    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.

    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.

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

    0

    50

    100

    150

    200

    250

    300

    350

    113

    326

    539

    752

    966

    179

    392

    510

    5711

    8913

    2114

    5315

    8517

    1718

    4919

    8121

    1322

    4523

    7725

    0926

    4127

    7329

    0530

    3731

    6933

    0134

    33

    X

    Y

    0

    50

    100

    150

    200

    250

    300

    350

    112

    124

    136

    148

    160

    172

    184

    196

    110

    8112

    0113

    2114

    4115

    6116

    8118

    0119

    2120

    4121

    6122

    8124

    0125

    2126

    4127

    6128

    8130

    0131

    21

    X

    Y

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    41

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

    i tng do i tng di chuyn qu nhanh.

    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.

    0

    50

    100

    150

    200

    250

    3001

    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

    X

    Y

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    42

    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.

    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.

    0

    50

    100

    150

    200

    250

    300

    350

    110

    821

    532

    242

    953

    664

    375

    085

    796

    410

    7111

    7812

    8513

    9214

    9916

    0617

    1318

    2019

    2720

    3421

    4122

    4823

    5524

    6225

    6926

    7627

    83

    X

    Y

    0

    50

    100

    150

    200

    250

    300

    350

    118

    236

    354

    472

    590

    610

    8712

    6814

    4916

    3018

    1119

    9221

    7323

    5425

    3527

    1628

    9730

    7832

    5934

    4036

    2138

    0239

    8341

    6443

    4545

    2647

    07

    X

    Y

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    43

    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.

    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.

    0

    50

    100

    150

    200

    250

    300

    350

    118

    236

    354

    472

    590

    610

    8712

    6814

    4916

    3018

    1119

    9221

    7323

    5425

    3527

    1628

    9730

    7832

    5934

    4036

    2138

    0239

    8341

    6443

    4545

    26

    X

    Y

    0

    50

    100

    150

    200

    250

    300

    350

    119

    037

    956

    875

    794

    611

    3513

    2415

    1317

    0218

    9120

    8022

    6924

    5826

    4728

    3630

    2532

    1434

    0335

    9237

    8139

    7041

    5943

    4845

    3747

    26

    X

    Y

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    44

    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.

    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

    0

    50

    100

    150

    200

    250

    300

    350

    113

    627

    140

    654

    167

    681

    194

    610

    8112

    1613

    5114

    8616

    2117

    5618

    9120

    2621

    6122

    9624

    3125

    6627

    0128

    3629

    7131

    0632

    4133

    76

    X

    Y

    0

    50

    100

    150

    200

    250

    300

    110

    921

    732

    543

    354

    164

    975

    786

    597

    310

    8111

    8912

    9714

    0515

    1316

    2117

    2918

    3719

    4520

    5321

    6122

    6923

    7724

    8525

    9327

    01

    X

    Y

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    45

    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:[email protected]

    46

    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:[email protected]

    47

    (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:[email protected]

    48

    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

    #include

    #include

    #include

    #include

    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:[email protected]

    49

    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:[email protected]

    50

    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:[email protected]

    51

    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:[email protected]

    52

    {

    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:[email protected]

    53

    }

    // 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:[email protected]

    54

    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", &g_switch_value, 5, switch_callback );

    //start:

    for(;;)

    {

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    55

    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, seed_point, color, cvScalarAll(5.0), cvScalarAll(5.0), NULL, 4, NULL );

    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_THRESH_BINARY);

    cvZero( histimg );

    }

    cvCopy( frame, image, 0 );

    cvCvtColor( image, hsv, CV_BGR2HSV );

    if( track_object )

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    56

    {

    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:[email protected]

    57

    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:[email protected]

    58

    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

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    59

    else if(d1>200)

    {

    data_send_RS232= "b";

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

    }

    else if((d1>0)&&(d1

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    60

    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:[email protected]

    61

    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:[email protected]

    62

    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

    #include

    #device *=16 adc=10

    #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt

    #use delay(clock=20000000,RESTART_WDT) // Sets crystal oscillator at 20 megahertz

    #use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7) //Sets up serial port output pin & baud rate

    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:[email protected]

    63

    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:[email protected]

    64

    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:[email protected]

    65

    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:[email protected]

    66

    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:[email protected]

    67

    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:[email protected]

    68

    // 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:[email protected]

    69

    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,strStopBit);

    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:[email protected]

    70

    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:[email protected]

    71

    case 6: // comEvRing

    break;

    case 7: // comEvEOF

    break;

    default: break;

    };

    UpdateData(false);

    }

  • Yahoo:thoi_chao_em_12325 Email:[email protected]

    72

    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-level-conversion/

    [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