Bi năđổi Hough (Hough Transform)

Một phần của tài liệu Ứng dụng xử lý hình ảnh nhận dạng đường đi cho ôtô chạy tự động (Trang 37)

BằngăcáchănƠoăđóătaăthuăđ c m t s đi m, v năđ đặt ra là c n ki m tra xe cácăđi măcóălƠăđ ng thẳng hay không.

Bài toán:

Choănăđi m (xi,yi), i=1,n vƠăng ỡng hãy kiểm tra n điểm có tạo thành

đường thẳng hay không?

ụăt ng: Gi s năđi m nằm trên cùng m tăđ ng thẳngăvƠăđ ng thẳngăđóă cóăph ngătrình:ăy = ax+b

(xi,yi) thu că đ ng thẳng nên yi = axi+b  b = - axi+ yi , v i m i

i=1,n.Nh ăv y, m iăđi m (xi,yi) trong mặt phẳng s t ngă ng v i m t s đ ng thẳng b = - axi+ yi trong mặt phẳng tham s a, b; n đi m (xi,yi) thu căđ ng thẳng trong mặt phẳngăt ngă ng v iănăđ ng thẳng trong mặt phẳng tham s a, b giao nhau t i m tăđi măvƠăđi m giao chính là a, b. Chính là h s xácăđ nhăph ngătrìnhă c aăđ ng thẳngămƠăcácăđi m nằm vào.

Ph ngăpháp:ă

- Xây d ng m ng ch s [a, b]và gán giá tr 0ăbanăđ u cho t t c các phân t c a m ng.

31

- V i m i (xi,yi) và v i m i a, b là ch s c a ph n t m ng thoã mãn b = -

axi+ yi tĕng giá tr c a phân t m ng t ngă ng lên 1.

- Tìm ph n t m ng có giá tr l n nh t n u giá tr l n nh t tìm đ c so v i s phân t l năh năhoặc bằngăng ỡngăθăcho tr c thì ta có th k t lu năcácăđi m nằm trên cùngă1ăđ ng thẳngăvƠăđ ng thẳng có ph ngătrình y = ax +b

trongăđóăa, b t ngă ng là ch s c a ph n t m ng có giá tr l n nh t tìm đ c.

Ví d : Choă5ăđi m (0, 1); (1, 3); ( 2, 5); (3, 5); (4 ,ă9)ăvƠăθă=ă80% Hãy ki m traăxemă5ăđi măđƣăchoăcóănằm trên cùng m tăđ ng thẳng hay không? Hãy cho bi t ph ngătrìnhăđ ng thẳng n u có. - L p b ng ch s [a, b] và gán giá tr 0. Hình 2.15: Bng ch s giá tr 0 [15] + (0, 1): b = 1 + (1, 3): b = -a + 3 + (2, 5): b = -2a + 5 + (3, 5): b = -3a + 5 + (4, 9): b = -4a + 9 - Tìm ph n t l n nh t có giá tr 4: 4/5 = 80%

32

2.2.2.Bi năđổiăHoughăchoăđ ng thẳng trong t aăđ c c

Hình 2.16:Đường thng Hough trong h tọa độĐề-các [15]

M iăđi m (x,y) trong mặt phẳngăđ c bi u di n b i cặp (r, ) trong t aăđ c c.

T ngăt m đ ng thẳng trong mặt phẳngăcũngăcóăth bi u di n b i m t cặp (r,) trong t aăđ c c v i r là kho ng cách từ góc t aăđ t iăđ ng thẳngăđóăvƠă  là góc t o b i tr c Ox v đ ng thẳng vuông góc v i nó, Hình 2.16 bi u di n đ ng thẳng Hough trong t aăđ Đ -các.

Ng c l i, m i m t cặp (r,) trong to đ c căcũngăt ngă ng bi u di n m t đ ng thẳng trong mặt phẳng.

Gi s M(x,y) là m tăđi m thu căđ ng thẳngăđ c bi u di n b i (r,), g i H(x,y) là hình chi u c a góc t aăđ Oătrênăđ ng thẳng ta có x = rcos, y = rsin. Mặt khác, ta có: OH.HA=0.

Từ đóăcóăm i liên h (x,y) và (r,)ănh ăsau:ăxcos+ ysin=ăr.ăXétănăđi m thẳng hàng trong t aă đ Đ -cácă cóă ph ngă trìnhă xcos+ ysin= ro .Bi nă đổi Hough ánh x năđi mănƠyăthƠnhănăđ ng sin trong t aăđôăc cămƠăcácăđ ngănƠyăđ u điăquaăđi m (r,).ăGiaoăđi m (r,) c aănăđ ng s xácăđnh m tăđ ng thẳng trong h t aăđ Đ -các.ăNh ăv y nh ngăđ ng thẳngăđiăquaăđi m (x,y) s cho duy nh t m t cặp (r,)ăvƠăcóăbaoănhiêuăđ ngăđiăquaă(x,y)ăs có b y nhiêu cặp giá tr (r,). 

33

Ch ngă3ă

PH N M M NG D NG

Ph n này trình bày ph n m m và các gói công c chínhăđ c s d ng trong đ tài: Matlab cùng v i các công c c a nó là: Image Processing Toolbox, Image Acquistion Toolbox, Computer Vision System Toolbox.

3.1. Matlab

3.1.1.Gi i thi u Matlab

Matlab (Maxtrix Laboratory) là m t công c ph n m m đ c xây d ng b i MathWork đƣătr nên r t phổ bi n v i các kỹ s ,ăcácănhƠăkhoaăh c và nhà nghiên c u trong c haiălĩnhăv c công nghi p và hàn lâm, do nhiêu y u t ,ătrongăđó,ăs sẵn có c a các b công c đặc bi tăđ căđóngăgóiătheoătừng chuyên ngành thu c các lĩnhăv c quan tr ng, từ các m ngăn ronăđ năcácălĩnhăv c tài chính hay x lý nh. Dùng Matlab có th gi i quy tăđ c các v năđ m tăcáchăđ năgi n, tr c quan mà không c năđòiăhỏiăng i s d ng ph i là nh ng l p trình viên chuyên nghi p.

34

Matlab cùng b công c r t m nh c a nó cho phép gi i quy t các bài toán khácănhauăđặc bi t là h ph ngătrìnhătuy n tính, phi tuy n hay các bài toán ma tr n v i k t qu nhanh chóng và chính xác. B l nh này lên t i hàng ngàn và ngày càng đ c m r ng thông qua các hàm ng d ngăđ c t o l p b iăng i s d ng hay thôngăquaăth ăvi n tr giúp.

Bên c nhăđó,ăMatlabăchoăphépăx lý d li u, bi u di năđ h a m t cách m m dẻo,ă đ nă gi n và chính xác trong không gian hai chi uă cũngă nh ă ba chi u, giúp ng i s d ng có th quan sát k t qu m t cách tr căquanăvƠăđ aăraăgi i pháp t t nh t.ăĐ c tích h p m t s ngôn ng l p trình thông d ngănh ăC,ăC++,ăFortran,ă Javaầă doă đóă nh ng ng d ng c a Matlab có th đ c chuy nă đổi m t cách d dàng, m m dẻo sang nh ng ngôn ng đó.

Trongălĩnhăv c x lý nh s , Matlab đ c xem là m t công c r t m nh trong th i gian qua. Hi n nay, Vi t Nam và trên th gi iăđƣăcóănhi u ng d ng từ vi c x lý nh v iăMatlabănh :ăCácăh th ng gi xe t đ ng, nh n di n khuôn mặtầ

Phiên b n m i nh tătínhăđ n tháng 3/2014 là b ng R2014a (8.3).

3.1.2.Các thành ph n c ăb n c a Matlab

Ph n này trình bày các y u t c ăb n c a Matlab g m:ăMôiătr ng làm vi c, các ki u d li u và s ho tăđ ng c a các dòng l nh.

3.1.2.1. Môiătr ng làm vi c

Môi tr ng làm vi c c a Matlab bao g m:

Matlab Desktop: thôngă th ng g m 5 c a sổ chính: Command Window, Workspace Browser, Current Directory Window, Command History Window và m t hoặc nhi u Figure Window ậ đ hi n th hình nh hoặcăđ th .

Matlab Editor: Dùng đ t o và ch nh s a các M-files. Bao g măcácăhƠmăđ l u,ăxemăvƠăs a l i các M-files.

Help System: Là c a sổ tr giúpăđ c hi n th d i d ng trình duy t HTML, bao g m các ch cănĕngătìmăki m và tr giúp.

35

Hình 3.2:Ca s làm vic

3.1.2.2. Ki u d li u

Matlab hổ tr các ki u d li uăđ c li t kê B ng 3.1. Tám ki u d li uăđ u trong b ng là ki u s . Trong Matlab ki u d li u mặtăđ nh là Double cho ki u s . Có th chuy nă đổi gi a các ki u d li u trong Matlab. M t chuổi (string) trong Matlabăđ năgi n là m t m ng 1x n ký t .

B ngă3.1: Các ki u d li u c a Matlbab.

Kiểu dữ liệu Di n t

unit8 8-Bit s nguyên không d u (1byte cho m i ph n t )

unit16 16-Bit s nguyên không d u (2byte cho m i ph n t )

unit32 32-Bit s nguyên không d u (4byte cho m i ph n t )

int8 8-Bit s nguyên có d u (1byte cho m i ph n t )

int16 16-Bit s nguyên có d u (2byte cho m i ph n t )

int32 32-Bit s nguyên có d u (4byte cho m i ph n t )

single S th p phân v iăđ chínhăxácăđ nă(4byteăchoăm i ph n t )

36

logical Ki u logic có giá tr 0 (fales) hoặc 1 (true) (1byte cho m i ph n t )

char Ki u ký t (2byte cho m i ph n t )

3.1.2.3. M ng và ma tr n

M t trong nh ngăđi m m nh c a Matlab là kh nĕngăx lý m t t p s đ c sặp x p theo m t th t nƠoăđóă(g i là m ng)ănh ălƠăm t bi tăđ nă(singleăvariable).ă Kh nĕngănƠyălƠmăchoăch ngătrìnhăvi t bằng Matlab r t g n và d hi u. M ng là m tăđ iăt ngăc ăs c a Matlab

M ng m t chi u:ăVécăt

M ng ki uădòngă(Vécăt ădòng): Các ph n t đ căngĕnăcáchăbằng kho ng tr ng hoặc d u ph y hoặc c hai cho d nhìn. T t c các ph n t đ căđặt trong d u ngoặc vuông [ ]. Matlab hi n th vécăt ădòngătheoăhƠngăngang.

M ng ki u c t (Vécă t ă c t): Các ph n t đ că ngĕnă cáchă bằng d u ch m ph y (;). Matlab hi n th vécăt ăc tătheoăph ngăd c.

M ng có các ph n từcáchăđ u: Khi mu n khai báo m t m ng có các ph n t cáchăđ u theo s gia q: Tên_m ng = [ph n t đ u: s gia q: ph n t cu i].

M ng hai chi u: Ma tr n

M t m ng trong Matlab có th có nhi u dòng, nhi u c t. M t m ng hai chi u nh ăv yăđ c g i là ma tr n.

M t ma tr năcóăkíchăth c m x n, chính là m t m ng có n dòng, m c t.

Cácăvécăt ăđ c Matlab xem là các m ng hai chi uăđặc bi t: chúng có kích th că1ăxănă(vécăt ădòng)ăhoặcămăxă1ă(vécăt ăc t). Matlab x păvécăt ăvƠămaătr n vào l p double array trong workspace.

Có th ch nh s a các ph n t c a ma tr n bằng cú pháp:

open(‘ten_ma_tran’).

Các hàm thông d ngăđ i v iăđ i s là m ng

 Hàm size(X): tr v m tăvécăt ădòngă[măn]ăch aăkíchăth c c a m ng X có m dòng, n c t.

 Hàm length(X):ătrongăđóăXălƠăm t ma tr n, s tr v s dòng hoặc s c t l n nh t.

37  Hàm max(X) :

o N u X là m tăvécăt ,ăs tr v ph n t l n nh t trong X.

o N u X là m t ma tr n, s tr v m tăvécăt ădòngăch a các ph n t l n nh t trong m i c t.

 Hàm min(X):ăt ngăt hàm max(X)nh ngăs tr v ph n t bé nh t.  Hàm sum(X) : tính tổng các ph n t trong từng c t c a ma tr n X, k t qu

ch a trong m tăvécăt ădòng.

 Hàm sort(X) : s p x p m i ph n t c a ma tr n X theo th t tĕngăd n từ dòngă1ăđ n dòng cu i, k t qu là m t ma tr năcùngăkíchăth c v i X.

 L nh [x, k] = max(X): t ngăt max(X) nh ngăgiáătr c a ph n t l n nh tăđ căl uătrongăvécăt ădòngăx,ăvƠăcácăch s t ngă ngăđ căl uă trongăvécăt ădòngăk.

 L nh [u, v, w] = find(X) : tìm nh ng ph n t khác 0 c a ma tr n X, vécăt ăuăch a ch s dòng, v ch a ch s c t c a nh ng ph n t khácă0,ăvécăt ă w ch a các ph n t khác 0 c a X.

M ng nhi u chi u

M t m ng ba chi u s cóăkíchăth c m x n x q, m t m ng b n chi u s có kíchăth cămăxănăxăqăxăpầă.ăHaiăchi uăđ u tiên là dòng và c t, còn các chi u l n h năđ c g i là trang. Đ truy xu t t t c các ph n t trang 2 c a m ng X, dùng cú pháp: X(:, :, 2).

Hàm ndims( ) s tr v s chi u c a m t m ng.

Ch s m ng và ma tr n trong Matlab

Các ph n t c a m ng (ma tr năvƠăvécăt )ăđ căđánhăch s b tăđ u từ 1. Do đó,ăa(1)ălƠăcúăphápăđ g i ph n t d u tiên c a m ng m t chi u a, f(1,1) là cú pháp đ g i ph n t đ u tiên c a m ng hai chi u f, chẳng h nănh ăcácăđi m nh bên trái c a m t nhăđ năs c f.

Matlab không gi i h n s chi u c a m ng,ănh ngăcóăm t gi i h n trong s ph n t c a m ng. Và giá tr gi i h nă đóă ph thu c vào máy tính và phiên b n Matlabăđangăs d ng.ăĐ ki m tra, s d ng cú pháp:

38

>> [c, maxsize] = computer

Các m ng chu n

Matlab có m t vài m ng tiêu chu năđ c xây d ng sẳn:  zeros(m,n) t o ra m t ma tr n mxn ph n t 0.  ones(m,n) t o ra m t ma trân mxn ph n t 1.  true(m,n) t o ra m t ma tr n mxn ph n t logic 1.  fales(m,n) t o ra m t ma tr n mxn ph n t logic 0.  eye(n) tr v m t ma tr năđ năv nxn.

 magic(m) tr v m t ma tr n vuông có tổng các ph n t trên m t hàng, m t c t hoặcătrênăđ ng chéo bằng nhau.

 rand(m,n) t o m t ma tr n mxn mà các ph n t là các giá tr ng u nhiên nằmătrongăđo n [0,1].

3.1.2.4. Các công c l p trình: Scrip và Function

Chúng ta có th tính toán và l p trình trong Matlab bằng hai cách: 1-Vào các l nh tr c ti p trên c a sổ l nh,ăđơyălƠăch đ t ngătác.ă2-Ch y m tăch ngătrìnhă Matlab, g m các dòng l nhăđ c so nătr c trong m t t p tin l nh (script file).

Ch đ t ngătácăch thích h p v i nh ng bài toán nhỏ, v i nh ng bài toàn ph c t p và các l nh lặpăđiălặp l i nhi u l năthìănênădùngăcáchă2.ăChínhălƠăph ngă th c vi tăvƠăl uăcácăch ngătrìnhăMatlabătrongănh ng t p tin có ph năđuôiăd ng .m, đ c g i là các M-Files.

a) M-Files

M-files trong Matlab có th là Script-files (t p tin l nh) đ th c hi n m t lo t các l nh hoặc các t p l nh c a Matlab hoặc là Function-liles (t p tin hàm) đ nh n đ i s và xu t ra m t hoặc nhi u giá tr .

Khi M-files là m t Script, nó bao g m m t chu i các l nhăđ c phiên d ch và th c hi n. Ngoài ra, chúng còn ch a các hàm d ng sẵn c a Matlab hoặc các hàm doăng i dùng t oăra.ăĐ t o m t M-files có nhi u cách : 1)gõ l nh edit trong c a sổ l nh. 2) Từ c a sổ l nh nh n tổ h p phím Ctrl+N. 3) Nh n vào bi uăt ng New Script. 4)Menu NewScript. Sau khi so n th oăxong,ăl uăthƠnhăfilesăcóăph n m

39

r ng là .m.ăĐ ch y m t M-files ch c n vào folder ch a M-files và gõ tên M-file vào c a sổ lênh.

Khi M-file là m t Function-files, s có d ng : Function [outputs] = function_name(inputs)

Từ khóa Function là yêu c u b t bu c.ăCácăđ i s đ uăraăđ c kèm theo trong d u ngoặc vuông trong khi các tham s đ uăvƠoăđ căđặt trong d u ngoặc đ n.ăN u Function không tr v b t kỳ m t giá tr nào thì không c n các d u ngoặc và d u bằng, ch c n tên hàm. Tên hàm ph i b tăđ u b i m t ký t ch và không đ c có kho ng tr ng,ăđ dài t iăđaălƠă63ăkỦăt .

b) Các toán t

Toán t trong Matlab có th đ c nhóm thành 3 nhóm chính :

 Toán t s h c (Arithmetic Operators): Th c hi n các tính toán s trên ma tr n.

 Toán t quan h (Relational Operators): So sánh các toán h ng. Các hàm s h c bổ sung:

Tên hàm Mô tả

iabsdiff Sai phân tuyệt đối hai ảnh

imadd Cộng hai ảnh hoặc cộng ảnh với hằng số

imcomplement Bù ảnh

imdivide Chia hai ảnh hoặc chia ảnh cho hằng số

imlincom Tổ hợp tuyến tính các ảnh

immultyply Nhân hai ảnh hoặc nhân ảnh với hằng số

imsubtract Trừ hai ảnh hoặc trừảnh với hằng số

 Toán t logic (Logical Operators): Th c hi n các ch cănĕngălogic.

Hàm Di n t

xor Còn g i là OR có lo i trừ. Th c hi n tính toán v i hai toán h n. Tr v 1 n u ch m t trong hai ph n t c a toán h nălƠă1,ăng c l i, tr v 0.

40

các ph n t trongăvécăt ăkhácă0,ăng c l i, tr v 0.

any Ki mătraăvécăt ăhayămaătr n có giá tr khác 0 hay không. Tr v giá tr 1 n u có 1 ph n t bằngăkhác,ăng c l i, tr v 0.

c) Các bi n và hằng quan tr ng

Hàm Giá tr tr v

ans (answer) Bi n t m ch a k t qu g n nh t sau cùng nh t.

eps S nhỏ nh t khi c ng vào 1 s cho m t s l năh nă1.ăĐ chính xác c a d u ch măđ ng.

i (hoặc j) Đ năv o ( −1).

Inf Vô cùng l n (Ví d 5/0).

NaN (hoặc nan) K t qu s khôngăxácăđ nh.

d) Bi u di n s

Matlab có th bi u di n s d i hai d ng, d ng thôngăth ng và d ng khoa h c. Trong d ng khoa h căth ng dùng ký t eăđ bi u di n m t s nhân v i công b i c a 10. S ph căth ngăđ c bi u di n bằng hai ký t i và j.

e) C uătrúcăđi u khi n

Ngôn ng l p trình Matlab cung c p nh ng c uătrúcăđi u khi n thông th ng nh ănh ng ngôn ng l p trình c păcaoăkhácăđóălƠ:

C uătrúcăđi u ki n IF (v i tùy ch n ELSE và ELSEIF) :

if biểu thức logic 1 Lệnh hoặc nhóm lệnh 1 elseif biểu thức logic 2 Lệnh hoặc nhóm lệnh 2 else Lệnh hoặc nhóm lệnh 3 end C u trúc l a ch n SWITCH :

41

switch biểu thức đầu vào %vô hướng hoặc chuổi ký tự case giá trị 1 nhóm lệnh 1 case giá trị 2 nhóm lệnh 2 case giá trị n nhóm lệnh n otherwise nhóm lệnh n+1 end

Chú ý: Trong c u trúc này, ch có m t nhóm l nhăđ c thi hành.

C u trúc vòng lặp FOR và WHILE và các câu l nh liên quan (BREAK và CONTINUE):

- Vòng lặpăFOR:ăĐ c s d ng khi s l n lặp l iăđ c bi tătr c.

for n = array (m t m ng b t kỳ, không nh t thi t ph i là s t nhiên)

Lệnh hoặc nhóm lệnh

end

- Vòng lặp WHILE: Đ c s d ng khi s l n lặp không bi tătr c, quá trình lặp s ch m d t khi m tăđi u ki năxácăđ nhănƠoăđóăđ c tho .

while biểu thức logic (bi u th c khi m tra th c hi n vòng lặp)

Lệnh hoặc nhóm lệnh

end

L nh BREAK cho phép ch m d t s m vòng lặp FOR hoặc WHILE khi tho m tăđi u ki nănƠoăđóăbênătrongăvòngălặp.

Chú ý: Trong c u trúc vòng lặp while, nh t thi t ph i có m t l nh làm thay đổi giá tr bi u th c ki m tra sau m t s l n h u h n vòng lặpăđ c th c thi, n u

Một phần của tài liệu Ứng dụng xử lý hình ảnh nhận dạng đường đi cho ôtô chạy tự động (Trang 37)

Tải bản đầy đủ (PDF)

(113 trang)