• Loại bỏ các đối tượng có kích thước nhỏ
• Tách những đối tượng có dạng hình tròn
• Tìm biên của các đối tượng
• Kiểm tra biên có dạng hình tròn -> tách ra và lưu vào ma trận có cùng kích thước
Vị trí là biên -> gán 1 cho ma trận mới
Ngược lại -> gán 0
Áp ma trận vừa tìm dc lên ma trận ban đầu
Những pixel nằm trong mặt nạ này -> giữ nguyên
Nằm ngoài -> gán = 255
4 trang |
Chia sẻ: tuandn | Lượt xem: 1996 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Đề tài Nhận dạng đường cấm ô tô, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA TOÁN TIN
PHÂN TÍCH XỬ LÝ ẢNH
BÁO CÁO BÀI TẬP THỰC HÀNH
NHẬN DẠNG ĐƯỜNG CẤM Ô TÔ
Giáo viên hướng dẫn : Th.S Phạm Thế Bảo
Nhóm thực hiện : Nguyễn Việt Hùng 0511123
Nguyễn Đức Thành 0511214
Cao Quốc Toản 0511233
Yêu cầu bài toán
Xác định đường cấm ô tô thông qua việc nhận dạng biển báo cấm ô tô ?
Tìm các đối tượng màu đỏ
Lấy thông tin 3 lớp màu
Chuyển về ảnh nhị phân
function kq = tach_doi_tuong_do(a)
b1=a(:,:,1);
b2=a(:,:,2);
b3=a(:,:,3);
s=size(a);
for i=1:s(1)
for j=1:s(2)
Y(i,j)=0.2989*b1(i,j)+0.5866*b2(i,j)+0.1145*b3(i,j);
Cr(i,j)=(b1(i,j)-Y(i,j))/(2-2*0.2989);
end
end
for i=1:s(1)
for j=1:s(2)
if Cr(i,j)>=25 & Cr(i,j)<=127
c1(i,j)=1;
else
c1(i,j)=0;
end
end
end
kq = c1;
Lấp ‘lổ’ trong các đối tượng
function kq = search_adjust_red_object(a)
b = tach_doi_tuong_do(a);
b = imfill(b,'holes');
se =strel('square',35);
b = imopen(b,se);
kq = b;
Loại bỏ các đối tượng có kích thước nhỏ
Tách những đối tượng có dạng hình tròn
Tìm biên của các đối tượng
Kiểm tra biên có dạng hình tròn -> tách ra và lưu vào ma trận có cùng kích thước
Vị trí là biên -> gán 1 cho ma trận mới
Ngược lại -> gán 0
Áp ma trận vừa tìm dc lên ma trận ban đầu
Những pixel nằm trong mặt nạ này -> giữ nguyên
Nằm ngoài -> gán = 255
function kq = cut_circle(a,anh_mau)
% nhap : bien doi tuong va anh ban dau
% xuat : la hinh tron duoc giu nguyen phan ben ngoai mau trang
minx = min(a(:,1));
maxx = max(a(:,1));
miny = min(a(:,2));
maxy = max(a(:,2));
x0 = (minx+maxx)/2;
y0 = (miny+maxy)/2;
r = max(maxx-minx,maxy-miny)/2;
%tang them ban kinh cua vong tron vi bi giam nho dung strel
r = r+r/20;
for i = 1:size(anh_mau,1)
for j = 1:size(anh_mau,2)
if sqrt((i-x0)^2+(j-y0)^2)>r
anh_mau(i,j,:)=255;
end
end
end
%cat hinh tron tu anh ban dau
l = r;
tam = imcrop(anh_mau,[y0-l x0-l 2*l 2*l]);
kq = tam;
Kiểm tra có phải là biển báo cấm ôtô
Tính tỉ lệ pixel màu trắng so với tổng số pixel trong khoảng bán kính 3R/4
So sánh với ngưỡng khảo sát -> rút ra kết luận
function kq=la_bien_bao_oto(bien,a)
kq = 1;
b=cut_circle(bien,a);
if ~has_while_background(b)
kq = 0;
return;
end
Kết quả
Các file đính kèm theo tài liệu này:
- XLA.doc
- code nhan dang bien bao cam oto.rar