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ệ thống nhận dạng biển số trong mô hình bãi giữ
Trang 1HỆ THỐNG NHẬN DẠNG BIỂN SỐ TRONG MÔ
HÌNH BÃI GIỮ XE TỰ ĐỘNG, CÓ CODE
Trang 2HỆ THỐNG NHẬN DẠNG BIỂN SỐ TRONG MÔ HÌNH BÃI GIỮ XE TỰ
ĐỘNG TÓM TẮT
Hệ thống nhận dạng biển số trong mô hình bãi giữ xe tự động ứng dụng xử lý ảnh để nhận dạng được vịtrí biển số và tiến hành vẽ đường viền khoanh vùng biển số , cắt biển số ra và tiến hành xử lý đọc biển
số tự động Hệ thống này sau khi được áp dụng vào mô hình thực tế sẽ mang lại nhiều lợi ích rất nhiềucho người dân trong việc đáp ứng nhu cầu tiện lợi, tự động và nhanh chóng trong việc giữ xe hiện nay
Trang 3MỤC LỤC
Trang 42.4 Thư viện OpenCV 8
3.2.3 Cài đặt thư viện OpenCV và các thư viện cần thiết khác 18
Trang 56.2 Nhược điểm 26
Trang 6Hì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 13
Hình 3.7 Giao diện kết thúc cài đặt Visual Studio Code 14
Hình 3.11 Giao diện thêm các tính năng cần thiết cho Python 16
Trang 7Hình 5.1 Khởi động chương trình cho hệ thống 24 Hình 5.2 Đưa biển số xe vào camera và hệ thống tiến hành nhận dạng và xác định
Hình 5.3 Hệ thống tiến hành cắt biển số xe và đọc biển số xe 25
Trang 8CHƯƠ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 giaothô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ủacá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ớinhiề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ànhviệ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ậthiệ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ệnhơ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
Trang 91.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ờigian 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áytí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
Trang 10CHƯƠ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 ảnhthậ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ảmnhậ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.
Trang 11d Độ 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ểudiễ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
Trang 12- 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
Trang 13Systems 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ácngô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àmgiả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 độclậ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 toàn Với Visual Studio Code,người dùng có thể hoàn toàn yê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 Ngoài ra, VisualStudio 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 haimàn hình hoặc trở về thư mục gốc khi thực hiện các thao tác
Trang 14- 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ậpmô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 hoàn toà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áchtiế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ếtcá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àmcho 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,
Trang 15chương trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó Python có mộtcộ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ềntả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 codePython, 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 lolắ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ắtcho Open Source Computer Vision Library OpenCV là thư viện nguồn mở hàng đầu choComputer Vision và Machine Learning, và hiện có thêm tính năng tăng tốc GPU cho cáchoạt động theo real-time
Trang 16Hì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ínhnă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)
Trang 17CHƯƠ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
Trang 18- 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
Trang 193.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 https://code.visualstudio.com/download 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
Trang 20Hì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
Trang 21Hì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
Trang 22Hình 3.8 Giao diện khởi động Visual Studio Code
Trang 23- 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
Trang 24Hì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
Trang 25- 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
Trang 26Hì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
Trang 28CHƯƠ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
Trang 294.2 Lưu đồ giải thuật
Trang 30CHƯƠNG 5 THỰC NGHIỆM 5.1 Các bước tiến hành thực nghiệm
- Bước 1: Khởi động chương trình cho hệ thống hoạt động
- Bước 2: Đưa ảnh biển số xe vào camera, hệ thống tiến hành nhận dạng và xác định vị trí biển sốxe
- Bước 3: Hệ thống tiến hành cắt ảnh biến số xe đưa vào xử lý đọc biển số xe
- Bước 4: Biển số xe được hiển thị trên màn hình
- Bước 5: Nhấn tắt chương trình để hệ thống dừng lại
Trang 315.2 Kết quả thực nghiệm
Hình 5.1 Khởi động chương trình cho hệ thống
Hình 5.2 Đưa biển số xe vào camera và hệ thống tiến hành nhận dạng và xác định biển số
Trang 32Hình 5.3 Hệ thống tiến hành cắt biển số xe và đọc biển số xe
Hình 5.4 Biển số xe được hiển thị
Trang 33Hệ thống nhận dạng biển số trong mô hình bãi giữ xe tự động
CHƯƠNG 6:
KẾT LUẬN 6.1 Ưu điểm
- Tốc độ xử lý nhanh
- Hệ thống hoạt động một cách tự động
- Tiết kiệm thời gian
- Mang tính kinh tế cao
- Lưu dữ liệu biển số đã đọc dược và tiến hành dịnh danh dữ liệu của cư dân
- Thiết kế, xây dựng thêm một ứng dụng cụ thể để có thể thao tác trực tiếptrên ứng dụng
- Xây dựng hoàn chỉnh mô hình hệ thống bãi giữ xe ứng dụng xử lý ảnh
Trang 34Hệ thống nhận dạng biển số trong mô hình bãi giữ xe tự động
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, 11, 2)
cv2.putText(frame, "KHUNG BIEN SO", (40, 40),cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 0))
contours, h = cv2.findContours(thresh, 1, 2)
largest_rectangle = [0, 0]
for cnt in contours:
lenght = 0.01 * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, lenght, True)
Trang 35Hệ thống nhận dạng biển số trong mô hình bãi giữ xe tự động
Trang 36Hệ thống nhận dạng biển số trong mô hình bãi giữ xe tự động