1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

MÔ PHỎNG NHẬN DẠNG BIỂN số XE matlab (có code)

20 1,3K 12

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,95 MB

Nội dung

MÔ PHỎNG NHẬN DẠNG BIỂN số XE matlab (có code) ...................... MÔ PHỎNG NHẬN DẠNG BIỂN số XE matlab (có code) .......................... MÔ PHỎNG NHẬN DẠNG BIỂN số XE matlab (có code) ........................... MÔ PHỎNG NHẬN DẠNG BIỂN số XE matlab (có code) ......................

Trang 1

XE

Trang 2

DANH MỤC CÁC HÌNH VẼ

Trang 3

RFID Radio Frequency Identification

CCD Charge Couple Device

Trang 4

CHƯƠNG 1 TỔNG QUAN VỀ ẢNH SỐ

1.1 Ảnh số

• Điểm ảnh (pixel): là một phần tử của ảnh số tại tọa độ (x,y) với độ xám hoặc màu nhất định

• Mức xám: là kết qủa của sự mã hóa tương ứng một cường độ sáng của mỗi điểm ảnh với một giá trị số của quá trình lượng hóa

• Ảnh RGB: Được dự trữ trong Matlab dưới dạng một mạng dữ liệu có kích thước 3 chiều mxnx3 định nghĩa các giá trị màu red, green và blue cho mỗi pixel riêng biệt Màu của mỗi pixel được quyết định bởi sự kết hợp giữa các giá trị R,G,B được lưu trữ trong một mặt phẳng màu tại vị trí pixel

Hình 1-1: Ảnh RGB

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 5

• Ảnh nhị phân: Trong một ảnh nhị phân, mỗi pixel chỉ có thể chứa một trong hai giá trị nhị phân 0 hoặc 1 Hai giá trị này tương ứng với bật hoặc tắt Một ảnh nhị phân được lưu trữ một mảng logic của 0 và 1

phân

1.2 Quá trình nhận ảnh qua camera CCD

• Camera CCD sử dụng kỹ thuật CCD để nhận biết hình ảnh CCD là tập hợp những ô tích điện có thể cảm nhận ánh sáng đó chuyển tín hiệu ánh sáng sang tính hiệu số để đưa vào các bộ xử lý

• CCD thu nhận những hình ảnh thông qua các hệ thống thấu kính của camera CCD có hàng ngàn những điểm ảnh sẽ chuyển đồi ánh sáng thành những hạt điện tích và được số hóa Đây là một quá trình chuyển đổi tương tự số

1.3 Giới thiệu về sử dụng Matlab trong xử lý ảnh

• Matlab là một ngôn ngữ rất mạnh và hỗ trợ rất tốt các thao tác làm việc trên ảnh Vì vậy việc sử dụng matlab cho các ứng dụng xử lý ảnh gần như là lựa chọn hàng đầu cho những ai muốn thực hiện các thuật toán xử lý trên phần mềm Một số hàm cơ bản trong matlab:

 Imread(): Đọc ảnh

 Imshow(): Hiển thị ảnh

 Imwrite(): Lưu ảnh

 Rgb2gray(): Chuyển ảnh RGB thành ảnh đen trắng

 Imhist(): Hiển thị biểu đồ của dữ liệu ảnh

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 6

 Imadjust(): Điều chỉnh giá trị cường độ ảnh.

 Im2bw(): Chuyển đổi ảnh xám sang ảnh nhị phân

1.4

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 7

CHƯƠNG 2 MIÊU TẢ ĐỀ TÀI NHẬN DẠNG BIỂN SỐ XE

1.5 Giới thiệu

Cùng với sự phát triển của khoa học và kỹ thuật Nhu cầu đi lại của con người ngày càng tăng, số lượng phương tiện giao thông ngày càng lớn Để giải quyết vấn đề đó cần xây dựng một hệ thống tự động quản lý phương tiện giao thông Một trong những hệ thống đó là hệ thống nhận dạng biển số xe Đó là hệ thống có thể đọc và hiểu các biển số xe một cách tự động, xây dựng hệ thống bằng xử lý ảnh trên phần mềm Matlab

1.6 Nguyên lý chung

Đầu tiên cho ảnh chụp từ camera vào, ảnh được chuyển thành ảnh xám và hệ thống phát hiện vùng biển số, ảnh sẽ được cắt thành hình chữ nhật Sau đó hệ thống nhị phân ảnh và so sánh với cở sở dữ liệu Nếu đúng sẽ nối biển số xe và xuất ra ký tự theo đúng ảnh biển số xe đã đưa vào

CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 1.7 Sơ đồ giải thuật

Mô Phỏng Nhận Dạng Biển Số Xe

Nối biển số xe

So sánh dữ liệu

Nhị phân ảnh

Cắt hình chữ nhật bao quanh

Chuyển thành ảnh Ảnh vào

Trang 8

1.8 Thuật toán của chương trình 1.1.1 Chọn ảnh từ camera

Hình 3-1: Chọn ảnh

• Chọn các ảnh RGB từ các ảnh chụp camera

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 9

1.1.2 Tách vùng biển số

Gồm 2 giai đoạn:

• Giai đoạn 1: Định vị trí của biển số xe trong ảnh

• Giai đoạn 2: Dùng giải thuật để cắt biển số xe ra khỏi ảnh

Hình 3-2: Tách vùng biển số

1.1.3 Nhận dạng ký tự

• Nhị phân biển số xe

Mô Phỏng Nhận Dạng Biển Số Xe

Lấy kích thước ảnh

Cân bằng cường

độ ảnh

Chuyển thảnh

ảnh xám

chữ nhật

Tạo ngưỡng và kiểm tra

Trang 10

Ảnh RGB được chuyển sang ảnh nhị phân rồi được chuẩn hóa về kích chuẩn, sau đó tiến hành cắt các ký tự và kết quả của quá trình là một ma trận chứa các ảnh đen trắng của ký tự

Hình 3-3: Nhị phân biển số

1.9

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 11

• Template Matching

Template Matching là kỹ thuật nhằm phân loại đối tượng dựa vào mức độ tương tự giữa những đối tượng xem xét mẫu cho trước Quá trình matching

sẽ được tiến hành bằng cách quét hình mẫu lần lượt từ trái sang phải, từ trên xuống dưới sao cho tâm của nó di chuyển qua tất cả các vị trí có thể có trong hình được xem xét và tính giá trị của tham số phân loại tại mỗi vị trí đó Quá trình matching được hoàn tất dựa trên cơ sở xem xét với tọa độ từng điểm ảnh một

Hình 3-4: Nhận dạng template matching

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 12

CHƯƠNG 4 KẾT QỦA MÔ PHỎNG

1.10 Thiết kế Guide cho chương trình

Hình 4-1: Thiết kế Guide

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 13

1.11 Nhận diện đúng ký tự biển số xe

Hình 4-2: Nhận diện đúng ký tự

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 14

1.12 Nhận diện sai ký tự biển số xe

HÌNH 4-3: Nhận diện sai ký tự

Giải thích: ảnh không nhận diện được do chương trình chưa cắt được chính xác vùng ảnh biển số cần nhận dạng từ ảnh chụp camera dẫn đến vùng hình chữ nhật bị méo do đó quá trình template matching nhận dạng không đúng ký tự

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 15

CHƯƠNG 5 KẾT LUẬN

1.13 Ưu và nhược điểm

Ưu điểm:

• Dễ dàng sử dụng

• Chi phí rẻ

• Tiết kiệm thời gian và nhân công

Khuyết điểm:

• An toàn chưa cao

• Không nhận diện được toàn bộ các biển số

• Vé xe bằng giấy dễ bị mất hay nhàu nát

1.14 Hướng phát triển

Sử dụng camera chuyên dụng, thẻ RFID để làm vé giữ xe, thu thập thêm nhiều mẫu

ký tự để tăng độ chính xác cho chương trình Thi công phần cứng để ứng dụng hệ thống vào thực tế

CHƯƠNG 6.

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 16

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Lê Tiến Thường, Xử lý số tín hiệu & Wavelets Tp.HCM, NXB ĐH Quốc Gia Tp.HCM, 2004

Tiếng Anh:

[2] www.mathwork.com

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 17

PHỤ LỤC CODE

function dsdasd_OpeningFcn(hObject, eventdata, handles, varargin)

load data.mat

handles.tren=cell(1,8);

handles.duoi=cell(1,8);

handles.tren{1}=handles.axes9;

handles.tren{2}=handles.axes11;

handles.tren{3}=handles.axes12;

handles.tren{4}=handles.axes13;

handles.duoi{1}=handles.axes14;

handles.duoi{2}=handles.axes15;

handles.duoi{3}=handles.axes16;

handles.duoi{4}=handles.axes17;

handles.duoi{5}=handles.axes18;

handles.output = hObject;

guidata(hObject, handles);

function varargout = dsdasd_OutputFcn(hObject, eventdata, handles)

function pushbutton1_Callback(hObject, eventdata, handles)

global rgb

[filename, pathname] = uigetfile({'*.jpg';'*.bmp';'*.gif';'*.*'}, 'Pick an Image File');

%chon kieu anh

rgb= imread([pathname,filename]); %doc anh

axes(handles.axes1); %show tren axes1

imshow(rgb); %hien thi anh

function select_Callback(hObject, eventdata, handles)

global rgb

global y

gray=rgb2gray(rgb); % chuyen anh mau thanh anh xam

gray=imadjust(gray);% can bang cuong do sang

[row,col]=size(gray);% Lay kich thuoc anh

cp=[round(row/2),round(col/2)];% toa do diem tam

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 18

de=round(0.01*row);% khoang cong tru

cm1=cp(1)-de:cp(1)+de;% khoang thoa man theo hang

cm2=cp(2)-de:cp(2)+de;% khoang thoa man theo cot

doituongnho=round(0.02*row*col);% so diem anh doi tuong nho

biensonho=[round(0.08*row),round(0.08*19*row/14)];% bien so duoc cho la nho thresh=0; % khoi tao nguong

check=0; % khoi tao kiem tra

while check==0

thresh=thresh+0.01;

if thresh==1

msgbox('Khong phat hien duoc bien so');

break;

else

bw=im2bw(gray,thresh);

bw=bwareaopen(bw,doituongnho);

bw=imfill(bw,'holes');

bw=imclearborder(bw,4);

bw=imopen(bw,strel('rectangle',biensonho));

[L,n]=bwlabel(bw);

end

if n>0

for i=1:n

[row1,col1]=find(bw==i);

a=sum(ismember(cm1,row1));

b=sum(ismember(cm2,col1));

stat=regionprops((L==i),'BoundingBox');%xac dinh hinh chu nhat bao quanh

try

mat=stat.BoundingBox;

if a>0&&b>0&&mat(4)<mat(3)

check=1;

break;

else

check=0;

end

catch e

msgbox(e.message);

end

end

end

end

if thresh<1

rgbcrop=imcrop(rgb,mat);

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 19

y=rgbcrop;

else

y=rgb;

end

axes(handles.axes2);

imshow(y);

function y = my_num_recog( bw,numbers)

n1=length(numbers);

s1=zeros(1,n1); %tao ma tran cac phan tu deu la 0

for i=1:n1

tem1=abs(numbers{i,1}-bw);

tem2=sum(sum(tem1));

s1(i)=tem2;

end

x=s1==min(s1);

y=numbers{x,2}(1);

function y = my_char_recog( bw,chars)

n1=length(chars);

s1=zeros(1,n1);

for i=1:n1

tem1=abs(chars{i,1}-bw);

tem2=sum(sum(tem1));

s1(i)=tem2;

end

x=s1==min(s1);

y=chars{x,2}(1);

function nhandang_Callback(hObject, eventdata, handles)

load data.mat

global y

global rgb

[im1, im2]=tach1(y);

n1=length(im1);%Tinh chieu dai cua vecto

if n1>0

S1='';

for i=1:n1

set(gcf,'CurrentAxes',handles.tren{i});

im1{i}=imresize(im1{i},[90,40]);%phong dai anh

Mô Phỏng Nhận Dạng Biển Số Xe

Trang 20

switch i

case 1

x=my_num_recog(im1{i},numbers);

S1=cat(2,S1,x);%ket noi cac anh

case 2

x=my_num_recog(im1{i},numbers);

S1=cat(2,S1,x);

case 3

x=my_num_recog(im1{i},chars);

S1=cat(2,S1,x);

case 4

x=my_num_recog(im1{i},numbers);

S1=cat(2,S1,x);

end

imshow(im1{i});

end

end

n2=length(im2);

if n2>0

S2='';

for i=1:n2

set(gcf,'CurrentAxes',handles.duoi{i});

im2{i}=imresize(im2{i},[90,40]);

x=my_num_recog(im2{i},numbers);

S2=cat(2,S2,x);

imshow(im2{i});

end

end

set(handles.text1,'string',sprintf('%s-%s',S1,S2));

Mô Phỏng Nhận Dạng Biển Số Xe

Ngày đăng: 21/01/2018, 16:48

TỪ KHÓA LIÊN QUAN

w