+ All Categories
Home > Documents > Do an Tot Nghiep_thanh(Ok)

Do an Tot Nghiep_thanh(Ok)

Date post: 14-Apr-2018
Category:
Upload: trung-kien
View: 229 times
Download: 0 times
Share this document with a friend

of 78

Transcript
  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    1/78

    1

    LI NI U

    Trong nhng nm gn y, trn th gii nghin cu ng dng cng ngh x

    l v nhn dng nh ang l hng nghin cu tp trung ca rt nhiu nh khoa hc

    trong cc lnh vc. T nhng nm 1970 khi m nng lc tnh ton ca my tnh

    ngy cng trnn mnh m hn, cc my tnh lc ny c th x l c nhng tp

    d liu ln nh cc hnh nh, cc on video th mt khi nim na v x l nh

    na ra i l: Th gic my - Computer vision.C th ni x l nh s v th gic

    my c pht trin v trthnh mt lnh vc khoa hc. X l nh s khng ch

    nng cao cht lng ca nh m cn phn tch v l gii tm ra gii thut ng

    dng vo thc tin. Th gic my bao gm l thuyt v cc k thut lin quan nhmmc 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. Vic kt hp gia th gic my vi cc k thut

    khc nh cng ngh thng tin, truyn thng, in t, iu khin t ng, c kh

    cho chng ta rt nhiu ng dng trong i sng hng ngy cng nh trong khoa

    hc, an ninh, y hc, qun s Ngy nay, ng dng ca th gic my trnn rt

    rng ln v a dng, len li vo mi lnh vc t qun s, khoa hc, v tr, cho n

    y hc, sn xut, v t ng ha ta nh.

    Trong thi gian qua di s hng dn tn tnh ca C H TH KIM

    DUYN em dnh thi gian nghin cu v x l nh v nhn dng nh hay ni

    ng hn l thut ton x l nh bm i tng Tracking. Nhng ni dung m em

    nghin cu c y bao gm:

    Nghin cu tng quan v x l nh s v h bm i tng Tm hiu v nghin cu v th vin m ngun m OpenCV trn

    nn C

    Nghin cu v xy dng thut ton bm nh di ng ti u da trnth vin m ngun mOpenCV ca Intel

    Xy dng c mt h thng camera di ng (phn cng ln phnmm) bm theo mc tiu di dng ng dng thut ton bm nh Camshitf.

    nh gi c kt qu t c trong thi gian nghin cu.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    2/78

    2

    hon thnh n ny ng tin v c cht lng, em xin gi li cm n

    chn thnh nht ti C Th.s H TH KIM DUYN l ngi trc tip hng dn em

    lm n ny. ng thi em cng xin gi li cm n su sc ti cc anh, cc bc

    phng Quang in t, Vin vt l Vin khoa hc cng ngh Vit Nam to

    iu kin ti a gip em v mt thit b v dng c th nghim phc v qu trnh

    lm n.

    V cui cng, chng em xin dnh tt c lng bit n v knh trng su sc nht

    ti b m chng em, nhng ngi sinh thnh, nui dng chng em nn ngi,

    lo lng, ch bo t nhng vic nh nht, to mi iu kin cho chng em c

    sng v hc tp mt cch tt nht vn ti nhng c m v hoi bo ca mnh.

    Em xin chn thnh cm n!

    H ni ngy 28 thng 5 nm 2011

    Sinh vin thc hin

    H Tin Thanh

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    3/78

    3

    Chng 1: TNG QUAN V XL NH V H

    THNG BM I TNG

    1.1Tng quan v xl nhX 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 hc thng qua 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 my tnh,

    robot th iu qu thc l mt bc tin rt gian nan. Cc thit b ngy naykhng 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 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 nhiu. Mt s lnh

    vc ng dng cng ngh x l nh mang tnh t ph nh sau:

    1.1.1 Trong lnh vc qun s

    Cc h thng tch hp quang hng ngoi c kh nng t ng iu khin dn

    ha lc (pho, tn la) c lp t cho cc trn a cao x, trn xe tng, tu chin,

    my bay, tn la hoc v tinh (Hnh 1.1). Chng c thay th v h trcc dn

    rada d b nhiu trong vic t ng pht hin, cnh gii, bm bt mc tiu. c bit

    c nhng loi lp trn my bay c kh nng iu khin ha lc nh ph hng chc

    mc tiu mt lc. Ngoi ra cn phi k n cc u t dn tn la v n thng

    minh.

    1.1.2 Trong an ninh, phng chng ti phm, bo v php lut

    Cc h thng camera nhn dng khun mt vn tay t ng cng nh pht

    hin, theo di, cnh bo cc m mu v hot ng khng b. Cc xe robt t hnh

    c gn cc camera cng c ng dng trong cc mi trng c hi, d ph bom

    mn (Hnh 1.1).

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    4/78

    4

    1.1.3 Trong lnh vc hng khng v tr

    Cc h thng ng knh chp nh vin thm (remote sensing) lp trn cc v

    tinh bay quanh tri t c th chp v quan st c cc vt kch c0,5 m t cao

    750 km trong mi iu kin thi tit (Hnh 1.1).. Vic ni ghp cc ng knh ny

    vi h thng GPS s cho php xy dng cc bn s c nhng lnh vc ng dng

    cc k quan trng trong quc phng an ninh, pht trin kinh t, x hi...

    1.1.4 Trong cng nghip, giao thng, xy dng

    H thng quang in t ng vai tr ca cc th gic my (machine vision) c

    kh nng t ng o c kim tra cht lng sn phm trong cc dy truyn sn

    xut: phn loi ht ng cc, c ph; tm li lp rp linh kin cc bn vi mch v

    khuyt tt cc mi hn v ng c... Cc h thng quang in t cng c ng

    dng ngy cng nhiu trong giao thng nh o tc , t ng kim sot iu khin

    v phn lung giao thng (Hnh 1.2).

    1.1.5 Trong nghin cu y sinh dc hc

    Cc knh hin vi c kh nng t ng nhn dng v o m cc t bo vi chnh xc cao. Cc knh hin vi c h thng dn ng laser cho php thc hin

    nhng phu thut rt phc tp nh m u no, ni m mt s khng chnh xc cm

    cng gy tn hi n cc dy thn kinh chng cht xung quanh..

    1.1.6 Trong cng nghip gii tr truyn hnh

    Cc h thng tch hp c th iu khin cc camera kch thc v khi lng ln d

    dng t ng bm theo cc i tng chuyn ng nhanh nh bng ang bay, ua

    xe...

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    5/78

    5

    Hnh 1.1: Mt sh thng tch hp quang-in tv nh nhit trongun sv chin u

    Hnh 1.3: H thng camera in tng dng trong nghin cu thi tit vtrong cng nghip

    Hnh 1.2: Mt sh thng tch hp camera gim st trn tu vin thm vtrong cng nghip v cng ngh v tr

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    6/78

    6

    1.2 Gii thiu chung v Robot

    R bt (robot) hay ngi my l mt loi my c th thc hin cng vic mt

    cch t ng hoc c iu khin gin tip qua my tnh.

    R bt l mt tc nhn c kh, nhn to, thng l mt h thng c kh-in tkt hp hon ho.Vi s xut hin v chuyn ng ca mnh, r bt gy cho con

    ngi cm gic l n cng c nhng gic quan nh con ngi. T r bt (ngi

    my) thng c hiu vi hai ngha l 1 c cu c kh chnh xc v phn mm

    t hot ng.V lnh vc ngi my th Nht Bn ang i u 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 cng nghip, y t, gio dc v o

    to, gii tr v 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 cac lnh vc ca khoa hc v cng ngh.

    Ngy nay ngi ta vn cn tranh ci v vn Mt loi my nhng tiu

    chun g c coi l mt r bt??? Mt cch gn chnh xc, r bt phi c mt

    vi (khng nht thit phi y ) c im sau y:

    1. Khng phi t nhin, tc l do con ngi ch to ra.2. C kh nng nhn bit mi trng xung quanh.

    3. C th tng tc vi cc vt th trong mi trng.

    4. C s thng minh v c kh nng a ra cc la chn da trn mi trng

    v c th hot ng theo 1 chu trnh c lp trnh sn.

    5. C kh nng iu khin bng cc lnh c th thay i ty theo yu cu

    ca ngi s dng.

    6. C th di chuyn quay tnh tin mt chiu hay nhiu chiu.7. C s kho lo trong vn ng.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    7/78

    7

    1.3 Gii thiu tng quan v h thng r bt camera bm i tng (Trackingmobile robot)

    H thng r bt hot ng bng cc cm bin nh cm bin mu sc, hng

    ngoi, cm bin d ng, siu m gi y dn dn c pht trin v tch hp

    thm th gic.Vi s pht trin ca khoa hc cng ngh, vic tch hp trn r bt

    h thng camera thng minh ng dng cng ngh x l nh l rt cn thit phc v

    cho cng nghip, quc phng v x hi.

    H thng th gic c th 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 trc ta thc, thu thp nh

    ca c mc tiu v c mi trng. Mc tiu ca h camera c nh ny l cung cp

    tn hiu iu khin sao cho tay my t c v tr mong mun. Mc ch ca cu

    trc eye-in-hand l iu khin tay my sao cho nh ca mc tiu di ng hoc c

    nh c duy tr v tr mong mun trn mt phng nh thu c.

    CameraMy tnh

    Robot

    Tn hiu iu khin

    Hnh 1.4: Cu trc h camera c nh iu khin v gim st cnh tay r bt

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    8/78

    8

    Cc nghin cu ca mi trng ng b b kh xa so vi mi trng tnh do

    nh hng kh ln ca tc tinh ton cng nh chinh xc ca vic phn tch

    nh. Do vy c nhiu thut ton ci thin tc x l nh v ci thin can nhiu

    trong qu trnh thu thp d liu t camera.

    Mt kh khn v thch thc ca th gic my l vic phn loi i tng. mtr bt c th phi i mt vi nhiu i tng khc nhau, trong khi ch mt i

    tng c quan tm cn cc i tng khc th khng. nhn bit c v tr

    ca mc tiu trong mi trng ng, cc c trng ca mc tiu l rt quan trng.

    Cc im l, cc gc cnh, cc c im in hnh c th d dng tnh ton x l

    mi trng tnh, nhng trong mi trng ng th rt kh v chi ph v thi gian l

    rt ln, nh hng ca tc lm cho vic x l nh tch ly c trng ca i

    tng l rt kh.

    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

    trong OpenCV c s dng tnh ton ta trng tm ca i tng trn mt

    phng nh.

    Mt s h thng tracking r bt thc t c trin khai:

    Hnh 1.5: Cu trc h Camera r bt eye-in-hand

    camera

    Robot eye-in-handVt th cn gim st

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    9/78

    9

    Ngy nay vic xy dng mt h thng r bt thng minh v c kh nng thayth con ngi lm vic trong cc iu kin khc nghit v nguy him l rt cn

    Hnh 1.6: PAN robot v Robot Pops (ngun: www.mobilerobot.org)

    Hnh 1.7: Robot Talon v Robot MARRS (ngun Internet)

    Hnh 1.8: Robot thm him sao ha v Robot MIDbo

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    10/78

    10

    thit, n c nh vic lm vic trong cc hm m cc nh my ht nhn v cc vng

    nguy him bom mnth khi y cc r bt nh th ny hon ton hu dng v l

    la chn ti u.

    Vi mc tiu hng ti xy dng mt h thng r bt camera thng minh c

    th phc v trong cng tc d mn cu trcu nn, v c kh nng do thm, ti

    cng tm hiu v i vo nghin cu ch to mt h tracking thng minh c kh

    nng t hnh v bm mc tiu di ng da trn cng ngh x l nh c giao tip v

    kim sot, lu tr thng tin bng my tnh.

    C th h thng li rng, mt h thng bm i tng bao gm:

    Mc ch ca h thng bm video, nh t ng l duy tr mt ng ngm vit

    tt l LOS (Line Of Sight) gia cm bin mc tiu mt cch n nh v hon ton

    vcm bin

    nh

    B x l

    Mc tiu

    LOS

    Hnh 1.9: Cm bin nh, gimbal v b vi xl

    Hnh 1.10: Tng quan vmt h thng bm

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    11/78

    11

    t ng trong khi tn ti c chuyn ng tng i ca mc tiu v chuyn ng

    ca gn cm bin lm nhiu lon ti d liu cm bin hnh nh. Mc tiu thng

    c nh v ban u, bi hoc l ngi iu khin hoc l h thng nhn dng mc

    tiu t ng. Sau h thng bm s kha cht mc tiu v duy tr LOS t ng.

    H thng bm nh t ng thng c 3 b phn chnh (hnh 1.8): (1) b cm

    bin hnh nh (camera chng hn), (2) b chp hnh thng l cc trc khp quay

    (gimbal) c gn ng c hoc kh nn, v (3) b vi x l.Mt vng iu khin phn

    hi,c gi l vng bm, lin tc hiu chnh b chp hnh gi mc tiu vo tm

    ca trng nhn vit tt l FOV (Field Of View) ca b cm bin. B vi x l s

    khp kn vng ny bng cch tnh ton lch iu khin c cu chp hnh. Ccthnh phn hot ng theo th t: (1) b vi x l nh v tn hiu mc tiu trong cc

    dng hnh nh t b cm bin, (2) b vi x l c lng trng thi mc tiu v to

    ra cc lnh iu khin c cu chp hnh trn c scc thng tin trng thi, (3) lnh

    iu khin c p dng vo LOS cm bin, (4) b cm bin to ra mt vng video

    mi, v (5) qu trnh c lp li.

    Cm bin hnh nh, c th l cc camera hoc cc cm bin hnh nh khc

    nh: cm bin nh CCD (Charge Couple Device) l loi cm bin s dng mt li

    hnh ch nht ca cc im (site) thu thp in t ph trn mt silic mng ghi

    li nng lng nh sng n mi im trong chng. Mi mt im c to thnh

    bng cch cy mt lp SiO2 trn v sau lng ng mt cu trc dn ln trn. Khi

    photon nh sng p vo silic, th cp in t l trng s c to ra v cc in t

    mang in tch m (electron) s c bt ra cng tng ng. Vi mi nh sng c

    bc sng khc nhau th cc in tch bt ra tng ng cng s khc nhau.cc dngin t ny i qua b bin i ly ra c mc in p quy nh tng ng vi

    mi mu sc. V tp hp nhng tn hiu in ny s c x l khi phc li

    hnh nh ca i tng thng qua thit b chuyn dng chuyn i.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    12/78

    12

    C th ni rng, khi cm bin hnh nh c th s dng cc cm bin mu sc

    hoc camera, tuy nhin c th khng nh rng, khi ny c nh hng rt ln n

    cht lng v tc ca mt h bm nh. V tc thu thp d liu gi v b vi

    x l rt quan trng, n nh hng n vic tnh ton ca b vi x l nhanh

    chng a ra lut iu khin cho c cu chp hnh.Camera tc v cht lng

    cng cao th h bm s hot ng vi xc sut chnh xc cao.

    Ngy nay vi s pht trin ca khoa hc cng ngh th cm bin hnh nh

    cng c hin i ha v ci thin c tc cng nh cht lng hnh nh, in

    hnh l cc h thng camera tch hp, hng ngoi, lade, khng dy

    Vi yu cu mc ch ca n th khi cm bin hnh nh ca ti s dng

    y l h thng camera khng dy tch hp hng ngoi quan st ban m. V

    camera l la chn ti u trong vic xy dng mt h thng trin khai thc nghim,trong khi cc cm bin hnh nh khc ch dng trong mt mc ch nghin cu nht

    nh, tc khng cao v kh s dng v kh tip cn. Ngc li camera th hon

    ton p ng yu cu xy dng mt h thng bm nh thc nghim v d tip

    cn.

    Hnh 1.11: Cm bin CCD

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    13/78

    13

    V h c cu chp hnh th c th s dng l kh nn hoc ng c iu

    khin. Tuy nhin ty vo mc ch s dng v yu cu ring ca h thng ta c th

    s dng c cu chp hnh no ph hp nht. y ta c th s dng h thng

    xoay dng ng c iu khin v kim sot gc v tc quay. Cc h trn th

    trng hin nay nh cc h PTS, HN ( xoay camera) tuy nhin cc h ny thng

    l cc ng c xoay chiu iu khin cho nn vic iu khin tc v kim sot

    gc quay cng gp nhiu kh khn.

    Trong h thng ca ti s dng hon ton l ng c 1 chiu c gn encoder

    kim sot tc v gc quay, c iu khin bng phng php iu xung

    PWM, nn hon ton ph hp vi yu cu ca h thng.

    Hnh 1.12: Camera quan st tch hp

    Hnh 1.13: xoay PST, HN gn camera quan st

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    14/78

    14

    Vic la chn ng c 1 chiu DC (Direct Current) l mt la chn ti u v

    c tnh c ng cao nh gn, c th di chuyn n mi v tr v c kh nng dng

    acqui v pin lu tr, ph hp vi nhiu iu kin khc nhau, ph hp vi nhiu a

    hnh c th trin khai thc t.

    V b vi x l, c th l cc vi mch x l chuyn dng DSP (Digital signal

    processing) hay cc mch vi iu khin hoc l my vi tnh PC (Personal computer).

    Ngoi nhim v thu thp d liu, chng c nhim v x l cc d liu ny bng cc

    chng trnh c nhng trong b x l hoc chy trn cc PC. Mt vi iu khin

    (microcontroller) l mt my tnh trn mt chip (Computer-onachip, single-chip-

    computer). Thng th cc vi iu khin ny c gi l cc b iu khin nhng(embedded controller) v chng v cc mch in t h tr thng c thit k lp

    t (nhng) ngay bn trong thit b iu khin. Mt s loi mch nhng thng gp

    nh: Psoc, PC 104, FPGA, SBC (Single board computer), CMUCAM1 2 3, DSP v

    cc my tnh nhng.(hnh 1.13).

    Cc mch nhng trn u c u im l nh gn, c th can thip v cu trc

    ca chng c ngha l c th trc tip lp trnh trn n, tuy nhin chng c nhc

    im l kh s dng, phc tp v mang tnh chuyn ngnh cao, khng ph bin v

    c dung lng b nhnh ch c th x l v t c kh nng lu tr thng tin hnh

    Hnh 1.14: Cc mch nhng ( SBC use PSoC, FPGA, CMUCAM,DSP, my tnh cng nghip PC104)

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    15/78

    15

    nh hoc video khi cn thit (nu mun lu tr phi dng thm thit b ngoi vi nn

    kh phc tp).

    Mt trong nhng thit b va c th lp trnh v va c th x l tn hiu ng

    thi c kh nng lu tr thng tin ln l my tnh c nhn PC. My PC ra i

    nhm phc v nhng yu cu ca ngi s dng, s dng n gin, ph bin p

    ng c nhng yu cu ca h thng. Hin nay my tnh c nhn cng c

    thit k nh gn vi y chc nng. Do vy trong khun kh ti ny ti la

    chn my tnh laptop x l v c th lu tr c thng tin hnh nh v video,

    m thanh.Gip ngi iu khin c th quan st trc tip mc tiu v khi cn thit

    s can thip trc tip vo qu trnh iu khin. Nh vy vic la chn my tnhlaptop l ph hp vi yu cu ti.

    Nh vy, mc tiu ca ti l xy dng c mt h thng bm nh di ng

    bao gm mt h tch hp r bt iu khin camera thng minh thu thp d liu gi

    v trung tm lu tr v iu khin t xa thng qua h thng my tnh. Rbt v

    camera c th hon ton hot ng t ng bm nh, vt th hoc c th can thip

    iu khin bi ngi s dng, phc v cho cng tc nghin cu, cng tc cu h,

    d ph bom mn, phc v nhiu mc ch trong cuc sng.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    16/78

    16

    Chng 2: TNG QUAN V TH VIN M NGUN

    MOPENCV TRN NN C

    2.1 Th vin OpenCV

    2.1.1 OpenCV l g?

    OpenCV vit tt ca Open Source Computer Vision Library. N c cha hon

    500 hm s dng th gic my, v c pht trin bi tp on Intel. OpenCV l

    mt th vin m ngun m(open source) tham kho ti: http://www.sourceforge.net

    Th vin c vit bng ngn ng C v C++ c th chy trn cc h iu

    hnh nh Linux, Window v Max 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 cc lnh vc y hc, bo mt, r bt hc N cha cc lp

    trnh x l nh rt n gin, k c khi thc thi cc hm bc cao nh d tm khun

    mt, theo di khun mt, nhn dng khun mt, lc Kalman.

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

    s dng trong rt nhiu ng dng, cc sn phm v cc nghin cu. V d nh trong

    lnh vc hng khng v tr, bn web trc tuyn, s dng gim nhiu trong y hc,

    phn tch i tng, an ninh, h thng d tm v cnh bo, qun l h thng sn

    xut, x l camera, ng dng trong qun s, hng khng khng ngi li, trn mt

    t v trn tu ngm. Ngoi ra n cn s dng trong nhn dng m thanh. OpenCV

    l mt cha kha quan trng trong cc r bt s dng th gic my nh Stanford hay

    Asimo ca Nht Bn. Qu trnh pht trin ca OpenCV c th hin hnh 2.1:

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    17/78

    17

    Trn th gii cn mt s th vin nh Emugu CV nhng pht trin trn nn C# .

    OpenCV c pht trin trn nn C v C++ th s d dng cho nhng ngi mi

    tip cn hn Emugu CV.

    2.1.2 V sao la chn OpenCV?

    Th trng th gic my ang ngy cng m rng v ln tc pht trin. Thvin 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 Intel. To ra cc mu ng dng bng cc th vin

    c cp nht thng xuyn v thc hin cc thut ton 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 nh : Intel, Microsoft, IBM, Siemens, Google v cc

    trung tm nghin cu nh: Stanford, MIT, Cambridge, INRIA

    Hn 14000 thnh vin trn forum OpenCVyahoogroup.com vi trung bnh

    mt ngy c n 10-20 thng ip comment trao i hng ngy.

    iu khng nh rng OpenCV thc s gp phn v cng ln trong lnh

    vc th gic my.

    Hnh 2.1: Qu trnh pht trin ca OpenCV

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    18/78

    18

    2.1.3 Cu trc v ni dung OpenCV nh thno?

    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 lm 5 phn

    chnh, 4 trong s c ch ra trong hnh 2.2

    CXCORE cha cc nh ngha kiu d liu c s. V d, cc cu trc d liu

    cho nh, im v hnh ch nht c nh ngha trong cxtypes.h . CXCORE cng

    cha i s tuyn tnh v phng php thng k, chc nng duy tr v iu khin

    chui. Mt s t, cc chc nng ha v trn nh cng c t y.

    CV cha cc thut ton v x l nh v nh kch c camera. Cc chc nng

    hnh ha my tnh cng c t y.

    CVAUX c m t trong ti liu ca OpenCV nh cha cc m c v th

    nghim. Tuy nhin, cc giao din n cho s nhn din nh trong module ny.

    Code sau ny chng c chuyn dng cho nhn din mt v chng c ng dng

    rng ri cho mc ch .

    HIGHGUI v CVCAM c t trong cng th mc l otherlibs.

    CV

    X l nh v thut tonv th gic my

    MLL

    Thng k v tp hpcc cng c x l

    HighGUI

    Giao din, truy xutnh v video

    CXCORE

    Cu trc c sv cc thut ton, h trXML, cchm v

    Hnh 2.2: Cu trc ca OpenCV

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    19/78

    19

    HIGHGUI cha cc giao din vo ra c bn, n cng cha cc kh nng ca

    s m rng v vo ra video.

    CVCAM cha cc giao din cho video truy cp qua DirectX trn nn

    Windows 32 bits.

    Km theo th vin l ti liu hng dn v cc v d mu th hin mt phn

    cc chc nng ca cng c OpenCV. Cc chc nng ca openCV tp trung vo thu

    thp nh, x l nh v cc thut ton phn tch d liu nh, bao gm:

    - Truy xutnh v phim: c nh s t camera, t file, ghi nh v phim

    - Cu trc d liu nh s v cc d liu h tr cn thit: ma trn, vector,

    chui, xu v cy

    -Xlnh cn bn: cc b lc c sn, tm chi tit cnh, gc, chnh i mu,

    phng to thu nh, v hiu chnh histograms

    - X l cu trc: tm vin, nhn chuyn ng, thay i trong khng gian 3D,

    i chiu bn mu, xp x cc n v hnh hc c s- mt phng, a gic, ellipse,

    ng thng...

    - Phn tch dliu nh: nhn dng thc th, theo di cc chi tit v phn tchchuyn ng

    - To giao din n gin: hin thnh, thao tc bn phm, chut, thanh trt

    chnh thng s (nu cn thit cc bn c th t to thm cc phm iu khin

    thng qua thao tc chut, hoc tch hp thm cc th vin v giao din nh

    wxWidgets)

    - Chc nng v, ch thch ln nh.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    20/78

    20

    2.2 Th vin OpenCV v mi trng lm vic Microsoft visual studio 2008

    2.2.1 Ci t OpenCV phin bn 2.1 dnh cho VC++ 2008

    Trc ht vo trang web: http://sourceforge.net/projects/opencvlibrary/ downloadOpenCV 2.1 phin bn dnh cho VC++ 2008 trn nn window.

    Tin hnh ci t:

    ClickNext:

    Hnh 2.3: Setup OpenCV 2.1

    Hnh 2.4: Chn I Agree

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    21/78

    21

    ClickI Agree tip tc:

    ChnAdd OpenCV to the system PATH for all users, chy trn tt c quyn

    Admin ln users, sau click Next chn mc nh v tip tc cho n khi ci t

    xong finish.

    Sau khi ci t ta tin hnh copy tt c cc file trong th mc bin, include

    v lib ca OpenCV cho vo th mc bin, include v lib ca VC++2008 s

    dng th vin OpenCV.

    Hnh 2.5: Chon Add OpenCV to the system PATH

    Hnh 2.6: Click Finish kt thc

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    22/78

    22

    2.2.2 To mt d n bng VC++ 2008

    M phn mm Visual C 2008, chn Createproject MFC sau tin

    hnh MFC Application chn tn d n v ng dn lu d n ca mnh sau

    n Ok.

    Sau chn thit k giao din Dialog based v chn Next:

    Hnh 2.7: To mt dn trong VC++ 2008

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    23/78

    23

    Sau chnNextv Finish, nh vy ta thit lp c mt d n by gi ta

    c th thit k v lp trnh theo mun.

    Sau y l kt qu ca mt ca mt chng trnh nhn din khun mt c

    s dng th vin m ngun m ca OpenCV v m s ngi trong bc nh.

    Hnh 2.8: Chn thit kDialog based v mi

    trng lm vic ca dn

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    24/78

    24

    Hnh 2.9: Kt qu thnghim ca lp trnh nhn din khunmt

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    25/78

    25

    Chng trnh nhn din khun mt v m s ngi trong mt bc nh dngth vin: "haarcascade_profileface.xml.

    #include "cv.h"

    #include "highgui.h"

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    // Create a string that contains the exact cascade name

    const char* cascade_name =

    "C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt2.xml";

    /* "haarcascade_profileface.xml";*/

    // Function prototype for detecting and drawing an object from an image

    void detect_and_draw( IplImage* image );

    int dem=0;

    // Main function, defines the entry point for the program.

    int main( int argc, char** argv )

    {

    // Create a sample image

    IplImage *img = cvLoadImage("D:\\IMG_8036.jpg");

    // Call the function to detect and draw the face positions

    detect_and_draw(img);

    // Wait for user input before quitting the program

    cvWaitKey();

    // Release the image

    cvReleaseImage(&img);

    std::cout

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    26/78

    26

    system("pause");

    return 0;

    }

    // Function to detect and draw any faces that is present in an image

    void detect_and_draw( IplImage* img)

    {

    // Create memory for calculations

    static CvMemStorage* storage = 0;

    // Create a new Haar classifier

    static CvHaarClassifierCascade* cascade = 0;

    int scale = 1;

    // Create a new image based on the input image

    IplImage* temp = cvCreateImage( cvSize(img->width/scale,img-

    >height/scale), 8, 3 );

    // Create two points to represent the face locations

    CvPoint pt1, pt2;

    int i;

    // Load the HaarClassifierCascade

    cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );

    // Check whether the cascade has loaded successfully. Else report and error

    and quit

    if( !cascade )

    {

    fprintf( stderr, "ERROR: Could not load classifier cascade\n" );

    return;

    }

    // Allocate the memory storage

    storage = cvCreateMemStorage(0);

    // Create a new named window with title: result

    cvNamedWindow( "result", 1 );

    // Clear the memory storage which was used before

    cvClearMemStorage( storage );

    // Find whether the cascade is loaded, to find the faces. If yes, then:if( cascade )

    {

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    27/78

    27

    // There can be more than one face in an image. So create a growable

    sequence of faces.

    // Detect the objects and store them in the sequence

    CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,

    1.1, 2, CV_HAAR_DO_CANNY_PRUNING,

    cvSize(40, 40) );

    // Loop the number of faces found.

    for( i = 0; i < (faces ? faces->total : 0); i++ )

    {

    // Create a new rectangle for drawing the face

    CvRect* r = (CvRect*)cvGetSeqElem( faces, i );

    // Find the dimensions of the face,and scale it if necessary

    pt1.x = r->x*scale;

    pt2.x = (r->x+r->width)*scale;

    pt1.y = r->y*scale;

    pt2.y = (r->y+r->height)*scale;

    // Draw the rectangle in the input image

    cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );

    dem++;

    }

    }

    // Show the image in the window named "result"

    cvShowImage( "result", img );

    // Release the temp image created.

    cvReleaseImage( &temp );

    }

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    28/78

    28

    Chng 3: XY DNG THUT TON X L NHBM I TNG TI U (TRACKING)

    3.1 Gii thut chung v h thng bm (Tracking camera robot)

    Da vo lu thut ton ta c th hnh dung v mt h thng bm tng quan

    nht c th xy dng c mt thut ton iu khin ti u ph hp vi h

    thng, p ng cc yu cu t ra ca bi ton. Sau bc khi to ban u mc

    tiu s c a vo h cm bin hnh nh chp nh, sau c ly mu tn

    hiu t khng gian mu RGB n khng gian mu HSV. Mi mu sc t nhin u

    c t hp t 3 mu c bn: R (red), xanh lc G (green) v xanh dng B

    (blue). tiu chun ha vic o mu sc trn th gii, da vo kt qu thcnghim ngi ta qui nh 3 mu c bn ny tng ng vi cc bc sng 700nm

    Start

    Chp nh

    Ly mu

    Histogram

    Lc nhiu

    Camshift

    Tnh ta tm, hng

    Giao tipRS232,RF

    iu kindng

    Khi to

    Dng

    Hnh 3.1: Lu thut ton bm i tng

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    29/78

    29

    i vi (R), bc sng 546,8 nm i vi (G) v 435,8 nm i vi (B). Ba mu c

    bn ny l to ra cc mu khc vi t l pha trn tng ng. VD: vng =

    +xanh lc (tham kho thm ti: http://vi.wikipedia.org/wiki/ ) cm nhn mu

    sc th c 3 thuc tnh ch yu:

    Sc mu (Brightness), cn gi l chi.

    Sc lng (Hue), cn gi l sc thi mu.

    bo ha mu (Saturation)

    C th chuyn i t khng gian mu RGB sang khng gian mu HSV v

    ngc li, chnh nh s chuyn i ny m chng ta c th lp trnh ly mu tn

    hiu thu c t camera. V c th ni trong OpenCV c hm cvCvtColor() chuyn

    dng thc hin nhim v ny.

    Histogram chnh l qu trnh m t i tng, thng tin hnh nh v video

    di dng biu (Histogram) d quan st. Histogram c th s dng ch ras khc nhau gia cc i tng v ch ra xc sut phn b mu sc. Thc hin qu

    trnh to Histogram lin tip v quan st nu thy Histogram no gn ging vi

    Histogram ca i tng nht th s c chn, y cng chnh l mt trong nhng

    yu t cn thit trong thut ton bm nh ca cng ngh x l nh ni chung v th

    vin OpenCV ni ring.

    Hnh 3.2: Khng gian mu RGB v khng gian mu HSV

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    30/78

    30

    Lc nhiu nhm mc ch loi b can nhiu ly ra c tn hiu chnh xc

    cn ly mu. C th ni rng nhiu pht sinh trong qu trnh x l nh l rt ln do

    vy cn phi loi b nhiu bng cc b lc nh Kalman hay b lc g-h hay g-h-k

    T nhng yu t trn thut ton bm ca h l nh sau: phi c th ly mu v

    chuyn i c gia cc khng gian mu RGB v HSV v ngc li, phi to ra

    Histogram so snh a ra lut iu khin, v quan trng phi xc nh c c

    tnh ca nh.Tnh ton c trng tm v hng ca vt th c kt hp cc b lc

    nhm loi b nhiu vo h thng.

    Hnh 3.3: Histogram ca hai ln ly mu

    Hnh 3.3: Kt qu trc khi lc v sau khi lc

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    31/78

    31

    3.2 Thut ton Camshift trong ti u ha h bm i tng

    Trong x l nh vic i nghin cu thut ton bm i tng l rt quan trng,

    mt s thut ton thng gp l: thut ton KLT, phng php Correlation-base

    template matching, thut ton Meanshift, thut ton Camshift.

    Thut ton KLT vit tt ca tn hai nh nghin cu Lucas and Kanade v

    Tomasi kt hp vi Birchfield vo nm 1991 cho ra i thut ton x l bm cc

    c tnh ca nh, c thc thi bng ngn ng C v c gi l thut ton bm

    KLT (KLT tracker). Thut ton KLT dng ton hc tnh ton ra cc c tnh sau

    cng dng ton hc tnh ra xc sut xut hin ca cc c tnh trong ln di

    chuyn tip theo. N c nhc im l rt phc tp v lp trnh tn b nh ca

    chng trnh, t l trt cao v kh chn ra c tnh ca i tng v ch ph hp

    vi 1 i tng c lp trnh t trc, khi bm i tng khc th phi lp trnh v

    ly li c tnh cho i tng mi.

    Phng php Correlation-base template matching l phng php so snh vi

    mt nh hoc th vin mu c sn (template), do vy phi dng ton bnh ca i

    tng ch khng phi dng mt s im nh nh cc thut ton khc, ng thikhng dng cc thng tin chuyn ng, tnh ton nhiu hn nn khi lng chng

    trnh rt ln.

    Thut ton Meanshift c pht trin t phng php Gauss dng c lng

    i tng trn mt ca snh c nh, chia nh ca i tng thnh cc ma trn

    im nh (pixel) sau thc hin c lng cc im nh ny bng phng php

    Gauss, sau tnh trung bnh cc pixel trn khung nh c nh ca i tng,qu trnh lp li cho n khi hi t c th tham kho thm ti trang web sau hiu

    thm v phng php Gauss:

    (http://saravananthirumuruganathan.wordpress.com/2010/04/01/introduction-

    to-mean-shift-algorithm/)

    Cui cng l thut ton Camshift, Camshift vit gn ca Continuously

    Adaptive Meanshift l c sca thut ton theo di khun mt trong OpenCV. N

    bao gm thut ton c s Meanshift vi thch ng cc bc thay i kch cca

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    32/78

    32

    vng. Nhn l mt hm step n gin nm trong mt bn v xc sut (skin-

    probability). V xc sut ca mi 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 sc thi mu (Hue) t m hnh HSV. Trong thut ton Camshift, mt bcnh v xc sut phn b mu 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 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 Meanshift. N c tnh ton nh sau:

    Bc 1: Chn v tr ban u ca Search Window.

    Bc 2: Dng thut ton Meanshift (lp mt hoc nhiu ln) lu ra mt vng gi l

    moment th 0.

    Bc 3: t kch cca ca s tm kim bng mt hm ca moment th 0 tm c

    trong bc 2.

    Bc 4: Lp li bc 2 v bc 3 cho n khi hi t.

    Vi nhng u im ca thut ton Camshift trong vic x l nh bm i

    tng v nhn din nh, kt hp vi ngn ng C ti la chn v xy dng ring

    cho ti ca mnh mt thut ton ti u trong vic x l nh bm i tng. Thut

    ton Camshift c c th ha bng lu hnh 3.4. u tin l mt Histogram

    c to ra, Histogram ny cha cc thuc tinh lin quan n mu sc v tip theo

    tm v kch cca mc tiu c tinh ton theo di mc tiu khi hnh dng v

    kch cca n thay i. Tnh xc sut phn b mc tiu cn c v Histogram nhn

    c. 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 m n 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 va tm c. OpenCV s dng hm

    cvCamshift() thc hin chuyn dch ny. Vic tnh ton trng tm da vo thut

    ton Meanshift.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    33/78

    33

    Chpnh

    RGB HSVTnh tonHistogram

    Xc sutphn b

    muCamshift

    Reset vngtnh ton

    t tm searchwindow

    Video

    To v tr vkch csearch

    window

    X,Y

    Hnh 3.4: Lu thut ton Camshift

    Hnh 3.5: Kt qu ca vic thc hin hm Camshift trong victnh ta ca mc tiu

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    34/78

    34

    Chng 4: XY DNG, THI CNG PHN CNGV LP TRNH PHN MM CHO H THNG BM

    I TNG

    4.1Tng quan v cc linh kin xy dng phn cng

    Vic chn la cc linh kin xy dng mch phn cng l rt quan trng sau

    khi xy dng xong thut ton x l ti u. Trong h thng ny ngoi b vi x l

    chung l my tnh laptop cn c mt khi giao tip thc hin bt tay gia

    camera, c cu chp hnh v my tnh. p ng yu cu v kh nng iu

    khin c cu chp hnh v va c kh nng x l, chng nhiu tt ti quyt nh

    chn v s dng vi iu khin AVR, ATmega128 v n c y tnh nng v c

    kh nng chng nhiu tt. s dng iu khin cc c cu chp hnh v kim sot

    tc v gc quay ti s dng mt s linh kin chuyn dng iu khin cu

    ng c l dng MC ca Freescale v DVR ca Texas Intrument. Vi mc ch

    xy dng mt kit vi iu khin a nng c th va thc hin nhim v iu khin c

    cu chp hnh va c kh nng thc hin nhim v x l tn hiu t cc cm bin

    trong cng nghip nh PIR, IR ca Sharp, cm bin gia tc v nghing ADXLhay MMA7455 v c th giao tip RS232 hoc giao tip khng dy RF phc

    v qu trnh truyn v x l tn hiu.

    Gii thiu vvi iu khin ATmega128

    Atmega 128 l mt b vi x l CMOS in p thp da trn nn kin trc

    AVR RISC nng cao . Bng cch thi hnh cc lnh mt cch mnh m trong mt

    chu k ng h duy nht, Atmega128 c th cho php tc t c l 1 MPIStrn 1 MHz t gip ngi thit k h thng c kh nng ti u ha in nng s

    dng so vi tc x l.

    4.1.1 Nhng Tnh Nng Chnh Ca ATmega128:

    ROM : 128 Kbytes SRAM: 4Kbytes EEPROM : 4Kbytes 64 thanh ghi I/O

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    35/78

    35

    160 thanh ghi vo ra mrng 32 thanh ghi a mc ch. 2 b nh thi 8 bit (0,2). 2 b nh thi 16 bit (1,3). B nh thi watchdog B dao ng ni RC tn s 1 MHz, 2 MHz, 4 MHz, 8 MHz ADC 8 knh vi phn gii 10 bit ( dng Xmega ln ti 12 bit) 2 knh PWM 8 bit 6 knh PWM c th lp trnh thay i phn gii t 2 ti 16 bit B so snh tng t c th la chn ng vo Hai khi USART lp trnh c Khi truyn nhn ni tip SPI Khi giao tip ni tip 2 dy TWI H trboot loader 6 ch tit kim nng lng La chn tn s hot ng bng phn mm ng gi 64 chn kiu TQFP. Tn s ti a 16MHz in th : 4.5v - 5.5v (Ring dng ATmega128L th ngun

    cung cp l 3.3V)

    S chn:

    Hnh 4.1: S chn ca ATmega128

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    36/78

    36

    4.1.2 Cu trc ca ATmega128

    4.1.3 Cng v ra

    Cng vo ra l mt trong s cc phng tin vi iu khin giao tip vi cc

    thit b ngoi vi. ATmega128 c c thy 7 cng ( port ) vo ra 8 bit l : PortA,PortB, PortC, PortD, PortE, PortF, PortG, tng ng vi 56 ng vo ra. Cc cng

    vo ra ca AVR l cng vo ra hai chiu c th nh hng, tc c th chn hng

    ca cng l hng vo (input ) hay hng ra (output ). Tt cc cc cng vo ra ca

    AVR iu c tnh nng c Chnh sa Ghi ( Read Modify write ) khi s

    dng chng nh l cc cng vo ra s thng thng. iu ny c ngha l khi ta

    thay i hng ca mt chn no th n khng lm nh hng ti hng ca cc

    chn khc. Tt c cc chn ca cc cng (port ) iu c in trko ln ( pull-up )

    ring, ta c th cho php hay khng cho php in trko ln ny hot ng. in

    Hnh 4.2: S cu trc ca ATmega128

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    37/78

    37

    trko ln l mt in tr c dng khi thit k cc mch in t logic. N c mt

    u c ni vi ngun in p dng (thng l Vcc hoc Vdd) v u cn li

    c ni vi tn hiu li vo/ra ca mt mch logic chc nng. in trko ln c

    th c lp t ti cc li vo ca cc khi mch logic thit lp mc logic livo ca khi mch khi khng c thit b ngoi ni vi li vo. in tr ko ln

    cng c th c lp t ti cc giao din gia hai khi mch logic khng cng loi

    logic, c bit l khi hai khi mch ny c cp ngun khc nhau. Ngoi ra, in

    trko ln cn c lp t ti li ra ca khi mch khi li ra khng th ni ngun

    to dng, v d cc linh kin logic TTL c cc gp h. i vi h logic lng

    cc vi ngun nui 5 Vdc th gi tr ca in tr ko ln thng nm trong khong

    1000 n 5000 Ohm, ty theo yu cu cp dng trn tongii hot ng ca mch.

    Vi lgc CMOS v lgc MOS chng ta c th s dng cc in trc gi tr ln

    hn nhiu, thng t vi ngn n mt triu Ohm do dng r r cn thit li vo l

    rt nh. Trong vic thit k cc vi mch ng dng, nu mt IC c ng ra loi cc

    thu hgiao tip vi nhiu IC khc th gi tr ca in trko ln s tng i

    nh (khong vi trm Ohm). Bi v lc ny h s fanout ln dn n dng ng ra

    ca IC phi ln cung cp cho cc ng vo ca cc IC khc, nu khng vi

    mch s hot ng chp chn hoc c th khng hot ng.

    Khi kho st cc cng nh l cc cng vo ra s thng thng th tnh cht ca

    cc cng ( PortA, PortB,PortG ) l tng t nhau, nn ta ch cn kho st mt

    cng no trong s 7 cng ca vi iu khin l . Mi mt cng vo ra ca vi

    iu khin c lin kt vi 3 thanh ghi : PORTx, DDRx, PINx. ( y x l thay

    th cho A, B,G ). Ba thanh ghi ny s c phi hp vi nhau iu khin hot

    ng ca cng, chn hn thit lp cng thnh li vo c s dng in trpull-up,

    ..v.v.. . Sau y l din t c th vai tr ca 3 thanh ghi trn.

    Thanh Ghi DDRx.y l thanh ghi 8 bit ( c th c ghi ) c chc nng iu khin hng ca

    cng (l li ra hay li vo ). Khi mt bit ca thanh ghi ny c set ln 1 th chn

    tng ng vi n c cu hnh thnh ng ra. Ngc li, nu bit ca thanh ghi

    DDRx l 0 th chn tng ng vi n c thit lp thnh ng vo. Ly v d: Khi

    ta set tt c 8 bit ca thanh ghi DDRA u l 1, th 8 chn tng ng ca portA l

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    38/78

    38

    PA1, PA2, PA7 ( tng ng vi cc chn s 50, 49, 44 ca vi iu khin )

    c thit lp thnh ng ra.

    Thanh Ghi PORTx.PORTx l thanh ghi 8 bit c th c ghi. y l thanh ghi d liu ca PORTx,

    Nu thanh ghi DDRx thit lp cng l li ra, khi gi tr ca thanh ghi PORTxcng l gi tr ca cc chn tng ng ca PORTx, ni cch khc, khi ta ghi mt gi

    tr logic ln 1 bit ca thanh ghi ny th chn tng ng vi bit cng c cng mc

    logic. Khi thanh ghi DDRx thit lp cng thnh li vo th thanh ghi PORTx ng

    vai tr nh mt thanh ghi iu khin cng. C th , nu mt bit ca thanh ghi ny

    c ghi thnh 1 th in tr treo ( pull-up resistor ) chn tng ng vi n s

    c kch hot, ngc li nu bit c ghi thnh 0 th in tr treo chn tng

    ng s khng c kch hot, cng trng thi cao tr( Hi-Z ).

    Thanh Ghi PINx.PINx khng phi l mt thanh ghi thc s, y l a ch trong b nhI/O kt

    ni trc tip ti cc chn ca cng. Khi ta c PORTx tc ta c d liu c cht

    trong PORTx, cn khi c PINx th gi tr logic hin thi chn ca cng tng

    ng c c. V th i vi thanh ghi PINx ta ch c th c m khng th ghi.Hnh 4.5 th hin cc cc thit lp cch hot c th c ca cng.

    Hnh 4.3: Thanh ghi DDRx

    Hnh 4.4: Thanh ghi PORTA

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    39/78

    39

    4.1.4 Cc b nh thi, cu trc ngt, module PWM, USART/UART v cc

    ngoi vi khc

    ATmega128 c 4 b nh thi , b nh thi 1 v 3 l b nh thi 16 bit, b

    nh thi 0 v 2 l b nh thi 8 bit (Timer/Couter0 v Timer/Couter2 vi 2

    module PWM 8bit).

    Hnh 4.5: Thanh ghi PINA

    Hnh 4.6: Cch thit lp cho cng

    Hnh 4.7: B nh thi Timer/Counter0 vi module PWM 8bit

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    40/78

    40

    4.1.5 Truyn nhn ni tip

    USART (Universal Synchronous and Asynchronous serial Receiver and

    Transmitter): B Truyn Nhn Ni Tip ng B V Bt ng B Ph Dng, y

    l khi chc nng dng cho vic truyn thng gia vi iu khin vi cc thit b

    khc. Trong vn truyn d liu s, c th phn chia cch thc (method) truyn

    d liu ra hai ch (mode) c bn l : Ch truyn nhn ng b(Synchronous)

    v Ch truyn nhn btng b(Asynchronous). Ngoi ra, nu gc phn

    Hnh 4.8: B nh thi Timer/Counter 2 vi module

    PWM 8 bit

    Hnh 4.8: B nh thi 16 bit

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    41/78

    41

    cng th c th phn chia theo cch khc l: Truyn nhn d liu theo kiu ni

    tip (serial) v song song(paralell).

    Truyn ng b: l kiu truyn d liu trong b truyn

    (Transmitter) v b nhn (Receiver) s dng chung mt xung ng h

    (clock). Do , hot ng truyn v nhn d liu din ra ng thi. Xung

    clock ng vai tr l tn hiu ng b cho h thng (gm khi truyn v khi

    nhn). u im ca kiu truyn ng b l tc nhanh, thch hp khi

    truyn d liu khi (block).

    Truyn bt ng b:L kiu truyn d liu trong mi b truyn

    (Transmitter) v b nhn (Receiver) c b to xung clock ring, tc xung

    clockhai khi ny c th khc nhau, nhng thng khng qu 10 o/o . Do

    khng dng chung xung clock, nn ng b qu trnh truyn v nhn d

    liu, ngi ta phi truyn cc bit ng b (Start, Stop,) i km vi cc bit

    d liu. Cc b truyn v b nhn s da vo cc bit ng b ny quyt

    nh khi no th s thc hin hay kt thc qu trnh truyn hoc nhn d liu.

    Do , h thng truyn khng b cn c gi l h thng truyn t

    ng b.

    T hai kiu truyn d liu c bn trn, ngi ta a ra nhiu giao

    thc (Protocol) truyn khc nhau nh: SPI (ng b), USRT (ng b), UART (bt

    ng b),Tuy vy, cng c giao thc truyn m khng th xp c vo kiu

    no: ng b hay bt ng b, chn hn kiu truyn I2C (Trong AVR gi l TWI),

    tuy vy mt cch hi gng p th c th thy giao thc truyn I2C gn vi kiu

    ng b hn v cc thit b giao tip vi nhau theo chun I2C iu dng chung mt

    xung clock. S khi ca cu trc truyn nhn ni tip USART v UART ca

    ATmega128, ATmega128 c hai b USART l USART0/UART0 v

    USART1/UART1, dng trong truyn nhn ni tip ng b v khng ng b.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    42/78

    42

    4.1.6 B bin i ADC

    B ADC chc nng bin i tn hiu tng t (analog signal) c gi tr thay

    i trong mt di bit trc thnh tn hiu s (digital signal). B ADC ca

    ATmega128 c phn gii 10 bit, sai s tuyt i 2 LSB, di tn hiu ng

    vo t 0V VCC, tn hiu ng vo c nhiu la chn nh : c 8 ng vo a hp

    n hng

    (Multiplexed Single Ended), 7 ng vo vi sai (Differential Input), B ADC

    ca

    ATmega128 l loi ADC xp x lin tip (succesive approximation ADC) vi

    hai ch hot ng c th lu chn l chuyn i lin tc (Free Running) v

    chuyn i tngbc (Single Conversion). S khi n gin ca mt b ADC

    c th hin hnh

    Hnh 4.9: S khi b truyn nhn ni tip

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    43/78

    43

    Nguyn tc hot ng ca khi ADC : Tn hiu tng t a vo cc ng

    ADC0:7 c ly mu v bin i thnh tn hiu s tng ng. Tn hiu s c

    lu trong hai thanh ghi ACDH v ADCL. Mt ngt c th c to ra khi hon

    thnh mt chu trnh bin i ADC.

    Thc t, b ADC ca ATmega128 phc tp hn nhiu, tuy nhin c s vn

    da vo nguyn tc trn. kho st b ADC ca ATmega128 ta cn tm hiu cc

    khi chc nng sau:

    in ThTham Chiu: l gi tr in th dng so snh vi inth ca tn hiu tng t cn bin i ng vo ADC. ATmega128 c 3 la

    chn in th tham chiu l AVCC bng vi VCC, in th tham chiu ni

    2.56v, v Vref l ty chn. Bn c cn l AVR c 2 ngun in th

    tham chiu ni l internal reference= 2.56v v bandgap reference= 1.24v.

    in th bandgap referencel mt hng s vt l, n lun l 1.24v, cn in

    th internal reference th c th thay i ty theo cc dng chip khc nhau.

    Trong AVR, internal referencec to ra t bandgap reference. Trong ti

    Hnh 4.10: B bin i ADC n gin

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    44/78

    44

    liu ny, tc gi iu dch hai dng in th trn iu l in th tham chiu

    ni, tuy vy, bn c nn hiu s khc nhau gia hai khi nim trn.

    Tn SClock ADC: l tn s clock cung cp cho b bin i ADC,gi tr c ththay i t vi KHz n vi MHz. Tuy nhin, tn s thch hpkhong t 50KHz n 200KHz cho phn gii 10 bit v c th cao hn

    200KHz nu phn gii thp hn.

    Ng Vo Tng T: ATmega128 c hai la chn ng vo tngt:

    10 ng vo n hng (single ended): 10 ng vo ny lADC0:7, AGND v bandgap reference. Thc t ta thng dng 8 ng

    vo ADC0:7. V c 8 ng vo ADC0:7 nn ta c th a vo 8 tn hiu

    tng t khc nhau. Khi la chn ng vo kiu ny (tc kiu single

    ended) th kt qu chuyn i c tnh nh sau:

    (4.1)

    Ng vo vi sai: Ta c th a hai tn hiu tng t vo ngvo ADC, hai tn hiu tng t ny s qua mt b vi sai (mch tr), kt

    qung ra c th c khuch i ri sau mi a vo khi ADC

    bin i. B vi sai c 2 ng vo l Vpos(ng vo dng) v Vneg(ng

    vo m). Cc chn ADC3:7 dng lm ng vo dng, cc chn ADC0:2

    l ng vo m, i vi la chn ny, kt qu ADC s l :

    (4.2)

    y Gainl li c th ty chn. Cng thc trn cho thy kt qu ADC c

    th l s m khi Vpos < Vneg. Do , di gi tr ca ADC trong trng hp ny l -

    512 ti 511. V vy, kt qu trong thanh ghi ADC c biu din di dng s b

    2. bit c kt qu l s m hay dng ta kim tra bit ADC9 (trong thanh ghi

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    45/78

    45

    ADCH), nu bit ny l 1 th kt qu l s m, nu bit ny l 0 th kt qu l s

    dng.

    Ch : in thqua b vi sai c th m, nhng in thcp cc ng vo

    ADC0:7 (cho c hai trng hp ng vo vi sai v ng vo n hng) phi lunnm trong khong0v AVCC.

    Ch Hot ng: C hai ch hot ng ca b ADC lchuyn i lin tc (Free Running) v chuyn i tng bc (Single

    Conversion).- Chuyn i lin tc: l ch m sau khi khi ng th b ADC thc

    hin chuyn i lin tc khng ngng.

    - Chuyn i tng bc: l m b ADC sau khi hon thnh mt chuyn

    i th s ngng, mt chuyn i tip theo ch c bt u khi phn mm c

    yu cu chuyn i tip.

    hiu r thm v cc thng s ca ATmega128 ta c th tra cu trong datasheetca ATmega128 ca Atmel cung cp.

    Hnh 4.11: Ng vo vi sai

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    46/78

    46

    Cc b Driver iu khin ng c

    4.1.7 B Driver iu khin ng c dng IC chuyn dng DVR8432 (TI)

    DVR8432 l IC chuyn dng iu khiu khin ng c c tch hp b

    cu H bn trong vi cc ch c thit lp bn ngoi, c b bo qu dng,qu

    p, qu nhit v mch bo v.

    Hnh 4.12: S khi v s chn caDVR8432

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    47/78

    47

    DVR8432 c c im sau:

    Ngun cp iu khin VDD v GVDD l t 10.8V n 13.2V (yu cu ngun

    chun)

    Ngun ng lc PVDD trong di t 0V n 70VDng chu ti 2 x 7A trong trng hp hai knh cng hot ng lin tc, v

    14A trong khi hot ng ch song song.

    PWM hot ng tn s cao c th ln ti 500KHz.

    DVR thch hp cho vic iu khin cc ng c DC trong cng nghip v

    trong nghin cu iu khin chnh xc.

    4.1.8 B Driver iu khin ng c dng MC33486 v MC33887, MC33932

    (Hng Freescale)

    c im:

    in p hot ng t : 5VDC -28VDC.

    Dng in cc i ca ti ln ti 10A i vi MC33486 v 5A i vi

    MC33887, MC33932

    Tn s xung PWM ti a ln ti 10kHz.

    MC 33887 tch hp bn trong 1 b cu H nn ch iu khin c mt ng

    c, MC33486 iu khin hai FET iu khin ng c vi dng ti ln ti 10A

    ring MC33932 c tch hp bn trong hai b cu H nn iu khin c hai ng

    c DC cng lc.

    Hnh 4.13: S khi ca MC 33486,MC33887,MC33932

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    48/78

    48

    4.2 Xy dng phn cng v phn mm ca h thng bm i tng

    Cu trc ca h bm gm hai phn chnh. Phn 1 x l nh da vo chui hnh

    nh thu c t camera nhn dng v tnh ton v tr ca i tng mc tiu.

    Phn 2 l phn iu khin, da vo thng s v tr i tng nhn c trong mt

    phng nh, tnh ton tn hiu iu khin r bt sao cho i tng di chuyn cduy tr mt v tr nht nh trn mt phng nh v mt khong cch nht nh.

    Trong qu trnh tm kim ta chia bc nh thnh nhiu 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 nhn dng c i tng cn theo di.Mt

    phng nh l mt phng c gc nm pha trn bn tri, truc x l trc nm ngang, trc

    Y1

    X1

    y

    x

    Hnh 4.14: Mt phng nh

    0

    Camera X l nh

    frame RFRS232

    ATmega128

    RFRS232

    Driver KC

    Cng tchnh trnh

    Cm bin

    ng c

    Mch VKMy tnh v lu tr

    Hnh 4.13: Cu trc h bm ca ti

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    49/78

    49

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

    m ta tnh ton c cc kh nng di chuyn ca r bt sao cho i tng nm

    mt v tr bt k trn mt phng nh.

    Nh vy tt c cc yu t cn thit xy dng mt h thng trin khai thc

    nghim y , ta tin hnh v thit k phn cng v lp trnh phn mm.

    4.2.1 Phn cng

    Mch phn cng c chia lm 4 khi nh sau:

    -Khi iu khin trung tm ATmega128-Khi ngun cung cp (Ngun iu khin+ng lc)-Khi Driver iu khin ng c-Khi truyn thng RF v RS232

    Khi iu khin trung tm ATmega128:

    Hnh 4.15: Mch iu khin trung tm ATmega128

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    50/78

    50

    Khi ngun cung cp:

    Khi giao tip RS232 v RF:

    Hnh 4.16: Mch ngun

    Hnh 4.17: Mch giao tip RS232 v RF

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    51/78

    51

    Khi Driver iu khin ng c:

    -MC33486:

    -MC33887:

    Hnh 4.18: Mch iu khin ng c 33486

    Hnh 4.19: Mch MC33887

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    52/78

    52

    -MC33932:

    -DVR8432:

    Hnh 4.20: Mch MC33932

    Hnh 4.21: Mch DVR8432

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    53/78

    53

    -DVR8432 kit:

    Hnh nh mch thc tca h thng:

    Hnh 4.22: DVR8432 kit

    Hnh4.23: Mch MC thc t

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    54/78

    54

    Dff

    Hnh 4.24: Mch DVR8432 thc t

    Hnh 4.25: Mch iu khin trung tm ATmega128

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    55/78

    55

    4.2.2 Giao din phn mm:

    Giao din phn mm c tht k thnh cc version vi nhiu nhim v khcnhau.

    -Giao din thnht: giao din phn mm bm mc tiu di ng dng thutton Meanshift, c kh nng chp nh, lu nh v quay, lu video.

    Hnh 4.26: Giao din phn mm dng thut ton Meanshift

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    56/78

    56

    -Giao din thhai: Sdng thut ton Camshift trn VC++ 6.0

    Hnh 4.27: Giao din phn mm trn VC++ 6.0

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    57/78

    57

    -Giao din thba:giao din ny c xy dng y trn Visual C++ 2008vi y chc nng ca mt h thng bm.

    Hnh 4.27: Giao din phn mm trn VC++ 2008

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    58/78

    58

    Chng 5: NH GI V CHY THNGHIMH THNG

    5.1 nh thc nghim ca m hnh h thng

    Hnh 5.1:nh h thng thc tchy thnghim khitruyn khng dy v thng qua RS2323

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    59/78

    59

    5.1 nh gi kt qu t c

    n xy dng c mt h thng camera r bt bm mc tiu di ng, c

    v phn cng ln chng trnh phn mm v giao din iu khin mc tiu l cc

    i tng mu sm, h thng bm tt trong iu kin nh sng tt v camera x l

    tt. Mc tiu ca ti hng ti vic a cng ngh x l nh vo trong iukhin cng nghip v trong r bt pht trin da trn h thng camera thng minh.

    Nhm phc v cc cng tc d tm pht hin vt thnhng iu kin m con

    ngi khng th ti c nh d mn, thm him thu thp d liu hoc phc v

    trong cng tc an ninh. Hon chnh c c phn cng ln phn mm ca r bt,

    tin hnh chy th nghim nhiu dng mi trng khc nhau, ban ngy, ban m,

    nh sng yu, ng thng, vng trn, v kt qu, r bt camera lun gi c

    i tng nm trn mt phng nh m ta chn.

    Bo co ny m t h thng r bt camera r bt bm i tng s dng th

    vin x l nh OpenCV ca Intel. Thut ton s dng nhn nh t Camera tin

    hnh kh nhiu, histogram, s dng thut ton Camshift, tnh ton ta tm, kch

    c, gc, thit k khi vi iu khin giao tip qua cc chun RS232 v chun RF s

    dng Mscomm trong Visual C. Thit k mch iu khin ng c s dng vi iu

    khin ATmega128 v cc IC chuyn dng iu khin cu iu khin ng c DC v

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    60/78

    60

    kim sot tc gc quay. Di iu kin nh sng nht nh i tng c th

    c tm ra nhanh chng chnh xc m t bnh hng ca nhiu.

    Tuy nhin h thng ang trong giai on pht trin nn vic thit k c kh

    cha c tt, thm m cha cao, v mun h thng chy n nh tt hn na cnphi thit k h thng c kh chnh xc. Chng trnh s dng thut ton Camshift

    phi c kim nghim v pht trin c th chn ra thut ton ti u hn

    na.Kt hp vi b lc Kalman tng kh nng chnh xc, nhng iu ny s

    c b xung trong thi gian gn y c th c mt h thng hon ho. trong

    thi gian ti s nghin cu a ng dng mng nron (tr tu nhn to) vo cng

    ngh x l nh v trong cng ngh bm nh v nhn dng nh. cng chnh l

    hng pht trin ca ti trong thi gian ti.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    61/78

    61

    KT LUN

    Trong thi gian nghin cu cng vi nhng nh hng v hng dn qu bu

    ca c H Th Kim Duyn, em hon thnh n ca mnh. C th ni rng n

    ny bc u l nn tng nh hng cho em nghin cu v pht trin trong tng

    lai.

    n gii quyt c phn no bi ton bm nh c mu sc c nh (c

    th y l nh mu ti).

    V mt l thuyt:

    -Tng quan v x l nh v th vin m ngun m Opencv

    -Tm hiu v xy dng c thut ton x l nh ti u trong h bm-Tm hiu v h thng bm i tng v cc h tracking r bt.

    Tuy nhin cng phi ni rng d c gng rt nhiu, nhng chng em vn

    khng trnh khi nhng sai st trong vic xy dng v thit k h thng cng nh l

    cch thc trnh by mt n tt nghip, v vy chng em rt mong nhn c s

    ch bo v ng gp kin ca cc thy c gio cng nh cc bn sinh vin quan

    tm n vn ny n ca em hon thin hn.

    Em xin chn thnh cm n!

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    62/78

    62

    Ti liu tham kho

    Ting Vit:

    1. Nhp mn x l nh s, H Bch Khoa H Ni.

    2. Nguyn Vn Ng (2001), x l nh (dch t quyn Two Dimensional Signal

    and Image Processing ca tc gi Jae S.Lim)

    3. Nguyn Kim Sch (1997), x l nh v video s, NXB Khoa hc k thut,

    H Ni.

    4. Ng Din Tp (1997) , x l nh bng my tnh, NXB Khoa hc k thut

    H Ni.

    Ting Anh:

    1. David A. Forsyth & Jean Ponce (2003),Computer vision a modermapproach, Prentic Hall PTR.

    2. D.H. Ballard & C.M.Brown (1997), Computer vision, Prentice Hall PTR.3. Jae S. Lim (1999),Two-Dimensional Signal and Image Processing.

    Trang Web:

    1.http://dientuvietnam.net.2.http://picvietnam.com.

    3.http://sourceforge.net/opencv/library.

    4.http://atmel.com.

    5.http://ti.com/forum.

    6.http://freescale.com. v mt s bi bo v tp ch x l nh trn th gii.

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    63/78

    63

    Ph lc

    Chng trnh xl nh trn my tnh dng th vin OpenCV:

    //Chng trnh giao din 1 chy trn MFC Application VC++// OpencvUIDlgDlg.cpp : implementation file

    //Chuong Trinh Dieu Khien ma nguon mo.

    //By HA TIEN THANH

    //=================Chuong trnh xl================

    #include "stdafx.h"#include "OpencvUIDlg.h"

    #include "OpencvUIDlgDlg.h"#include "cv.h"#include "highgui.h"

    /////////////////////////////////////////////////////////////#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif#define new DEBUG_NEW

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

    // CAboutDlg dialog used for App AboutCvvImage m_CvvImage;CvCapture * m_Video;IplImage* m_Frame;//IplImage* m_GrabFrame;//CRect rect;CDC *pDC;HDC hDC;CWnd *pwnd;bool b_flagProcess;

    bool b_flagSaveMovie=0;bool b_flagTracking=0;CvVideoWriter* m_Movie;char chEdit[10];double m_vieoProtery;int m_fameCount=0;long m_x,m_y,m_z;

    //===============================IplImage *imageTrack = 0, *hsvTrack = 0, *hueTrack = 0;IplImage *maskTrack = 0, *backprojectTrack = 0, *histimgTrack = 0;//

    CvHistogram *histTrack = 0;//int backproject_mode = 0;int select_object = 0;

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    64/78

    64

    int track_object = 0;int show_hist = 1;CvPoint origin;CvRect selection;CvRect track_window;CvBox2D track_box; // MeanshiftCvConnectedComp track_comp;int hdims = 50; //float hranges_arr[] = {0,180};//float* hranges = hranges_arr;//int vmin = 10, vmax = 256, smin = 30;int pointx, pointy;

    class CAboutDlg : public CDialog{public:

    CAboutDlg();

    // Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };

    //}}AFX_DATA

    // ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV

    support//}}AFX_VIRTUAL

    // Implementationprotected:

    //{{AFX_MSG(CAboutDlg)virtual void OnOK();

    //}}AFX_MSGDECLARE_MESSAGE_MAP()

    };

    CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){

    //{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT

    }

    void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    65/78

    65

    //{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP

    }

    BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAP

    END_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////// COpencvUIDlgDlg dialog

    COpencvUIDlgDlg::COpencvUIDlgDlg(CWnd* pParent /*=NULL*/): CDialog(COpencvUIDlgDlg::IDD, pParent)

    {//{{AFX_DATA_INIT(COpencvUIDlgDlg)

    // NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in

    Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

    }

    void COpencvUIDlgDlg::DoDataExchange(CDataExchange* pDX){

    CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(COpencvUIDlgDlg)

    // NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP

    }

    BEGIN_MESSAGE_MAP(COpencvUIDlgDlg, CDialog)//{{AFX_MSG_MAP(COpencvUIDlgDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER()ON_BN_CLICKED(IDC_OPENCAMERA, OnOpencamera)ON_BN_CLICKED(IDC_CLOSECAMERA, OnClosecamera)ON_BN_CLICKED(IDC_GRABFRAME, OnGrabframe)ON_BN_CLICKED(IDC_SAVEMOVIE, OnSavemovie)ON_BN_CLICKED(IDC_STOPSAVEMOVIE, OnStopsavemovie)ON_BN_CLICKED(IDC_STARTTRACKING, OnStarttracking)ON_BN_CLICKED(IDC_STOPTRACKING, OnStoptracking)

    ON_WM_MOUSEMOVE()ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    66/78

    66

    //}}AFX_MSG_MAPEND_MESSAGE_MAP()

    /////////////////////////////////////////////////////////////////////////////// COpencvUIDlgDlg message handlers

    BOOL COpencvUIDlgDlg::OnInitDialog(){

    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){

    CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){

    pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,

    strAboutMenu);}

    }

    // Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    pwnd = GetDlgItem(IDC_SHOWPIC);pwnd->MoveWindow(35,30,640,480);

    pDC =pwnd->GetDC();//pDC =GetDC();

    hDC= pDC->GetSafeHdc();pwnd->GetClientRect(&rect);

    CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    67/78

    67

    MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);

    //CClientDC dc(this);pDC-

    >StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);

    m_Bitmap1.DeleteObject();MemDC.DeleteDC();b_flagProcess=0;Invalidate();SetDlgItemText(IDC_EDIT_TIME,"Stop");SetDlgItemText(IDC_EDIT_FRAME_WIDTH,"Stop");SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,"Stop");SetDlgItemText(IDC_EDIT_FPS,"Stop");SetDlgItemText(IDC_EDIT_FOURCC,"Stop");SetDlgItemText(IDC_EDIT_FRAME_COUNT,"Stop");SetDlgItemText(IDC_EDIT_X,"Stop");SetDlgItemText(IDC_EDIT_Y,"Stop");SetDlgItemText(IDC_EDIT_Z,"Stop");

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

    return TRUE; // return TRUE unless you set the focus to a control}

    void COpencvUIDlgDlg::OnSysCommand(UINT nID, LPARAM lParam){

    if ((nID & 0xFFF0) == IDM_ABOUTBOX){

    CAboutDlg dlgAbout;dlgAbout.DoModal();

    }else{

    CDialog::OnSysCommand(nID, lParam);}

    }

    // If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.

    void COpencvUIDlgDlg::OnPaint(){if (IsIconic())

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    68/78

    68

    {CPaintDC dc(this); // device context for painting

    SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);

    // Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;

    // Draw the icondc.DrawIcon(x, y, m_hIcon);

    }else{

    CDialog::OnPaint();}

    if (!b_flagProcess){

    CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);

    //CClientDC dc(this);pDC-

    >StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);

    m_Bitmap1.DeleteObject();MemDC.DeleteDC();

    }}

    // The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR COpencvUIDlgDlg::OnQueryDragIcon(){

    return (HCURSOR) m_hIcon;}

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    69/78

    69

    void COpencvUIDlgDlg::OnTimer(UINT nIDEvent){

    // TODO: Add your message handler code here and/or call default/**************************************************************

    **********//* *//**************************************************************

    **********/m_Frame=cvQueryFrame(m_Video);

    // cvNamedWindow("new",1);// cvShowImage("new",m_Frame);m_CvvImage.CopyOf(m_Frame,1);if (!b_flagTracking){

    m_CvvImage.DrawToHDC(hDC, &rect);//cvWaitKey(10);

    }b_flagProcess=1;

    // KillTimer(nIDEvent);

    //=====================================================m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_POS_

    MSEC);

    m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRAME_WIDTH);

    itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FRAME_WIDTH,chEdit);m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRA

    ME_HEIGHT);itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,chEdit);

    m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FPS);itoa(m_vieoProtery,chEdit,10);SetDlgItemText(IDC_EDIT_FPS,chEdit);

    m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FOURCC);

    m_fameCount++;m_vieoProtery=cvGetCaptureProperty(m_Video,CV_CAP_PROP_FRA

    ME_COUNT);itoa(m_fameCount,chEdit,10);

    SetDlgItemText(IDC_EDIT_FRAME_COUNT,chEdit);//============to trackbox==================m_x=track_window.x+track_window.width/2;

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    70/78

    70

    itoa(m_x,chEdit,10);SetDlgItemText(IDC_EDIT_X,chEdit);

    m_y=track_window.y+track_window.height/2;itoa(m_y,chEdit,10);SetDlgItemText(IDC_EDIT_Y,chEdit);

    m_z=(track_window.width+track_window.height)/2;itoa(m_z,chEdit,10);SetDlgItemText(IDC_EDIT_Z,chEdit);

    //=============================================if (b_flagSaveMovie){

    if (!m_Movie)return;

    cvWriteFrame(m_Movie,m_Frame);}

    //=====Chuyn i khng gian mu RGB => HSV=======

    int i, bin_w, c;if (!b_flagTracking)

    return;

    cvCopy( m_Frame, imageTrack, 0 );cvCvtColor( imageTrack, hsvTrack, CV_BGR2HSV ); //

    if( track_object )//{

    int _vmin = vmin, _vmax = vmax;

    cvInRangeS( hsvTrack,cvScalar(0,smin,MIN(_vmin,_vmax),0),cvScalar(180,256,MAX(_vmin,_vmax),0), maskTrack ); //

    cvSplit( hsvTrack, hueTrack, 0, 0, 0 ); //

    if( track_object < 0 )//{

    float max_val = 0.f;cvSetImageROI( hueTrack, selection ); //cvSetImageROI( maskTrack, selection ); //

    cvCalcHist( &hueTrack, histTrack, 0, maskTrack ); //

    cvGetMinMaxHistValue( histTrack, 0, &max_val, 0, 0 );

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    71/78

    71

    cvConvertScale( histTrack->bins, histTrack->bins, max_val ?255. / max_val : 0., 0 ); //

    cvResetImageROI( hueTrack ); // remove ROIcvResetImageROI( maskTrack );track_window = selection;track_object = 1;

    cvZero( histimgTrack );bin_w = histimgTrack->width / hdims;

    for( i = 0; i < hdims; i++ ){

    int val = cvRound(cvGetReal1D(histTrack->bins,i)*histimgTrack-

    >height/255 );CvScalar color = hsv2rgb(i*180.f/hdims);cvRectangle( histimgTrack,

    cvPoint(i*bin_w,histimgTrack->height),cvPoint((i+1)*bin_w,histimgTrack->height -

    val),color, -1, 8, 0 );//}

    }

    cvCalcBackProject( &hueTrack, backprojectTrack, histTrack ); //

    cvAnd( backprojectTrack, maskTrack, backprojectTrack, 0 );//cvCamShift( backprojectTrack, track_window,cvTermCriteria(

    CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ),&track_comp,&track_box );//

    track_window = track_comp.rect;//

    if( backproject_mode )cvCvtColor( backprojectTrack, imageTrack, CV_GRAY2BGR

    ); //if( imageTrack->origin )

    track_box.angle = -track_box.angle;cvEllipseBox( imageTrack, track_box, CV_RGB(255,0,0), 3, CV_AA, 0 );//

    }

    if( select_object && selection.width > 0 && selection.height > 0 )//{

    cvSetImageROI( imageTrack, selection );cvXorS( imageTrack, cvScalarAll(255), imageTrack, 0 );cvResetImageROI( imageTrack );

    }

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    72/78

    72

    m_CvvImage.CopyOf(imageTrack,1);m_CvvImage.DrawToHDC(hDC, &rect);

    //=============Thit lp timer================CDialog::OnTimer(nIDEvent);}

    CvScalar COpencvUIDlgDlg:: 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 COpencvUIDlgDlg::OnOpencamera(){

    // TODO: Add your control notification handler code here

    //m_Video=cvCaptureFromCAM(-1);if (!m_Video)

    m_Video=cvCreateCameraCapture(-1);//HIGHGUI//

    if (!m_Video){

    int nChoice = MessageBox("NoCamera","Note!",MB_OK|MB_ICONWARNING);

    if(nChoice=IDOK) {}

    return;

    }SetTimer(1,100,NULL);

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    73/78

    73

    }

    void COpencvUIDlgDlg::OnClosecamera(){

    // TODO: Add your control notification handler code hereKillTimer(1);cvReleaseCapture(&m_Video);cvReleaseVideoWriter(&m_Movie);b_flagProcess=0;m_fameCount=0;b_flagSaveMovie=0;

    CDC MemDC;CBitmap m_Bitmap1;m_Bitmap1.LoadBitmap(IDB_BLANK);MemDC.CreateCompatibleDC(NULL);MemDC.SelectObject(&m_Bitmap1);pDC-

    >StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,0,0,48,48,SRCCOPY);

    m_Bitmap1.DeleteObject();MemDC.DeleteDC();

    SetDlgItemText(IDC_EDIT_TIME,"Stop");SetDlgItemText(IDC_EDIT_FRAME_WIDTH,"Stop");SetDlgItemText(IDC_EDIT_FRAME_HEIGHT,"Stop");SetDlgItemText(IDC_EDIT_FPS,"Stop");SetDlgItemText(IDC_EDIT_FOURCC,"Stop");SetDlgItemText(IDC_EDIT_FRAME_COUNT,"Stop");SetDlgItemText(IDC_EDIT_X,"Stop");SetDlgItemText(IDC_EDIT_Y,"Stop");SetDlgItemText(IDC_EDIT_Z,"Stop");

    }

    void COpencvUIDlgDlg::OnGrabframe(){

    if (!m_Video){

    int nChoice = MessageBox("Nocamera!","Note",MB_OK|MB_ICONWARNING);

    if(nChoice == IDOK){};return;

    }m_GrabFrame=cvQueryFrame(m_Video);

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    74/78

    74

    if (!m_GrabFrame)return;

    static char countsnap='1';CString m_name="";m_name=+countsnap;m_name+=".bmp";

    IplImage *m_snap=cvCreateImage(cvGetSize(m_GrabFrame),m_GrabFrame->depth,m_GrabFrame->nChannels);

    cvCopy(m_GrabFrame,m_snap,NULL);m_snap->origin=0;const char* pszStr = m_name.GetBuffer(m_name.GetLength());cvSaveImage(pszStr,m_snap); //

    countsnap++;

    }

    void COpencvUIDlgDlg::OnSavemovie(){

    // TODO: Add your control notification handler code here//m_Movie=cvCreateVideoWriter("video.avi",-1,10,cvSize(352,288),1);if (b_flagProcess){

    //m_Movie=cvCreateVideoWriter("video.avi",CV_FOURCC('P','I','M','1'),10,cvSize(352,288),1);

    m_Movie=cvCreateVideoWriter("video.avi",-1,10,cvSize(640,480),1);

    b_flagSaveMovie=1;}else

    MessageBox("NoCamera","Note",MB_OK|MB_ICONWARNING);

    }

    void COpencvUIDlgDlg::OnStopsavemovie(){

    // TODO: Add your control notification handler code herecvReleaseVideoWriter(&m_Movie);b_flagSaveMovie=0;

    }void COpencvUIDlgDlg::OnStarttracking()

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    75/78

    75

    {// TODO: Add your control notification handler code hereif (!b_flagProcess){

    MessageBox("Press ButtonStart!","Note",MB_OK|MB_ICONWARNING);

    return;}

    b_flagTracking=1;imageTrack=0;track_object=-1;

    if (!imageTrack){

    imageTrack = cvCreateImage( cvGetSize(m_Frame), 8, 3 );//imageTrack->origin = m_Frame->origin;hsvTrack = cvCreateImage( cvGetSize(m_Frame), 8, 3 );hueTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1 );maskTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1 );//backprojectTrack = cvCreateImage( cvGetSize(m_Frame), 8, 1

    );//histTrack = cvCreateHist( 1, &hdims, CV_HIST_ARRAY,

    &hranges, 1 ); //histimgTrack = cvCreateImage( cvSize(320,200), 8, 3 );//cvZero( histimgTrack );//

    }

    origin = cvPoint(150,150);selection = cvRect(150,150,20,20);//

    // cvNamedWindow( "CamShiftDemo", 1 );//// cvNamedWindow( "Histogram", 1 );// cvSetMouseCallback( "CamShiftDemo", on_mouse ); //

    }

    void COpencvUIDlgDlg::OnStoptracking(){

    // TODO: Add your control notification handler code hereb_flagTracking=0;imageTrack=0;track_object=0;

    }void COpencvUIDlgDlg::OnMouseMove(UINT nFlags, CPoint point)

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    76/78

    76

    {// TODO: Add your message handler code here and/or call default

    //pwnd = GetDlgItem(IDC_SHOWPIC);//pwnd->GetWindowRect(&rect);//pwnd->MoveWindow(35,30,352,288);//if ((point.x>rect.left)&&(point.xrect.top)&&(point.y35)&&(point.x30)&&(point.yLoadCursor(IDC_CURSOR1));

    if (select_object){

    pointx=point.x-35;pointy=point.y-30;if( imageTrack->origin )pointy = 480 - pointy;//480selection.x = MIN(pointx,origin.x);selection.y = MIN(pointy,origin.y);selection.width = selection.x + CV_IABS(pointx - origin.x);selection.height = selection.y + CV_IABS(pointy - origin.y);selection.x = MAX( selection.x, 0 );selection.y = MAX( selection.y, 0 );selection.width = MIN( selection.width, imageTrack->width );selection.height = MIN( selection.height, imageTrack->height );selection.width -= selection.x;selection.height -= selection.y;

    }}

    CDialog::OnMouseMove(nFlags, point);}

    void COpencvUIDlgDlg::OnLButtonDown(UINT nFlags, CPoint point){

    // TODO: Add your message handler code here and/or call default

    if( !imageTrack ){

    MessageBox("Press Button

    StartTracking!","Note!",MB_OK|MB_ICONWARNING);return;}

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    77/78

    77

    if ((point.x>35)&&(point.x30)&&(point.yorigin )

    pointy = 288 - pointy;

    if (imageTrack->width==800){

    pointx=pointx*640/352;pointy=pointy*480/288;

    }

    origin.x = pointx;origin.y = pointy;

    selection = cvRect(pointx,pointy,0,0);//

    select_object = 1;//}

    CDialog::OnLButtonDown(nFlags, point);}

    void COpencvUIDlgDlg::OnLButtonUp(UINT nFlags, CPoint point){

    // TODO: Add your message handler code here and/or call defaultselect_object = 0;//if( selection.width > 0 && selection.height > 0 )

    track_object = -1;//

    CDialog::OnLButtonUp(nFlags, point);}

    void COpencvUIDlgDlg::OnAboutbox(){

    // TODO: Add your control notification handler code hereCAboutDlg dlgAbout;

    dlgAbout.DoModal();}

  • 7/30/2019 Do an Tot Nghiep_thanh(Ok)

    78/78

    78

    void CAboutDlg::OnOK(){

    CDialog::OnOK();}

    void COpencvUIDlgDlg::OnCancel(){

    // TODO: Add extra cleanup hereint user_choice =

    MessageBox("Exit?","Exit!",MB_OKCANCEL|MB_ICONWARNING);if(user_choice == IDOK)

    /*{if(m_Video)

    destoryWindow();};*/

    CDialog::OnCancel();}

    BEGIN_EVENTSINK_MAP(COpencvUIDlgDlg, CDialog)//{{AFX_EVENTSINK_MAP(COpencvUIDlgDlg)

    //}}AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()


Recommended