Biến đổi Hough trong MATLAB

Một phần của tài liệu Nghiên cứu hệ thống quan sát cho xe trong việc xác định tình trạng giao thông đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 32 - 37)

3.5.3.1 Hàm hough

Cú pháp.

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

[H, theta, rho] = hough(BW,ParameterName,ParameterValue)  Mô tả.

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;

28  Kết quả:

Hình 3. 7 Ảnh gốc mạch điện

Hình 3. 8 Ảnh dùng biến đổi Hough

3.5.3.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.

29 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.

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ả:

30

Hình 3. 9 Kết quả dùng houghpeaks

3.5.3.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.

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.

31  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

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

32  Kết quả:

Hình 3. 10 Kết quả sử dụng Houghlines

Một phần của tài liệu Nghiên cứu hệ thống quan sát cho xe trong việc xác định tình trạng giao thông đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 32 - 37)