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

XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code)

32 818 3

Đ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 32
Dung lượng 1,17 MB

Nội dung

XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code) XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code) XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code) XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code) XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code) XỬ lý ẢNH ỨNG DỤNG NHẬN DẠNG BIỂN số XE (có code)

Trang 1

BIỂN SỐ XE

Trang 2

DANH MỤC CÁC BẢNG BIỂU IV DANH MỤC CÁC TỪ VIẾT TẮT V

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1

1.1 GIỚI THIỆU 1

1.1.1 Yêu cầu của đề tài 1

1.1.2 Hướng giải quyết 1

1.2 NGUYÊN LÝ CHUNG 1

CHƯƠNG 2 NỘI DUNG CỦA ĐỀ TÀI 2

2.1 SƠ ĐỒ HOẠT ĐỘNG 2

2.2 SƠ LƯỢC VỀ ẢNH SỐ 3

2.3 XOAY BIỂN SỐ 5

2.3.1 Lý thuyết biển đổi Hough: 5

2.3.2 Xác định góc lệch 6

2.4 TÁCH VÙNG BIỂN SỐ 7

2.5 TÁCH TỪNG KÍ TỰ 8

2.6 SO SÁNH VỚI DATABASE 10

2.7 THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 11

CHƯƠNG 3 GIẢI THUẬT 13

3.1 LƯU ĐỒ GIẢI THUẬT PHẦN XOAY BIỂN SỐ 13

3.2 LƯU ĐỒ GIẢI THUẬT TÁCH VÙNG BIỂN SỐ 14

3.3 LƯU ĐỒ GIẢI THUẬT TÁCH TỪNG KÍ TỰ 15

3.4 LƯU ĐỒ GIẢI THUẬT CHƯƠNG TRÌNH CHÍNH 16

3.4.1 Chương trình dùng ảnh có sẵn 16

3.4.2 Chương trình dùng ảnh chụp từ camera 17

Trang 3

5.1 KẾT LUẬN 19 5.2 HƯỚNG PHÁT TRIỂN 19

TÀI LIỆU THAM KHẢO 20 PHỤ LỤC A 21

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

Trang 4

HÌNH 2-4: ẢNH XÁM 4

HÌNH 2-5: ẢNH NHỊ PHÂN 5

HÌNH 2-6: MIÊU TẢ BIẾN ĐỔI HOUGH 6

HÌNH 2-7: SƠ ĐỒ THỰC HIỆN XOAY BIỂN SỐ 6

HÌNH 2-8: GÓC LỆCH 6

HÌNH 2-9: ẢNH ĐƯỢC XOAY KHI LÊCH 7

HÌNH 2-10: SƠ ĐỒ KHỐI TÁCH VÙNG BIỂN SỐ 7

HÌNH 2-11: ẢNHR TRƯỚC VÀ SAU KHI CẮT BIỂN SỐ 8

HÌNH 2-12: KÍ TỰ ĐƯỢC CẮT RA 9

HÌNH 2-13: TẠO DỮ LIỆU CHO DATABASE 11

HÌNH 2-14: GIAO DIỆN CHƯƠNG TRÌNH 12

HÌNH 3-1: GIẢI THUẬT XOAY BIỂN SỐ 13

HÌNH 3-2: GIẢI THUẬT TÁCH BIỂN SỐ 14

HÌNH 3-3: GIẢI THUẬT TÁCH KÍ TỰ 15

HÌNH 3-4: DÙNG ẢNH CÓ SẴN 16

HÌNH 3-5: ẢNH CHỤP TỪ CAMERA 17

DANH MỤC CÁC BẢNG BIỂU

Trang 6

GUI Graphical User Interface

RGB Red Green Blue

MATLAB Matrix Laboratory

Trang 7

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI

1.1 Giới thiệu

- Ngày nay, với sự tiến bộ của công nghệ khoa học, tự động hóa, mọi công

việc trở nên dễ dàng hơn không cần dùng nhiều nhân công cho những việcmáy móc có thể làm Do đó, việc ứng dụng xử lý ảnh để nhận dạng biển số

xe với sự hỗ trợ của nhiều phần mềm khác để tạo ra một ứng dụng trong bãiđậu xe khi không cần phải có nhân viên đứng quẹt thẻ xe cho khách

1.1.1 Yêu cầu của đề tài

- Sự dụng xử lý ảnh để khoanh vùng chứa biển số, xoay biển số xe khi bịnghiêng trước khi đem đi xử lý, tách từng kí tự và đem những kí tự đó sosanh với database để cho ra kết quả kí tự của biển số xe đó

1.1.2 Hướng giải quyết

- Viết sơ đồ giải thuật, viết code, tạo giao diện người dùng (GUI) qua phầnmềm MATLAB

1.2 Nguyên lý chung

- Biển số xe có đặc chưng là có một khung hình chữ nhật bao quanh, bên trong

là nền màu trắng và các kí tự đều có cùng kích thước, cùng màu đen, theomột chuẩn nhất định Việc xác định vùng chứa biển số trở nên dễ dàng hơnbằng việc tìm vùng hình chữ nhật

- Xác định góc lệch và xoay cho hình ngay lại sau khi đã xác định được vùngchứa biển số xe

- Nền biển số màu trắng và các kí tự nằm trong đó màu đen, vùng ranh giớigiữa trắng và đen sẽ là biên để cắt các kí tự ra khỏi biển số

- Đem các hình ảnh kí tự đó so với database để cho ra giá trị của kí tự đó

CHƯƠNG 2 NỘI DUNG CỦA ĐỀ TÀI

1.3 Sơ đồ hoạt động

Trang 8

- Từ những vấn đề đã đặt ra, sơ đồ hoạt động của việc nhận dạng biển số xe như sau:

webcam

Tách vùngbiển sốXoay biển số

Tách từng kítự

So sánh vớidatabaseHiển thị kếtquả qua GUI

Trang 9

 Khi có được hình ảnh chỉ có biển số, xác định góc của nó và xoay lại cho ngay để việc xử lý dễ dàng hơn.

- Tách từng kí tự:

 Xác định vùng chứa từng kí tự

 Cắt và đem đi nhận dạng

- So sánh với database:

 Tạo một tập mẫu của các kí tự từ 0 đến 9 và từ A đến Z

 Kích thước kí tự nhận dạng phải giống với tập mẫu

 Càng nhiều tập mẫu càng giảm thiếu sai sót khi nhận dạng

1.4 Sơ lược về ảnh số

- Với chúng ta ảnh chỉ là góc nhìn về cảnh vật, màu sắc mà chúng ta chụpđược, còn khi xử lý bằng máy tính chúng được biểu diễn dưới dạng là một

ma trận hai chiều hàng và cột VD: ảnh có độ phân giải 1280x1024 tức là có

1280 điểm ảnh(pixel) phân bố theo hàng và 1024 điểm ảnh phân bố theo cột,

có nghĩa là độ phân giải càng cao thì số lượng các pixels biểu diễn ảnh cànglớn nên ảnh sẽ nhìn mượt, rõ hơn

Hình 2-2: Ma trận ảnh

- Có ba loại ảnh chính hay sử dụng trong xử lý ảnh:

 Ảnh màu: hay được gọi là ảnh RGB, ảnh được biểu diễn bởi ba màu

đỏ, xanh lá, xanh dương trong một pixel Có giá trị từ 0 đến 255 nên

sẽ có 3 bytes trong một pixel Ảnh này có độ chân thật giống với mắtnhìn nhất

Trang 10

 Ảnh xám: ảnh cũng có giá trị từ 0 đến 255 nhưng chỉ biểu diễn bởi 1bytes Ảnh đã được loại bỏ yếu tố màu sắc, độ bão hòa nhưng giữ lại

Trang 11

Hình 2-5: Ảnh nhị phân

1.5 Xoay biển số

- Biển số xe khi chụp từ camera có thể không lúc nào cũng ngay ngắn, có lúc

sẽ bị nghiêng trái, phải Phần này cũng quan trọng không kém đến việc nhậndạng sau này, vì nếu biển số không ở phương thẳng đứng lúc cắt từng kí tự

để nhận dạng sẽ làm sai lệch chúng Dùng biển Hough để tìm ra cạnh biển số

và tính được góc lệch để xoay

1.1.3 Lý thuyết biển đổi Hough:

- Đây là phương pháp dùng tách các đặc điểm hình dáng cụ thể của một vậtnhư hình tròn, hình vuông, đường thẳng khi ảnh ở dạng nhị phân

- Từ góc tọa độ lên một đường thẳng đang xét có vô số đường thẳng Với tham

số p là độ dài từ gốc tọa độ đến đương thẳng, θ là góc giữa đường thẳng p vàtrục hoành Trong đó θ giới hạn từ -90̊ : 89̊, từ -D đến D với D là đường chéocủa ảnh

 Công thức liên quan:

p = x*cos(θ) + y*sin(θ)

Trang 12

Hình 2-6: Miêu tả biến đổi Hough

- Trong trục tọa độ với p là trục hoành, θ là trục tung thì từ đường thẳng xéttrên được xác định bằng hai tham số này và được lưu trong mảng hai chiều

Sơ đồ hoạt động như sau:

Hình 2-7: Sơ đồ thực hiện xoay biển số

1.1.4 Xác định góc lệch

- Tìm được hai điểm đầu và cuối của đoạn thẳng ta đang xét trong ảnh đầu vàoqua biến đổi Hough, qua đó xác định được hai tọa độ A(x1,y1), B(x2,y2) Tìm góc lệch bằng cách lấy A – B = x1- x2, y1- y2 Dùng hàm tính góc để tìm ra góc lệch

Trang 13

Hình 2-9: Ảnh được xoay khi lệch

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

- Việc tách vùng biển số mục đích để chỉ lấy mỗi biển số, loại bỏ những thứkhông cần thiết xung quanh sau khi đã xoay ảnh về thẳng đứng Phần nàygiúp phân đoạn kí tự chính xác hơn Với hai phần là:

 Xác định vùng chứa biển số nhờ vào các đặc trưng của biển số

 Cắt biển số từ vùng đã được xác định

Hình 2-10: Sơ đồ khối tách vùng biển số

- Biển số có nét đặc trưng là một hình chữ nhật có viền màu đen bao quanhhoặc viền màu bạc khi gắn khung inox Ngoài ra, biển số có nền là màu trắng

và các kí tự thì màu đen Từ đó việc tìm các đặc trưng đó trong ảnh sẽ xácđịnh được vị trị mà biển số xe nằm trong bức ảnh

- Các bước làm như sau:

 Chuyển đổi ảnh RGB sang ảnh mức xám

Trang 14

- Vì biển số xe có viền đen bao quanh nên khi ngưỡng bằng một thì có thểkhông có biển số trong hình.

1.7 Tách từng kí tự

- Khi cắt được biển số với ảnh đầu ra chỉ chứa mỗi biển số, để có thể nhậndạng được kí tự trong đó thì phải tiến hành tách từng kí tự riêng biệt Thứnhất là để làm một thư viện tập mẫu gồm số từ 0 đến 9, chữ từ A đến Z Thứhai khi có được kí tự từ biển số xe thì đem nó đi so sánh với mẫu trong thưviện

- Mỗi kí tự trên biển số xe đều chỉ có một mẫu, một diện tích như nhau Đượcchia làm hai phần là phần kí tự trên bao gồm số và chữ cái, phần kí tự dướichỉ có số

- Trình tự thực hiện như sau:

 Chuyển từ ảnh RGB sang ảnh xám

 Lọc nhiễu nhằm giúp cho ảnh kí tự chuẩn hơn, ít bị sai sót

 Tìm biên của các kí tự bằng thuật toán Canny

Hình 2-11: Ảnh trước và sau khi cắt biển số

Trang 15

 Xác định vùng diện tích, vùng bao chứa kí tự nhờ hàm regionprops.

 Chỉ lấy đối tượng nào có diện tích lớn nhất khi có nhiều đối tượng donhiễu

 Sắp xếp các đối tượng phần trên và dưới đúng theo thứ tự của biển sốxe

- Các đối tượng sau khi được cắt ra phải đưa về ảnh nhị phân, cùng một kíchthước với tập mẫu trong thư viện, với kích thước là 90x40 Bới vì sau này ta

sẽ chuyễn các hình chứa kí tự đó thành một ma trận 90x40 chỉ chưa dữ liệu

Trang 16

- Phương pháp này đơn giản nhất vì chỉ làm việc trên ma trận nhưng muốnhiệu quả thì ảnh đầu vào phải rõ, không nhiễu để tránh ảnh được nhận dạngquá khác so với mẫu Lúc đó việc nhận dạng không còn chính xác nữa.

- Các kí tự với phương pháp này dễ nhầm như số 6 với chữ G, số 2 với chữ Z,

số 0 với chữ O, số 8 với chữ B

- Việc nhầm lẫn này có thể giảm thiểu bằng cách thay thế bằng các phươngpháp khác như sử dụng mạng Neural, phương pháp SIFT Đây là các phươngpháp nhận dạng đúng gần như tuyệt đối với mọi điều kiện Tuy nhiên, đồ ánnày đang sử dụng phương pháp nêu trên nên đễ giải quyết vấn đề này thì cócách như sau:

 Nhận thấy chữ cái chỉ xuất hiện ở hàng trên với thứ tự là 3 hoặc 4 vì

có xe dưới 50cc

 Còn hàng dưới chỉ là số

 Khi so sánh với mẫu chỉ chỗ nào có chữ thì so sánh với chữ, còn số thì

so sánh với số thì sai sót sẽ giảm

- Ở đây sử dụng ma trận cần nhận dạng trừ đi cho các ma trận mẫu, sau đó tínhtổng của ma trận mới, lấy ma trận nào có kết quả nhỏ nhất vì nó sẽ gần giốngvới tập mẫu

- Trong MATLAB, tạo một bảng là data.mat để chữa các dữ liệu của ma trận,code thực hiện như sau:

I = imread(‘0.bmp’)a(1,1) = I

a(1,2) = ‘0’

save(data.mat)

Trang 17

- Mảng này chứa hai phần tử đó là ma trận của kí tự, phần từ còn lại là tên gọicủa ma trận đó Để sau khi có kết quả nhỏ nhất mới xuất ra kết quả là chữhoặc số.

- Dữ liệu tất cả các tập mẫu kí tự được lưu và khi sử dụng chỉ cần gọi ra

Hình 2-13: Tạo dữ liệu cho database

1.9 Thiết kế giao diện người dùng

- Trong MATLAB có phần thiết kế giao diện nhằm giúp người dùng dễ sửdụng đó là GUI, rất giống với giao diện các chương trình khác như VisualBasic, OpenCV,

- Thiết kế giao diện chỉ việc kéo thả các nút nhấn, vùng hiển thị kết quả nhưPushbutton, Axes, Panel, Edit Text Trong nút Pushbutton quan trọng là haithuộc tính tag và string Để một hàm thực hiện khi nhấn vào Pushbutton làcác tham số sau:

 hObject: handle của thuộc tính tag

 eventdata

 handles: dùng truy xuất dữ liệu từ nơi khác Các biến lưu trữ phải đặttrong hàm global mới truy xuất được

- Thiết kế giao diện hiển thị với đầy đủ chức năng bao gồm: chọn ảnh muốn

xử lý, chụp ảnh từ camera, vùng hiển thị ảnh xử lý, vung chứa kết quả

Trang 18

Hình 2-14: Giao diện chương trình

CHƯƠNG 3 GIẢI THUẬT

1.10 Lưu đồ giải thuật phần xoay biển số

Trang 19

Hình 3-15: Giải thuật xoay biển số

1.11 Lưu đồ giải thuật tách vùng biển số

Trang 20

Hình 3-16: Giải thuật tách biển số

1.12 Lưu đồ giải thuật tách từng kí tự

Trang 21

Hình 3-17: Giải thuật tách kí tự

1.13 Lưu đồ giải thuật chương trình chính

1.1.5 Chương trình dùng ảnh có sẵn

Trang 22

Hình 3-18: Dùng ảnh có sẵn

1.1.6 Chương trình dùng ảnh chụp từ camera

Trang 23

Hình 3-19: Ảnh chụp từ camera

CHƯƠNG 4 NHẬN XÉT

1.14 Nhận xét

Trang 24

- Kết quả hiển thị giống với biển số, tuy nhiên vẫn còn sai sót trong quá trìnhnhận dạng với các lí do sau:

 Vẫn còn sai sót vì các điều kiện bên ngoài

 Phương pháp nhận dạng còn chậm, cần đối tượng mẫu lớn

CHƯƠNG 5 KẾT LUẬN

1.15 Kết luận

Trang 25

- Kết quả nhận được sau khi xử lý đúng với những yêu cầu đặt ra như: xoaybiển số xe nếu bị nghiêng, cắt biển số xe, tách từng kí tự, so sánh vớidatabase và xuất ra kết quả.

- Xử lý còn chậm, thiếu chính xác với những hình chụp không rõ do yếu tốánh sáng, góc chụp, khoảng cách chụp

- Thiết kế một bãi giữ xe mô hình nhỏ với chức năng tự động nhận dạng biển

số xe khi vào và khi xe ra kiểm tra xem có đúng biển số không

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] https://sites.google.com/site/dangtrieu/xulyanh

Trang 26

[2] http://www.ngohaibac.net/matlab001-ki-thuat-lap-trinh-matlab-can-ban/

Tiếng Anh:

[3] http://www.mathwork.com

[4] http://www.sparticl.org/topic/echolocation/

[5] Oge Marques, Practical Image And Video Processing Using MATLAB,

John Wiley & Sons, Ltd., ISBN:9781118093481

[6] Chris Solomon (2011),Fundamentals Of Digital Image Processing, First

Edition, John Wiley & Sons, Ltd., ISBN:978-0-470-84472-4

Trang 27

PHỤ LỤC A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Code phần giao diện GUI

function varargout = bienso(varargin)

% BIENSO MATLAB code for bienso.fig

% BIENSO, by itself, creates a new BIENSO or raises the existing

% singleton*.

%

% H = BIENSO returns the handle to a new BIENSO or the handle to

% the existing singleton*.

%

% BIENSO('CALLBACK',hObject,eventData,handles, ) calls the local

% function named CALLBACK in BIENSO.M with the given input arguments.

%

% BIENSO('Property','Value', ) creates a new BIENSO or raises the

% existing singleton* Starting from the left, property value pairs are

% applied to the GUI before bienso_OpeningFcn gets called An

% unrecognized property name or invalid value makes property application

% stop All inputs are passed to bienso_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help bienso

% Last Modified by GUIDE v2.5 18-Apr-2017 16:03:21

% Begin initialization code - DO NOT EDIT

Trang 28

% - Executes just before bienso is made visible.

function bienso_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to bienso (see VARARGIN)

% Update handles structure

set(handles.figure1,'Name','Detec Number Plate');

% - Outputs from this function are returned to the command line.

function varargout = bienso_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

Trang 29

% Get default command line output from handles structure

varargout{1} = handles.output;

% - Executes on button press in off_line_.

function off_line Callback(hObject, eventdata, handles)

% hObject handle to off_line_ (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

global data;

global img;

[FileName,PathName] = uigetfile({'*.jpg;*.JPG','JPG Files (*.jpg, *.JPG)';

'*.tif;*.TIF','TIF Files (*.tif, *.TIF)';

'*.gif;*.GIF','GIF Files (*.gif, *.GIF)';

Trang 31

% - Executes on button press in close_button.

function close_button_Callback(hObject, eventdata, handles)

% hObject handle to close_button (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

function y = my_recog( bw,character)

%MY_MANUAL_RECOG Summary of this function goes here

% Detailed explanation goes here

% - Executes on button press in Reset.

function Reset_Callback(hObject, eventdata, handles)

% hObject handle to Reset (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% - Executes on button press in Excel.

function Excel_Callback(hObject, eventdata, handles)

% hObject handle to Excel (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

Trang 32

% - Executes on button press in Preview.

function Preview_Callback(hObject, eventdata, handles)

% hObject handle to Preview (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% - Executes on button press in Capture.

function Capture_Callback(hObject, eventdata, handles)

% hObject handle to Capture (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

baseName = 'Nakk_'; %Nakk is the name i have chosen for the image files

newName = [baseDir baseName num2str(counter) '.jpg'];

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

TỪ KHÓA LIÊN QUAN

w