Image Acquisition Toolbox

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 57)

3.2.1.Ch cănĕng

Image Acquisition Toolbox là t p h p các hàm c a MATLAB có ch cănĕng thu th p hình nh s từ các thi t b thu hình. C th là:

51

- Thu th p hình nh từ các thi t b thu hình khác nhau, từ lo i chuyên d ng đ n lo i rẻ ti nănh ăWebcamă(giaoăti p USB).

- Trình chi u (preview) lu ng d li u video từ thi t b thu hình. - Trích hình nh từ lu ng d li u video.

- Thi t l p các callback cho các s ki n khác nhau.

- Chuy n d li u hình nh vào không gian workspace c aăMATLABăđ x lý nh ti p theo.

3.2.2.Cácăb c thu th p hình nhăc b n

B c 1: G n thi t b thuăhìnhăvƠoămáyătínhăvƠăcƠiăđặtădriverăđi u khi n. - G n thi t b thu hình vào máy tính.

- CƠiăđặtădriveră(trìnhăđi u khi n) cho thi t b (đ c cho b i nhà s n xu t). - Xem th hình nh video hi n trên máy tính thông qua ph n m m c a nhà s n

xu t.

- Kh iăđ ng MATLAB

B c 2: Ch đnh thông tin ph n c ng:

Ta c n ch đnh cho MATLAB bi t ph n c ngănƠoădùngăđ l y d li u (vì có th có nhi u camera k t n i v i PC).

Gõ l nh imaqhwinfođ bi t tên các lo i thi t b có th dùng.

>> imaqhwinfo ans =

InstalledAdaptors: {'gentl' 'gige' 'matrox' 'winvideo'}

MATLABVersion: '8.1 (R2013a)'

ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '4.5 (R2013a)'

Trongă đó ‘winvideo’ ch các thi t b dùng chu n Windows Driver Model (WDM) hoặc Video for Windows (VFW). Bao g m các lo i USB WEBCAM và camera IEEE 1394.

52

Ch đnh thi t b : Tuỳ vào lo i thi t b (adaptor name), m i thi t b cùng lo i g năvƠoăPCăđ căđánhăs ID, thi t b th nh t có deviceID = 1, thi t b th hai có deviceIDă=ă2,ầ

Đ li t kê xem lo i winvideo có bao nhiêu thi t b g năvƠoămáy,ătaăcũngădùngă l nh imaqhwinfor v iăđ i s là winvideo.

>> imaqhwinfo('winvideo') ans = AdaptorDllName: [1x81 char] AdaptorDllVersion: '4.5 (R2013a)' AdaptorName: 'winvideo' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]

Có m t thi t b v i DeviceID là 1. Ta có th tìm hi u thêm thông tin v thi t b này bằng cú pháp: >> imaqhwinfo('winvideo',1) ans = DefaultFormat: 'YUY2_160x120' DeviceFileSupported: 0 DeviceName: 'HP Webcam' DeviceID: 1 VideoInputConstructor: 'videoinput('winvideo', 1)' VideoDeviceConstructor: 'imaq.VideoDevice('winvideo', 1)' SupportedFormats: {1x5 cell}

ĐơyălƠăwebcam mặcăđ nh c a laptop.

B c 3: T oăđ iăt ngăđ i di n cho lu ng d li u hình nh.

Đ t o lu ng d li u hình nh ta dùng l nh videoinput hoặc l nh

imaq.VideoDevice

53

>> vid = videoinput('winvideo',1)

Summary of Video Input Object Using 'HP Webcam'. Acquisition Source(s): input1 is available.

Acquisition Parameters: 'input1' is the current selected source.

10 frames per trigger using the selected source.

'YUY2_160x120' video data to be logged upon START.

Grabbing first of every 1 frame(s).

Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START.

0 frames acquired since starting. 0 frames available for GETDATA.

B c 4: Hi n th lu ng video lên mƠnăhìnhăđ xem th

Đ xemătr c lu ng d li u video ta dùng l nh preview. Ví d : preview(vid)

Màn hình lúc này hi n lên c a sổ video c aăđ iăt ng vid. Đ k t thúc xem ta dùng l nh stoppreview hoặcă đ đóngă c a sổ preview ta dùng l nh

closepreview(vid).

B c 5: L y m t khung nhăvƠăl uăthƠnhăfileăđ ho .

Đ l y m t nh vào x lý ta dùng l nh getsnapshot.

Đ l uă nhăthƠnhăfileăđ ho ta dùng l nh imwrite.

B c 6: Làm s ch b nh

Sau khi l y d li u hình nh ta có th gi i phóng b t b nh bằng các l nh sau:

delete(vid) clear

54

close(gcf)

3.3. Computer Vision System Toolbox

ĐơyălƠăb công c đ c s d ng chính trongăđ tài.

3.3.1.Ch cănĕng

Computer Vision Toolbox là b công c cung c p các gi i thu t, hàm và các ng d ng cho vi c mô phỏng th giác máy và x lí nh. M t s ng d ng chính :

- Phát hi n và nh n d ngăđ iăt ng. - Theoădõiăđ iăt ng.

- Hi u ch nh camera.

- X lí video,ăchúăthíchăđ iăt ng trong video, xu t nh p video, hi n th video.

3.3.2.Các hàm x lí video

3.3.2.1. Hàm vision.VideoFileReader

Hàm này có ch cănĕngăđ c các hình nh và âm thanh từ các file video hoặc các file nh.

 Cú pháp:

videoFReader=vision.VideoFileReader(FILENAME) hoặc

videoFReader=vision.VideoFileReader(Filename, Name, Value)

 Đnh d ng t p tin mà hàm có th th c hi n ph thu c vào h đi u hành mà b công c đ căcƠiăđặt. Tuy nhiên v i t pătinăcóăđuôiălƠă.aviăthìăhƠmăcóăth th c thi trên t t c các h đi u hành. V i h đi u hành windows, các hàm ch th c thi các filenameăcóăđuôiălƠ:ă.jpg,ă.bmp,ă.mpeg,ă.mp2,ă.mpg,ă.mp4,ăm4v,ă.mj2,ă.wmv,ă.asf,ă .asx, .wav, .aif, .aiff, .aifc, .mp3.

3.3.2.2. Hàm vision.VideoPlayer HƠmănƠyădùngăđ m m t video hoặc hi n th hình nh.  Cú pháp videoPlayer = vision.VideoPlayer videoPlayer = vision.VideoPlayer(Name,Value)  Đ hi n th m t video frames c n th c hi n:

55

o G i l nh step. Theo cú pháp step(videoPlayer,I),ătrongăđóăIă lƠăđ iăt ng c n hi n th trong video player.

Ví d :

% Doc mot hinh anh tu file video va tao doi tuong mo file.

videoFReader =

vision.VideoFileReader('videothucte_0002.avi'); videoPlayer = vision.VideoPlayer;

% Mo file. Moi lenh goi step se doc mot khung hinh. while ~isDone(videoFReader)

frame = step(videoFReader); step(videoPlayer,frame); end

% Dong doi tuong.

release(videoFReader); release(videoPlayer);

K t qu :

56

Đ chènăđ iăt ng vào video player, Computer Vision System Toolbox hổ tr các hàm:

 insertText Chèn text.

 insertShape Chèn hình d ng.

 insertMaker Chènăđánhăd u vào trong nh hoặc video.

 insertObjectAnnotation ChènăchúăthíchăđúngămƠuăvƠoădòngă

video.

3.3.2.3. Hàm vision.ImageFilter

Th c hi n l c ma tr n đ u vào dùng b l c 2D FIR.  C u trúc:

H = vision.ImageFilter hàm này tr v đ iăt ng h th ng H.

H = vision.ImageFilter(Name,Value)

3.3.2.4. Hàm vision.Autotheresholder

ĐơyălƠăhƠmăchuy năđổi nhăc ngăđ sang nh nh phân, s d ngăph ngă pháp Otsu.ăXácăđ nhăng ỡng bằng cáchăchiaătáchăhoƠnhăđ c a nhăđ uăvƠoăđ gi m thi u sai s .

C u trúc l nh

H = vision.Autothresholder

H = vision.Autothresholder(Name,Value)

Ví d : img = im2single(rgb2gray(imread('peppers.png'))); imshow(img); hautoth = vision.Autothresholder; bin = step(hautoth,img); pause(2); figure;imshow(bin);  K t qu :

57

Hình 3.11:̉nh cường độ

Hình 3.12:̉nh nhị phân

3.3.2.5. Hàm vision.LocalMaximaFinder

Hàm tìm c căđ iăđ aăph ngătrongămaătr n. Sau khi thi t l p các thu c tính c a ma tr nă đ u vào, s d ng cú pháp IDX = step(H,I) hoặc [...] = step(H,I,THRESH)ă trongă đóă THRESHă lƠă ng ỡng,ă đ tìm v trí có giá tr c că đ i trong ma tr n.

C u trúc l nh

H = vision.LocalMaximaFinder(Name,Value)

H = vision.LocalMaximaFinder(Name,Value)

58  Ví d : >> I = [0 0 0 0 0 0 0 0 0 0 0 0; ... 0 0 0 1 1 2 3 2 1 1 0 0; ... 0 0 0 1 2 3 4 3 2 1 0 0; ... 0 0 0 1 3 5 7 5 3 1 0 0; ... 0 0 0 1 2 3 4 3 2 1 0 0; ... 0 0 0 1 1 2 3 2 1 1 0 0; ... 0 0 0 0 0 0 0 0 0 0 0 0]; hLocalMax = vision.LocalMaximaFinder; hLocalMax.MaximumNumLocalMaxima = 1; hLocalMax.NeighborhoodSize = [3 3]; hLocalMax.Threshold = 1; location = step(hLocalMax, I) location = 7 4 3.3.2.6. Hàm vision.HoughLines

HƠmăxácăđnh to đ Đ các c aăđ ng thẳng trong nh,ăđ c di n t b i cặp tham s rho và theta.ăĐ iăt ngăđ u vào là các cặp rho và theta c a nh tham chi u. Đ iăt ngăđ u ra là các v trí c a hàng và c t c aăcácăgiaoăđi m gi aăcácăđ ng thẳngăvƠăđ ng bao c a nh tham chi u.ăCácăđ ng bao là biên d c bên trái và bên ph i và biên ngang c a phía trênăvƠăphíaăd i c a nh tham chi u.

C u trúc l nh:

H = vision.HoughLines

H = vision.HoughLines(Name,Value)

59 Hình 3.13:̉nh circuit.tif I = imread('circuit.tif'); hedge = vision.EdgeDetector; hhoughtrans = vision.HoughTransform(pi/360,'ThetaRhoOutputPort', true);

hfindmax = vision.LocalMaximaFinder(1, 'HoughMatrixInput', true);

hhoughlines = vision.HoughLines('SineComputation','Trigonometric function');

BW = step(hedge, I);

[ht, theta, rho] = step(hhoughtrans, BW);

linepts = step(hhoughlines, theta(idx(1)-1), rho(idx(2)-1), I); imshow(I); hold on;

line(linepts([1 3])-1, linepts([2 4])-1,'color',[1 1 0]);

K t qu :

Hình 3.14: Đường thẳng dài nhất trong ảnh

3.3.2.7. Hàm vision.ColorSpaceConverter

60  C u trúc l nh

H = vision.ColorSpaceConverter

H = vision.ColorSpaceConverter(Name,Value)

Ví d : Chuy năđổi nhăRGBăsangăkhôngăgianămƠuăc ngăđ .

i1 = imread('pears.png'); imshow(i1); hcsc = vision.ColorSpaceConverter; hcsc.Conversion = 'RGB to intensity'; i2 = step(hcsc, i1); pause(2); imshow(i2);  K t qu : Hình 3.15:̉nh RGB

61

Hình 3.16:̉nh cường độ

3.4. Image Processing Toolbox

Image Processing Toolbox cung c p m t b đ yăđ các thu t toán, các hàm và các ng d ngăđ x lý nhănh :ăbi u di n nh, phân tích và bi n đổi nh, khôi ph c nh, c i thi n ch tăl ng hình nh, nén và mã hoá nh...

Trong ph n này, ch trình bày các hàm và các ng d ngăc ăb n thu c h p công c Image Processing Toolbox cóăliênăquanăđ n n i dung c aăđ tài.

3.4.1.Đ c nh

Đ đ c nhăHătrongămôiătr ng Matlab, dùng hàm imread v i cú pháp: H =

imread(‘tên file’). LúcănƠy,ăfăđ c bi u di năd i d ng m t ma tr n.

HƠmăimreadăđ c file từth ăm c hi năhƠnh,ăcáchăđ năgi năđ đ c m t nh từ m tăth ăm c riêng là bao g m c đ ng d n đ năth ăm căđó.

Đ bi tăđ l n c a nh H, dùng l nh size(H).NgoƠiăraăđ bi t thêm thông tin v nh H, dùng l nh whos H.

Cácăđnh d ng nhăđ c tr giúp b hàm imread là các nh có ph n m r ng .tif, .tiff, .jpg, .jpeg, .gif, .bmp, .png, .xwd.

3.4.2.Hi n th nh

Đ hi n th nh ta dùng hàm imshow v i cú pháp:

62

trongăđóăHălƠămaătr n nh, G là s m c. N u không vi t G thì mặcăđnh là 256 m c. Hoặc ta dùng cú pháp :

imshow(H,[low,high])

s hi n th nh v iămƠuăđenăcóăt t c các giá tr nhỏ h năhoặc bằng low, trong khi màu tr ng có t t c các giá tr l năh năhoặc bằng high. V i cú pháp:

imshow(H,[])

có low là m c c c ti n c a nh còn high là m c c căđ i c a nh H.

Đ hi n th các thông tin v các pixel nh, dùng hàm pixval. Hàm này hi n th m t con trỏ nằm ngay trên nh. Khi d ch con trỏ này thì giá tr c a các pixel t ngăúngăs đ c hi n th và xu t hi n d i c a sổ hình. N u là nh RGB thì s hi n ra to đ c a các thành ph n màu R, G, B. N u kích trái chu t và n gi thì pixval hi n th kho ng cách Euler gi a v tríăđ u và v trí hi n th i c a con trỏ.

3.4.3.Ghi nh

Đ ghi nhăHăvƠoătrongăđĩa,ădùngăhƠmăimwriteăv i cú pháp: imwrite(H,

‘tên file’), hàm này s l uăfileăvƠoăth ăm c hi n hành. Chẳng h n v i nh

JPEG, dùng l nh imwrite(H, ‘tên_file.jpg’, ‘quality’, q),

trongăđóăqăcóăgiáătr từ0ăđ n 100.

Đ thuă đ c thông tin chi ti tă h n, trongă Matlabă ng i ta dùng l nh:

imfinfo tên_file. Các thông tin hi n th b i l nh iminfo có th l uăvƠoătrongă c u trúc bi n bằng l nh: V=imfinfo(‘tên_file’). Lúc này, t t c các thông tinăđ c phát ra b i l n iminfo đ căl uăvƠoăbi n V. Chẳng h nănh ăđ caoăvƠăđ r ng c a nhăđ căl uătrongăc u trúc V.Height và V.Width.

Đặc bi t, v i các lo i nh khác nhau, trong Matlab ta có th dùng các hàm khácănhauăđ hi n th nh. Đ hi n th m t nhăc ngăđ , dùng hàm imagesc. V i nh nh phân ta có th dùng l nh imview.ăĐ hi n th nh RGB, ta có th dùng l nh image.

63

3.4.4.Chuy năđổi gi a các l p nh và các lo i nh

M t s phép toán cho phép chuy nă đổi m t lo i nh này sang nh khác. Image Processing Toolbox cung c pă đ yă đ các hàm chuy nă đổiă đóă [34].ă Chẳng h n: im2unit8, mat2grayầ

64

Ch ngă4ă

CH NGăTRỊNHăĐI U KHI N

4.1. Mô hình tổng quát

Hình 4.1: Mô hình tng quát

Hardware device driver TOOLBOX

Image Acquistion Toolbox Computer Vision Toolbox Image Processing Toolbox

MATLAB

M-file function Hardware driver adaptor

USB Camera RS232

65

Mô hình c th

MATLAB

Hình 4.2:Mô hình c th

4.2. Ch n và thi t l p camera

ĐơyălƠăb c r t quan trong b i nó có nhăh ng r t l năđ năđ chính xác trong quá trình x lỦăđ i v iăcácăđ tài ng d ng x lý nh.ăB cănƠyăđ c păđ n vi c thi t l p v trí ghi hình.ăĐ phân gi i c a camera, t căđ ghi hình.

Cameraă đ c s d ngă trongă đ tài này là Logitech webcam 905. Có các thông s :

 Đ phân gi i: 2MP (up to 8MP).

 Kíchăth c khung hình t iăđaălƠ:ă1600x1200 pixels, nh RGB.  Giao ti p máy tính: USB.

Khí g n thi t b vào máy tính, ki m tra các thông s c a webcam thông qua cú pháp: Xu t tín hi uăđi u khi n (Chu n RS232) Nh n d ng và gi i thích Bi u di n và mô t nh Ti n x lỦăvƠăphơnăđo n nh Thu nh n nh (Webcam )

66

>> imaqhwinfo('winvideo',2)

ans =

DefaultFormat: 'RGB24_640x480' DeviceFileSupported: 0

DeviceName: 'Logitech Webcam 905' DeviceID: 2

VideoInputConstructor: 'videoinput('winvideo', 2)'

VideoDeviceConstructor: 'imaq.VideoDevice('winvideo', 2)' SupportedFormats: {1x46 cell}

Trong các thông s trên thì thông s DefaultFormat có th thayăđổiăđ c. Kíchăth c khung hình thu th p từ thi t b này nằm trong kho ng từ 160x90 cho đ n 1600x1200.

Lu năvĕnănƠyăch n thông s mặcăđ nhălƠă„RGB24_640x480‟. T căđ ghi hình là 30fps.

4.3. Môăhìnhăđ ng và ph m vi quan sát

Trongă bƠiă toánă xácă đ nhă lƠnă đ ng, vi că xácă đ nhă môă hìnhă đ ng có nh h ng r t l nă đ nă đ chính xác c a vi c x lý. Ch nă môă hìnhă đ ng ph thu c ph n l n vào vi c s d ng ph ngăphápănh n d ng.

Trongăđ tài này ch t p trung vào tìm hi uăh ng ti p c n d a trên tín hi u hình nh và màu s c. Nên vi c ch nămôăhìnhăđ ng thẳng hayăđ ng cong không đ căđ căđ c p nhi u.ăCácăđặcătr ngăđ c chú ý đơyălƠăcácăđặcătr ngăv c nh, v màu s c c a d u phân cách, v vơnăđ ng.ăTuyănhiên,ăđ nâng cao vi c th c thi c aăch ngătrình,ăng i th c hi năđ tƠiăđƣăch nămôăhìnhăđ ngălƠăđ ng cóăđ cong nằm ng ỡng gi i h n.

Ph măviăquanăsátăđ c ch n là từ5ămétăđ nă30ămétăphíaătr c xe.

4.4. Ti n trình x lí nh

4.4.1.Xácăđ nh d uăphơnăcáchălƠnăđ ng 4.4.1.1. Thu th p hình nh t webcam

S d ng hàm imaq.VideoDevice đ thu t p hình nh từ webcam v i cú pháp :

67

>> hVideoSrc = imaq.VideoDevice('winvideo',2,'RGB24_640x480', ... 'ROI', [140 240 360 240], ...

'ReturnedColorSpace', 'rgb'); TrongăđóăvùngăquanătơmăROIă, v iăỦănghĩaănh ăHìnhă4.3.

Hình 4.3:Vùng quan tâm

Sauăđó,ădùngăl nh step(hVideoSrc)đ trích xu t từng khung hình r i t o vòng lặp x lý.

Hình 4.4:̉nh được trích xut

Codeăch ngătrình:ăPh L c A.

4.4.1.2. Bi năđổi nh và l c nh

N iădungăcóăỦănghĩaăđ xácăđnh d uăphơnăcáchălƠnăđ ng trong nh là các v ch kẻ đ ng. Nên ch quan tâm t i ph n hình nh c a v ch kẻ đ ng. Trên hình 4.4,ăvùngăcóăỦănghĩaăchínhălƠăph năd i c a khung hình. Vì v y, c n h n ch l i vùngăquanăsátănh ăhìnhă4.5

68

Hình 4.5:Hình gíi hn quan sát

Dùng hàm vision.ColorSpaceConverter chuy n nh RGB sang nh c ngăđ nh ăhìnhă4.6.

Hình 4.6: ̉nh cường độ

Dùng hàm vision.ImageFilter đ l c nh và hàm

vision.Autothresholder đ chuy n nhăxámăđƣăl c sang nh nh phơnănh ă hình 4.7.

Hình 4.7:̉nh nh phân

Codeăch ngătrình:ăPh L c A.

4.4.1.3. Th c hi n bi năđổi Hough

Dùngă ph ngă phápă bi nă đổi Houghă xácă đ nhă đ ng thẳng trong nh bằng

hàm vision.HoughTransform và vision.LocalMaximaFinder, vision.HoughLines. V i cú pháp: hHough = vision.HoughTransform( ... 'ThetaRhoOutputPort', true, ... 'OutputDataType', 'single'); hLocalMaxFind = vision.LocalMaximaFinder( ...

69 'MaximumNumLocalMaxima', ExpLaneNum, ... 'NeighborhoodSize', [301 81], ... 'Threshold', 1, ... 'HoughMatrixInput', true, ... 'IndexDataType', 'uint16');

hHoughLines1 = vision.HoughLines('SineComputation', 'Trigonometric function');

Codeăch ngătrình:ăPh L c A.

4.4.2.Xácăđ nh d u phân cách trái ậ ph i vƠăchènăđánhăd uălƠnăđ ng

D uăphơnăcáchălƠnăđ ng trái ph iăđ căxácăđ nh d aăvƠoăgiaoăđi m c a nó v iăđ ngăbaoăphíaăd i cùng c a nh. Ch ngătrìnhăs tính toán kho ng cách các từ tâm c a khung nh t i các d uăphơnăcáchălƠnăđ ng. Từ đóăxu t tín hi u c nh báo n u m tătrongăcácătr ng h p sau x y ra:

- D uăphơnăcáchălƠnăđ ng phía bên ph i khung hình giao v iăđ ng bao phía d i cùng c a khung hình. S cho tín hi u l ch ph i.

- D uăphơnăcáchălƠnăđ ng phía bên trái khung hình giao v iăđ ng bao phía d i cùng c a khung hình. S cho tín hi u l ch trái.

- Không có d u phân cách nào giao v iăđ ngăbaoăphíaăd i c a khung hình. S cho tín hi uăđúngălƠn.

Code c aăch ngătrình:ăPh L c C.

4.4.3.Xu t tín hi u

N uăđiăđúngălƠnăđ ng,ăch ngătrìnhăs g i m t tín hi u ki u Stringă„Center‟ă t i chân TXD c a cổng COM.

Khi l chătimăđ ng,ăch ngătrìnhăs g i m t tín hi u ki uăStringă„Left‟ăn u l chătrái,ă„Right‟ăn u l ch ph i t i chân TXD c a cổng COM.

Trong ph n giao di n, tín hi uăđ c th hi n bằng hình nh trong khung Lane, và hi n th d ng chuổi trong vùng Receiver (RX) n uăchơnăRXăvƠăTXăđ c n i t t.

Trong quá trình l pătrình,ăng i th c hi năđƣădùngăph n m m Proteus 8 ProfessionalăvƠăConfigureăVirtualăSerialăPortăDriverăđ mô phỏng và ki m tra tín hi u xu t ra c a cổng COM.

70

Hình 4.8:Chương trình mô phỏng Proteus

71

4.5. L p trình giao di n

Hình 4.10:Giao diện người dùng

4.5.1.Cácănútăđi u khi n 4.5.1.1. Nút Start Webcam 4.5.1.1. Nút Start Webcam

NútănƠyăchoăphépăng i dùng ghi l i hành trình và quan sát hình nh th t c a lƠnăđ ngăphíaătr c xe.

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 57)