ỨNG DỤNG xử lý ẢNH để ĐỊNH HƯỚNG DI CHUYỂN ĐÚNG LINE (có code bên dưới) ỨNG DỤNG xử lý ẢNH để ĐỊNH HƯỚNG DI CHUYỂN ĐÚNG LINE (có code bên dưới) ỨNG DỤNG xử lý ẢNH để ĐỊNH HƯỚNG DI CHUYỂN ĐÚNG LINE (có code bên dưới)
Trang 1ĐỒ ÁN 3
ỨNG DỤNG XỬ LÝ ẢNH ĐỂ ĐỊNH HƯỚNG DI CHUYỂN ĐÚNG LINE
Trang 2DANH MỤC HÌNH ẢNH VII DANH MỤC TỪ VIẾT TẮT VIII
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1
1.1 GIỚI THIỆU 1
1.2 MỤC TIÊU ĐỀ TÀI 1
1.3 HƯỚNG TÌM HIỂU 1
CHƯƠNG 2 NỘI DUNG ĐỀ TÀI 2
2.1 ẢNH KỸ THUẬT SỐ 2
2.1.1 Khái niệm 2
2.1.2 Tính chất 2
2.2 PIXEL (PICTURE ELEMENT – ĐIỂM ẢNH) 2
2.3 PHÂN LOẠI ẢNH SỐ 2
2.4 MỨC XÁM CỦA ẢNH (GRAY) 3
2.5 CHUYỂN GIÁ TRỊ ẢNH MÀU SANG MỨC GRAY 3
2.6 LỌC ẢNH SỐ 3
2.7 ĐIỂM ẢNH LÂN CẬN 3
2.8 LỌC BIÊN ẢNH BẰNG PHƯƠNG PHÁP ROBERTS 4
2.9 THUẬT TOÁN NHẬN DẠNG TRONG XỬ LÝ ẢNH 5
CHƯƠNG 3 SƠ ĐỒ KHỐI VÀ MÔ PHỎNG MATLAB 7
3.1 SƠ ĐỒ KHỐI: 7
3.2 LƯU ĐỒ GIẢI THUẬT 8
3.3 HÌNH ẢNH CẦN XỬ LÝ VÀ NGUYÊN LÝ HỆ THỐNG 9
3.4 KẾT QUẢ MÔ PHỎNG 10
CHƯƠNG 4 KẾT LUẬN VÀ NHẬN XÉT 12
4.1 KẾT LUẬN 12
4.2 NHẬN XÉT 12
4.3 HƯỚNG PHÁT TRIỂN ĐỀ TÀI 12
Trang 3TÀI LIỆU THAM KHẢO 13 PHỤ LỤC 14
Trang 4HÌNH 2-1: CÔNG THỨC VÀ MẶT NẠ LỌC ROBERTS, PREWITT VÀ
SOBEL [1] 4
HÌNH 2-2: XÁC ĐỊNH ĐƯỜNG THẲNG BẰNG ĐỒ THỊ XY [2] 5
HÌNH 2-3: XÁC ĐỊNH ĐƯỜNG THẲNG QUA ĐỒ THỊ ΡΘ [2] 6
HÌNH 3-1: SƠ ĐỒ KHỐI HỆ THỐNG 7
HÌNH 3-2: LƯU ĐỒ GIẢI THUẬT 8
HÌNH 3-3: ẢNH CẦN XỬ LÝ VÀ ĐỊNH HƯỚNG 9
HÌNH 3-4: ẢNH ĐÃ CHUYỂN MỨC GRAY VÀ LỌC BIÊN 10
HÌNH 3-5: ẢNH ĐÃ XỬ LÝ 10
HÌNH 3-6: KẾT QUẢ VÀ ĐỀ XUẤT KHẮC PHỤC 11
Trang 5DANH MỤC TỪ VIẾT TẮT
DIM Digital Image Processing
GIF Graphic Interchange Format
JPEG Joint Photo - Graphic Experts Group
Pixel Picture Element
PNG Portable Network Graphic
RGB Red Green Blue
Trang 6CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Giới thiệu
- Trong bối cảnh công nghệ ngày càng phát triển mạnh mẽ như hiệnnay, việc ứng dụng các thuật toán xử lý ảnh ngày càng phổ biếntrong cuộc sống
- Tùy vào mục đích nghiên cứu và sử dụng, chúng ta có những thuậttoán xử lý hình ảnh khác nhau, từ hình ảnh trắng đen cho đến ảnhmàu Ví dụ như nhận diện biển số xe, nhận diện gương mặt…
- Trong đó, thuật toán Roberts và Hough có thể giúp chúng ta xácđịnh những đường biên, đường thẳng Nhờ vậy, ta có thể ứng dụng
để định hướng cho các vật thể hay xe di chuyển chính xác hơn, ko
bị lệch khi đi trên đường
1.2 Mục tiêu đề tài
- Mục tiêu của đề tài là viết một chương trình code bằng ngôn ngữMatlab để xử lý một bức ảnh Qua đó, thu thập thông tin và xử lýcác thông số Cuối cùng, nhờ vào các thuật toán để xác định hướng
đi của vật thể lệch trái hay phải, hay vẫn đang đi đúng hướng
1.3Hướng tìm hiểu
- Tìm hiểu ảnh kỹ thuật số
- Chuyển giá trị ảnh màu sang mức Gray
- Tìm hiểu phương pháp tìm biên ảnh Roberts
- Tìm hiểu thuật toán xác định đường thẳng Hough
- Nghiên cứu giải thuật, xử lý thông số và đưa ra kết quả trongMatlab
Trang 7ĐỒ ÁN 3 Trang 2/17
CHƯƠNG 2 NỘI DUNG ĐỀ TÀI
2.1Ảnh kỹ thuật số
2.1.1 Khái niệm
- Trong Matlab, ảnh kỹ thuật số thường được biểu diễn bằng 1 ma trận 2 chiều, trong đó mỗi phần tử của ma trận tương ứng với 1 pixel của ảnh
2.1.2 Tính chất
- Ảnh kỹ thuật số được đặc trưng bởi cường độ màu và cường độảnh, trong đó:
Cường độ màu: biểu thị cho cường độ màu của 1 điểm ảnh trong
không gian, biểu diễn thông qua bảng màu hoặc mã Gray
Cường độ ảnh: là không gian ảnh số cảm biến quang học đọc
được, thường là giá trị hai chiều, ba chiều hoặc có thể là nhiềuhơn Những không gian này dùng để biểu diễn cho 1 điểm ảnhtrong 1 ảnh được biểu diễn bao nhiêu chiều không gian
2.2Pixel (Picture Element – điểm ảnh)
- Là 1 phần tử ảnh số tại tọa độ (x, y)
2.3Phân loại ảnh số
- Có bốn kiểu ảnh trong Matlab:
Ảnh chỉ số (Indexed images): biểu diễn bởi 2 ma trận, 1 matrận dữ liệu ảnh x và 1 ma trận màu map
Ảnh độ sáng (Intensity images): biểu diễn bởi 1 ma trận 2chiều, giá trị mỗi phần tử cho biết độ sáng (hay mức xám) củađiểm ảnh đó
Ảnh nhị phân (Binary images): cũng được biểu diễn bởi 1 matrận 2 chiều nhưng thuộc kiểu logic
Ứng Dụng Xử Lý Ảnh Để Định Hướng Di Chuyển Đúng Line
Trang 8 Ảnh RGB (RGB images): biểu diễn bởi ma trận ba chiều m x
n x 3; với m x n là kích thước ảnh theo pixels
2.4Mức xám của ảnh (Gray)
- Là kết quả của sự biến đổi 1 giá trị độ sáng của 1 điểm ảnh thành 1 giátrị nguyên dương, thông thường là trong khoảng [0, 255] tương ứng 8bit, tùy giá trị điểm ảnh Với 0 là giá trị màu đen, 255 là giá trị màutrắng
- Thang giá trị mức xám thông thường: 16, 32, 64, 128, 256
2.5Chuyển giá trị ảnh màu sang mức Gray
- Công thức chuyển giá trị ảnh màu sang mức Gray:
Igray- scale(m, n) = α.Icolour(n, m, r) + β.Icolour(n, m, g) + γ Icolour(n, m, b)
2.8Lọc biên ảnh bằng phương pháp Roberts
- Trong xử lý ảnh Matlab, có 3 phương pháp chính để lọc biên ảnh:
Phương pháp Roberts
Trang 9ĐỒ ÁN 3 Trang 4/17
Phương pháp Prewitt
Phương pháp Sobel
- Trong đề tài này phương pháp lọc biên Roberts được sử dụng để xử lýảnh, do ưu điểm của phương pháp này là cách tính toán đơn giản,nhanh chóng
- Roberts dựa trên mặt nạ lọc là ma trận 2x2 để lọc đường biên của ảnh
số trong không gian hai chiều
Hình 2-1: Công thức và Mặt nạ lọc Roberts, Prewitt và Sobel [1]
- Tuy nhiên, khuyết điểm của phương pháp Roberts là khả năng lọcnhiễu chưa tốt so với Prewitt và Sobel
2.9Thuật toán nhận dạng trong xử lý ảnh
- Trong phần mềm Matlab, đặc biệt là trong xử lý ảnh số, để nhận dạngmục tiêu có nhiều cách khác nhau Tuy nhiên, trong đề tài này, mụctiêu cần nhận dạng là đường Line trên đường
Ứng Dụng Xử Lý Ảnh Để Định Hướng Di Chuyển Đúng Line
Trang 10- Đường Line trên đường là những đường thẳng, do đó thuật toán nhậndạng đường thẳng Hough được sử dụng.
- Thuật toán Hough là kỹ thuật có thể dùng để tách các đặc điểm của 1hình dáng cụ thể trong 1 ảnh nhị phân
- Thuật toán Hough cho đường thẳng sử dụng khoảng cách và góc lệchcủa tiếp tuyến tới đường thẳng để xác định thông số Sau đó xử lý cácthông số này để xác định đường thẳng
- Công thức xác định thông số trong thuật toán Hough có 2 cách:
b = - a xi + yi ;
Với (xi,, yi) là tọa độ các điểm ảnh cần nhận dạng
- Tuy nhiên, cách này có khuyết điểm là tọa độ x và y khi có giá trị quálớn sẽ khó tính toán, xác định trên trục tọa độ
Hình 2-2: Xác định đường thẳng bằng đồ thị xy [2]
ρ = x cos θ + y sin θ
Với: θ = [0, 360] hay [0, 2π],
ρ = [-D, D]
Trang 11ĐỒ ÁN 3 Trang 6/17
Hình 2-3: Xác định đường thẳng qua đồ thị ρθ [2]
- Đồ thị ρθ khắc phục được khuyết điểm của đồ thị xy
- Các điểm nếu nằm trên cùng đường thẳng thì các đường cong của cácđiểm đó sẽ cắt nhau tại 1 điểm
Ứng Dụng Xử Lý Ảnh Để Định Hướng Di Chuyển Đúng Line
Trang 12CHƯƠNG 3 SƠ ĐỒ KHỐI VÀ MÔ PHỎNG MATLAB3.1Sơ đồ khối:
Hình 3-4: Sơ đồ khối hệ thống
Trang 13ĐỒ ÁN 3 Trang 8/17
3.2Lưu đồ giải thuật
Hình 3-5: Lưu đồ giải thuật
Ứng Dụng Xử Lý Ảnh Để Định Hướng Di Chuyển Đúng Line
Trang 143.3Hình ảnh cần xử lý và nguyên lý hệ thống
- Nhập hình ảnh cần xử lý
- Matlab lấy thông tin của ảnh, chuyển giá trị màu sang mức Gray Sau
đó, đặt điều kiện để giảm nhiễu và áp dụng phương pháp tìm biênRoberts
- Tiếp theo, sử dụng thuật toán Hough cho đường thẳng Vẽ các trục cốđịnh ngang và dọc để định hướng di chuyển, xác định vùng xử lý
- Tính toán giá trị trung bình của từng vùng xử lý
- Cuối cùng, xác định giá trị trung bình toàn vùng xử lý
- Kết luận và đề xuất hướng khắc phục nếu có
Hình 3-6: Ảnh cần xử lý và định hướng
Trang 15ĐỒ ÁN 3 Trang 10/17
Trang 16Hình 3-9: Kết quả và đề xuất khắc phục
- Chương trình đã xử lý được yêu cầu đề ra
- Đề xuất ra được phương án khắc phục nếu hướng đi bị lệch
Trang 17ĐỒ ÁN 3 Trang 12/17
- Tính được các giá trị trung bình
- Xuất được kết quả và cách khắc phục nếu có sai lệch hướng đi
4.2Nhận xét
- Sau quá trình mô phỏng, code chương trình vẫn chưa tối ưu nhất
- Trong thực tế, quá trình xử lý có thể lâu hơn tính toán lý thuyết
- Hình ảnh vẫn còn đơn giản và chưa có nhiều chướng ngại vật
- Khả năng lọc nhiễu vẫn còn chưa tốt
4.3Hướng phát triển đề tài
- Chương trình có thể sử dụng các phương pháp lọc nhiễu và xácđịnh biên phức tạp hơn, qua đó đạt được kết quả chính xác hơn
- Nhờ vậy, có thể áp dụng để truyền tải hình ảnh từ xe đang dichuyển về để xử lý và định hướng di chuyển hiệu quả hơn, ứngdụng tốt hơn vào đời sống thực tế
Ứng Dụng Xử Lý Ảnh Để Định Hướng Di Chuyển Đúng Line
Trang 18TÀI LIỆU THAM KHẢO
Tiếng Anh:
[1] Fundamentals of Digital Image Processing: A Practical Approach withExamples in Matlab, by Chris Solomon and Toby Breckon, page 85 – 109.[2] Digital Image Processing Using Matlab, by Gonzalez, page 334 – 401.[3] Olivier Lézoray, ”Theory and Pratice” Image Processing and Analysiswith Graphs, page 1-21
Trang 19ĐỒ ÁN 3 Trang 14/17
PHỤ LỤC
clear all ;
clc;
-
% -tic;
f = imread( '1.png' ); % Doc anh
info = imfinfo( '1.png' ); % lay thong tin anh, xac dinh toa
do XY
img = rgb2gray(f); % chuyen gia tri mau sang muc gray
edge_Roberts = edge(img, 'Roberts' );
% ap dung Roberts xac dinh bien anh
BW_out = bwareaopen(imfill(edge_Roberts, 'holes' ),3);
% khong hien thi diem anh khong du 4 pixel
figure, imshow(BW_out); veraxis = [(info.Width)/2,info.Height];
% tim gia tri cua truc giua
[H,T,R] = hough(BW_out);
% dung dinh luat Hough tim a va b
P = houghpeaks(H,10, 'threshold' ,ceil(0.1*max(H(:))));
% xac dinh diem dau duong line
% -% Dung dinh luat Hough tim cac diem
lines = houghlines(BW_out,T,R,P, 'FillGap' ,20, 'MinLength' ,30);
% ve lines trong anh
[0,veraxis(1,2)], 'LineWidth' ,2, 'Color' , 'red' );
% ve truc thang dung
xystruct(k).vector = [0 sixhorizone(k,1); info.Width
sixhorizone(k,1)]; % toa do 'x' 6 truc
% -% Ve Line cua Hough
for k = 1: length(lines) % Dao toa do xy de line theo 1 huong
Trang 20plot(xy(1,1),xy(1,2), 'x' , 'LineWidth' ,2, 'Color' , 'yellow' );
% ve diem dau duong line
len = norm(lines(k).point1 - lines(k).point2);
elseif ((xy(1,2) > sixhorizone(2,:)) && (xy(1,2) <=
sixhorizone(3,:))) && ((xy(1,1) > 0) && (xy(1,1) <= info.Width)) khung2(stt_frame2,:) = xy;
stt_frame2 = stt_frame2 + 1;
elseif ((xy(1,2) > sixhorizone(3,:)) && (xy(1,2) <=
sixhorizone(4,:))) &&((xy(1,1) > 0) && (xy(1,1) <= info.Width)) khung3(stt_frame3,:) = xy;
stt_frame3 = stt_frame3 + 1;
elseif ((xy(1,2) > sixhorizone(4,:)) && (xy(1,2) <=
sixhorizone(5,:))) && ((xy(1,1) > 0) && (xy(1,1) <= info.Width)) khung4(stt_frame4,:) = xy;
stt_frame4 = stt_frame4 + 1;
Trang 21ĐỒ ÁN 3 Trang 16/17
elseif ((xy(1,2) > sixhorizone(5,:)) && (xy(1,2) <=
sixhorizone(6,:))) && ((xy(1,1) > 0) && (xy(1,1) <= info.Width)) khung5(stt_frame5,:) = xy;
Trang 22disp( 'Dang lech ben phai' );
disp( 'Be lai sang trai mot goc:' );
disp(goclech1);
elseif x > 0 && x <info.Width/2
khoangcach2 = trucgiua - x;
goclech2 = round(atand(khoangcach2/(info.Height-x))); disp( 'Dang lech ben trai' );
disp( 'Be lai sang phai mot goc:' );
disp(goclech2);
else disp( 'Dang di dung huong' );
end
toc