Tải bản đầy đủ (.docx) (33 trang)

HỆ THỐNG NHẬN DẠNG BIỂN số TRONG mô HÌNH bãi GIỮ XE tự ĐỘNG, có CODE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.34 MB, 33 trang )

HỆ THỐNG NHẬN DẠNG BIỂN SỐ TRONG MƠ
HÌNH BÃI GIỮ XE TỰ ĐỘNG, CÓ CODE


HỆ THỐNG NHẬN DẠNG BIỂN SỐ TRONG MƠ HÌNH BÃI GIỮ XE TỰ
ĐỘNG
TĨM TẮT

Hệtrí
thống
biển

hình
bãi
giữ
xe
tựbiển
động
ứng
dụng
ảnh
để nhiều
nhận
dạng
vị
biển
số vàdạng
tiếnthống
hànhsố
vẽ trong
đường


viền
khoanh
vùng
số
, và
cắt
biển
số
ra
vàtrong
tiến
hànhgiữ
xửxe
lýđược
đọc
biển
số
tựnhận
động.
Hệ
này
sau
được
áp dụng
vào
hình
thực
tế xử
sẽ lý
mang

lại
lợi
ích
rất
nhiều
cho
người
dân
trong
việc
đápkhi
ứng
nhu
cầu
tiện
lợi,
tựmơ
động
nhanh
chóng
việc
hiện
nay.


MỤC LỤC


MỤC LỤC HÌNH ẢNH



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

1.1.

Giới thiệu đề tài
Hiện nay, tình trạng giao thông đang ngày càng dày đặc, số lượng phương tiện giao

thông người dân sử dụng ngày càng gia tăng. Việc này kéo theo nhu cầu chỗ giữ xe của
các phương tiện giao thơng ngày càng tăng theo. Vì vậy việc xây dựng các bãi xe với
nhiều mơ hình lớn, nhỏ ngày càng xuất hiện nhiều ở các trung tâm thành phố. Đặc biệt, là
việc xây dựng các bãi giữ xe trong các tòa chung cư cho cư dân trong tòa nhà đã trở thành
việc tất yếu và cần thiết nhất. Bên cạnh đó, cùng với sự phát triển với khoa học kĩ thuật
hiện đại thì các bãi giữ xe truyền thống này đã được điều khiển một cách tự động và với
các chức năng thơng minh hơn. Vì vậy em đã tiến hành thực hiện đề tài “ Hệ thống nhận
dạng biển số trong mơ hình bãi giữ xe tự động”. Với đề tài này sẽ giúp cho thay thế
cho mơ hình bãi giữ xe truyền thống bằng mơ hình bãi giữ xe tự động với chức năng tự
động xác định biển số bằng camera và ứng dụng xử lý ảnh để nhận dạng biển số xe. Từ đó
hệ thống nhận dạng biển số trong bãi giữ xe sẽ hoạt động một cách tự động, thuận tiện
hơn cho người dân ra vào các bãi giữ xe.

1.1.

Mục đích nghiên cứu

-

Dựa trên những kiến thức đã học về môn xử lý ảnh.


-

Đồng thời tìm hiểu thêm kiến thức lập trình trên Visual Studio Code với ngơn
ngữ lập trình Python và thư viện OpenCV.

1.2.

Đối tượng nghiên cứu

-

Ngơn ngữ lập trình Python.

-

Thư viện OpenCV.

-

Các hàm xử lý ảnh.

Mơi trường lập trình Visual Studio Code.

SVTH: TRẦN LÊ ĐÌNH TRỌNG


1.3.

Phạm vi nghiên cứu
Với góc độ là đồ án chuyên ngành, còn hạn chế khá nhiều về mặt thời

gian và kinh phí thực hiện mơ hình nên chỉ giới hạn tới việc ứng dụng xử lý
ảnh để nhận dạng và đọc được biển số xe đã chuẩn bị thông qua camera máy
tính.

1.4.

Dự kiến kết quả
Hệ thống camera của máy tính sẽ được bật. Sau đó, biển số xe đã chuẩn bị
sẽ được đưa vào camera từ đó phần mềm được lập trình sẽ hoạt động, nó sẽ tự
động xác định biển số xe và đưa vào hệ thống xử lý ảnh để xác định khung biển số
xe và tiến hành nhận dạng và hiển thị ra được kết quả biển số xe theo như yêu cầu
đặt ra.


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1.

Giới thiệu về xử lý ảnh
2.1.1.

Một số khái niệm cơ bản

a. Ảnh số và điểm ảnh
-

Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh
thật.

-


Đ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

-

Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm
nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật.

-

Mỗi phần tử trong ma trận được gọi là một phần tử ảnh.

Hình 2.1 Điểm ảnh
b. Sắc màu của ảnh
-

Các màu sắc cơ sở dùng để biểu diễn một ảnh màu tạo thành một hệ thống màu và được đề xuất
dựa trên các nghiên cứu nhận thức thị giác của con người.

-

Hệ màu RGB (red, green, blue) là một trong những mơ hình phổ biến nhất, trong đóm ỗi điểm
ảnh được biểu diễn bằng giá trị số thuộc khoảng [0..255]
c. Mức xám

-

Mức xám: Là kết quả của sự biến đổi tương ứng 1 giá trị độ sáng của 1 điểm ảnh với

giá trị nguyên dương.
-


Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256.


d. Độ sâu màu của ảnh
-

Độ sâu màu của ảnh là đại lượng mô tả khả năng biểu diễn các màu sắc trong ảnh số khi hiển thị
trên các thiết bị màn hình hoặc in ấn. Đại lượng này được tính bằng số các bit cần dùng để biểu
diễn cho một điểm ảnh.

-

Có thể phân biệt 3 loại ảnh: màu, xám, và nhị phân qua độ sâu màu với ảnh nhị phân là 1, ảnh
xám là 8, ảnh màu là 24 hoặc 32.
e. Độ phân giải của ảnh

-

Độ phân giải của ảnh là mật độ điểm ảnh được ấn địn trên một ảnh số dược hiển thị.
f. Xử lý ảnh số là gì

-

Xử lý ảnh là một lĩnh vực khoa học và công nghệ chuyên nghiên cứu thay đổi trạng thái ban đầu
của ảnh nhằm:
● Cải thiện thông tin ảnh trực quan theo cách hiểu của con người hoặc nén ảnh
● Làm cho nó phù hợp với tri giác máy
⇨ Đây đều là 2 khía cạnh riêng nhưng đều rất quan trọng trong xử lý ảnh.
2.1.2.


Các bước cơ bản của một hệ thống xử lý ảnh

Hình 2.2 Sơ đồ các bước xử lý ảnh
-

Khối thu nhận ảnh: có nhiệm vụ tiếp nhận ảnh đầu vào.

-

Khối tiền xử lý: có nhiệm vụ xử lý nâng cao chất lượng ảnh như giảm nhiễu, phân vùng, tìm
biên v.v..

-

Khối trích chọn đặc điểm: có nhiệm vụ trích chọn các đặc trưng quan trọng của các bức ảnh đã
được tiền xử lý để sử dụng trong hệ quyết định


-

Khối hậu xử lý: có nhiệm vụ xử lý các đặc điểm đã trích chọn, có thể lược bỏ hoặc biến đổi các
đặc điểm này để phù hợp với các kỹ thuật cụ thể sử dụng trong hệ quyết định.

-

Khối hệ quyết định và lưu trữ: có nhiệm vụ đưa ra quyết định (phân loại) dựa trên dự liệu đã
học lưu trong khối lưu trữ.

-


Khối kết luận: đưa ra kết luận dựa vào quyết định của khối quyết định.

2.2.

Môi trường lập trình Visual Studio Code.
2.2.1.

-

Khái niệm

Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn mở gọn nhẹ nhưng có khả năng
vận hành mạnh mẽ trên 3 nền tảng là Windows, Linux và macOS được phát triển bởi Microsoft.
Nó hỗ trợ cho JavaScript, Node.js và Python, cũng như cung cấp một hệ sinh thái mở rộng vô
cùng phong phú cho nhiều ngơn ngữ lập trình khác.

Hình 2.3 Logo Visual Studio Code
2.2.2.
-

Các tính năng của Visual Studio Code

Hỗ trợ nhiều ngơn ngữ lập trình

● Visual Studio Code hỗ trợ nhiều ngơn ngữ lập trình như C/C++, C#, F#, Visual Basic, HTML,
CSS, JavaScript, … Vì vậy, nó dễ dàng phát hiện và đưa ra thơng báo nếu chương chương trình
có lỗi.
-


Hỗ trợ đa nền tảng

● Các trình viết code thơng thường chỉ được sử dụng hoặc cho Windows hoặc Linux hoặc Mac


Systems. Nhưng Visual Studio Code có thể hoạt động tốt trên cả ba nền tảng trên.
-

Cung cấp kho tiện ích mở rộng

● Trong trường hợp lập trình viên muốn sử dụng một ngơn ngữ lập trình khơng nằm trong số các
ngơn ngữ Visual Studio hỗ trợ, họ có thể tải xuống tiện ích mở rộng. Điều này vẫn sẽ khơng làm
giảm hiệu năng của phần mềm, bởi vì phần mở rộng này hoạt động như một chương trình độc
lập.
-

Kho lưu trữ an toàn

● Đi kèm với sự phát triển của lập trình là nhu cầu về lưu trữ an tồn. Với Visual Studio Code,
người dùng có thể hồn tồn n tâm vì nó dễ dàng kết nối với Git hoặc bất kỳ kho lưu trữ hiện
có nào.
-

Hỗ trợ web

● Visual Studio Code hỗ trợ nhiều ứng dụng web. Ngoài ra, nó cũng có một trình soạn thảo và thiết
kế website.
-

Lưu trữ dữ liệu dạng phân cấp


● Phần lớn tệp lưu trữ đoạn mã đều được đặt trong các thư mục tương tự nhau. Ngồi ra, Visual
Studio Code cịn cung cấp các thư mục cho một số tệp đặc biệt quan trọng.
-

Hỗ trợ viết Code

● Một số đoạn code có thể thay đổi chút ít để thuận tiện cho người dùng. Visual Studio Code sẽ đề
xuất cho lập trình viên các tùy chọn thay thế nếu có.
-

Hỗ trợ thiết bị đầu cuối

● Visual Studio Code có tích hợp thiết bị đầu cuối, giúp người dùng khỏi phải chuyển đổi giữa hai
màn hình hoặc trở về thư mục gốc khi thực hiện các thao tác.
-

Màn hình đa nhiệm

● Người dùng Visual Studio Code có thể mở cùng lúc nhiều tệp tin và thư mục – mặc dù chúng
không hề liên quan với nhau.
-

Intellisense

● Hầu hết các trình viết mã đều có tính năng nhắc mã Intellisense, nhưng ít chương trình nào
chun nghiệp bằng Visual Studio Code. Nó có thể phát hiện nếu bất kỳ đoạn mã nào khơng đầy
đủ. Thậm chí, khi lập trình viên qn khơng khai báo biến, Intellisense sẽ tự động giúp họ bổ
sung các cú pháp còn thiếu.



-

Hỗ trợ Git

● Visual Studio Code hỗ trợ kéo hoặc sao chép mã trực tiếp từ GitHub. Mã này sau đó có thể được
thay đổi và lưu lại trên phần mềm.
-

Bình luận

● Việc để lại nhận xét giúp người dùng dễ dàng nhớ cơng việc cần hồn thành.
2.3.

Ngơn ngữ Python
2.3.1.

-

Khái niệm

Python là ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van
Rossum. Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngơn ngữ lập trình nhập
mơn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình. Python hồn tồn tạo kiểu động
và sử dụng cơ chế cấp phát bộ nhớ tự động. Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách
tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng. Cú pháp lệnh của Python là
điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở
thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết
các nền tảng.


Hình 2.4 Logo Python
2.3.2.
-

Các tính năng của Python

Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và
viết hơn rất nhiều khi so sánh với những ngơn ngữ lập trình khác như C++, Java, C#. Python làm
cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giải pháp chứ khơng phải cú
pháp.

-

Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí là dùng nó
cho mục đích thương mại. Vì là mã nguồn mở, bạn khơng những có thể sử dụng các phần mềm,


chương trình được viết trong Python mà cịn có thể thay đổi mã nguồn của nó. Python có một
cộng đồng rộng lớn, khơng ngừng cải thiện nó mỗi lần cập nhật.
-

Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng này sang nền tảng
khác và chạy nó mà khơng có bất kỳ thay đổi nào. Nó chạy liền mạch trên hầu hết tất cả các nền
tảng như Windows, macOS, Linux.

-

Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạp rất lớn, bạn có
thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữ khác (có thể gọi được từ C)
vào code Python. Điều này sẽ cung cấp cho ứng dụng của bạn những tính năng tốt hơn cũng như

khả năng scripting mà những ngơn ngữ lập trình khác khó có thể làm được.

-

Ngơn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạn khơng phải lo lắng
những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vơ nghĩa,... Khi chạy code
Python, nó sẽ tự động chuyển đổi code sang ngơn ngữ máy tính có thể hiểu. Bạn không cần lo
lắng về bất kỳ hoạt động ở cấp thấp nào.

-

Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một số lượng lớn thư
viện tiêu chuẩn giúp cho cơng việc lập trình của bạn trở nên dễ thở hơn rất nhiều, đơn giản vì
khơng phải tự viết tất cả code.

-

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng đối
tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan. Với OOP, bạn có thể
phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng.

2.4.

Thư viện OpenCV
2.4.1.
-

Khái niệm

Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky. OpenCV viết tắt

cho Open Source Computer Vision Library. OpenCV là thư viện nguồn mở hàng đầu cho
Computer Vision và Machine Learning, và hiện có thêm tính năng tăng tốc GPU cho các
hoạt động theo real-time.


Hình 2.5 Logo OpenCV
2.4.2.
-

Các tính năng thư viện OpenCV

Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm tính
năng và module tương ứng như sau:

● Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
● Phát hiện các vật thể (objdetect, features2d, nonfree)
● Geometry-based monocular hoặc stereo computer vision (calib3d, stitching, videostab)
● Computational photography (photo, video, superres)
● Machine learning & clustering (ml, flann)
● CUDA acceleration (gpu)


CHƯƠNG 3. THIẾT KẾ VÀ THI CÔNG
3.1.

Sơ đồ khối của hệ thống

Hình 3.1 Sơ đồ khối của hệ thống



3.1.1.

Khối camera
-

Chức năng: Có nhiệm vụ thu nhận ảnh đầu vào của hệ thống từ bên
ngoài

3.1.2.

Khối tiền xử lý ảnh
-

Chức năng: Có nhiệm vụ nâng cao chất lượng hình ảnh đầu vào, phân
vùng, tìm đường biên, …

3.1.3.

Khối tách biển số
-

Chức năng: Có nhiệm vụ xử lý khoanh vùng hình ảnh biển số xe và tách
biển số xe để xử lý riêng.

3.1.4.

Khối nhận dạng biển số
-

Chức năng: Có nhiệm vụ xử lý ảnh sau khí biển số tách ra tiến hành đọc

và xuất ra dữ liệu biển số xe.

3.1.5.

Khối cơ sở dữ liệu
-

Chức năng: Có nhiệm vụ hiển thị dữ liệu.


3.2.

Thiết kế phần mềm
3.2.1.

Cài đặt phần mềm Visual Studio Code
-

Bước 1: Truy cập đường link chọn
hệ điều hành window để cài đặt Visual Studio Code.

Hình 3.2 Giao diện tải Visual Studio Code
-

Bước 2: Tiến hành mở file đã tải về và tiến hành cài đặt vào máy.

Hình 3.3 Giao diện cài đặt Visual Studio Code


Hình 3.4 Giao diện chọn thêm các tính năng cho việc cài đặt Visual Studio Code


Hình 3.5 Giao diện nhấn cài đặt Visual Studio Code


Hình 3.6 Giao diện đang cài đặt Visual Studio Code

Hình 3.7 Giao diện kết thúc cài đặt Visual Studio Code


Hình 3.8 Giao diện khởi động Visual Studio Code
3.2.2.

Cài đặt Python
-

Bước 1: Truy cập vào đường link: để cài
đặt Python.

Hình 3.9 Giao diện tải về của Python


-

Bước 2: Tiến hành mở file đã tải về cài đặt chương trình vào máy tính.

Hình 3.10 Giao diện mở file tải về Python

Hình 3.11 Giao diện thêm các tính năng cần thiết cho Python



Hình 3.12 Giao diện chọn đường dẫn dể cài đặt Python

Hình 3.13 Giao diện đang cài đặt Python


-

Bước 3: Kiểm tra Python đã được cài đặt vào máy tính.

Hình 3.14 Giao diện kiểm tra đã cài đặt Python
3.2.3.

Cài đặt thư viện OpenCV và các thư viện cần thiết khác.

Hình 3.15 Giao diện cài đặt OpenCV


Hình 3.16 Giao diện cài đặt Pytessereract
3.2.4.

Viết chương trình nhận dạng biển số xe



CHƯƠNG 4. GIẢI THUẬT VÀ ĐIỀU KHIỂN
4.1.

Nguyên lý làm việc của hệ thống

-


Tiến hành khởi động máy tính.

-

Kết nối camera của máy tính với phần mềm thiết kế.

-

Tiến hành mở mơi trường làm việc Visual Studio Code.

-

Khởi động chương trình cho hệ thống bắt đầu hoạt động.

-

Đưa ảnh biển số vào trước camera của máy tính.

-

Hệ thống sẽ bắt đầu khoanh vùng chứa biển số và xác định vị trí của biển số xe.

-

Sau khi đã xác định được vùng chứa biển số xe hệ thống sẽ tiến hành xử lý nhận dạng và
đọc biển số xe.

-


Biển số xe sau khi đọc sẽ được hiển thị ra màn hình.


×