Bi năđổi Hough trong MATLAB

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

3.1.5.1. Hàm hough

Cú pháp.

[H, theta, rho] = hough(BW)

[H, theta, rho] = hough(BW,ParameterName,ParameterValue)

46

S d ng hàm houghđ xácăđ nhăđ ng trong nh. Hàm tr v ma tr n H, chính là ma tr n Bi năđổi Hough. Theta và Rho là các m ng giá tr c a rho và theta mƠăquaăđóăhƠmăhoughăt o nên ma tr n H.

Khi PrameterName lƠă„RhoResolution‟,ăc n ch đ nh m t giá tr th c vôăh ng nằm trong kho ng từ0 đ n norm(size(BW)). Khi PrameterName là ‘Theta’, thì giá trị chỉ định của nó là một vector các giá trị của theta

trong ma trận biến đổi Hough.  Ví d : I = imread('circuit.tif'); rotI = imrotate(I,33,'crop'); BW = edge(rotI,'canny'); [H,theta,rho] = hough(BW); figure, imshow(imadjust(mat2gray(H)),[],'XData',theta,'YData',rho,... 'InitialMagnification','fit');

xlabel('\theta (degrees)'), ylabel('\rho'); axis on, axis normal, hold on;

colormap(hot)  K t qu :

47

Hình 3.7:Dùng biến đổi Hough

3.1.5.2. Hàm houghpeaks

Cú pháp

peaks = houghpeaks(H, numpeaks)

peaks = houghpeaks(..., param1, val1, param2, val2)

Mô t

HƠmăxácăđ nhăđnh trong ma tr n H, numpeaks là m t giá tr vôăh ngăđ xácăđnh s l ng t iăđaăcácăđ nh, giá tr mặcăđ nh c a numpeaks là 1.

Hàm tr v giá tr peaks, là m t ma tr năQx2,ătrongăđóănằm trong kho ng giá tr từ0ăđ n numpeaks.

peaks = houghpeaks(..., param1, val1, param2, val2)

quyăđnh c th cặp tham s - giá tr . Các tham s đóălƠ:

Tham s Mô t

’Threshold’ Giá tr vôăh ngăkhôngăơmăxácăđ nh giá tr mà t iăđóăgiáătr

c aăHăđ căxemănh ălƠăđnh. Mặcăđnh là 0.5*max(H(:))

’NHoodSize’ Vécăt ăg m hai ph n t là s nguyênăd ngăl : [M N]. Xác

đnh khu v c lân c n xung quanh m iăđnh. Mặcăđ nh là giá tr l nhỏ nh t l năh năhoặc bằng size(H)/50.

48  Ví d : >> I = imread('circuit.tif'); BW = edge(imrotate(I,50,'crop'),'canny'); [H,T,R] = hough(BW); P = houghpeaks(H,2); imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit') ; xlabel('\theta'), ylabel('\rho'); axis on, axis normal, hold on;

plot(T(P(:,2)),R(P(:,1)),'s','color','white')  K t qu :

Hình 3.8: Kết qu dùng houghpeaks

3.1.5.3. Hàm houghlines

Cú pháp

lines = houghlines(BW, theta, rho, peaks)

lines = houghlines(..., param1, val1, param2, val2)

Mô t

Hàm lines = houghlines(BW, theta, rho, peaks) trích xu tă đo năthẳngătrongă nhănh ăphơnăBWăd aăvƠoăbi năđổiăHough.

49

Hàm lines = houghlines(..., param1, val1, param2,

val2)cóăxácăđnh các cặp giá tr - tham s c th :

Tham s Mô t

’FillGap’ Giá tr th că d ngă xácă đ nh kho ng cách gi aă haiă đo n

thẳng liên quanăđ n bi năđổi Hough. Khi kho ng cách gi a haiă đo n thẳng nhỏ h nă giáă tr quyă đ nh, thì hàm houghlines s k t h p chúng thành m tă đo n thẳng duy nh t. Giá tr mặcăđ nh là 20.

’MinLength’ Giá tr th căd ng,ăxácăđ nhăxemăđo n thẳngăxácăđ nhăđ c

nên gi hay bỏ đi.ă Đo n thẳng ng n nhỏ h nă giáă tr quy đ nhăđ c bỏđi.ăGiáătr mặcăđnh là 40.

Ví d : I = imread('circuit.tif'); rotI = imrotate(I,33,'crop'); BW = edge(rotI,'canny'); [H,T,R] = hough(BW); imshow(H,[],'XData',T,'YData',R,... 'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho');

axis on, axis normal, hold on;

P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); x = T(P(:,2)); y = R(P(:,1));

plot(x,y,'s','color','white'); % Find lines and plot them

lines = houghlines(BW,T,R,P,'FillGap',5,'MinLength',7); figure, imshow(rotI), hold on

max_len = 0;

for k = 1:length(lines)

xy = [lines(k).point1; lines(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); % Plot beginnings and ends of lines

50

plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');

plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');

% Determine the endpoints of the longest line segment len = norm(lines(k).point1 - lines(k).point2);

if ( len > max_len) max_len = len; xy_long = xy; end

end

% highlight the longest line segment

plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','blue');  K t qu :

Hình 3.9:Kết quả sử dụng hàm houghlines

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