HỌC VIỆN NGÂN HÀNGKHOA HỆ THỐNG THÔNG TIN QUẢN LÝ KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC PHÂN TÍCH THIẾT KẾ HỆ THỐNG TRÔNG GỬI XE VÀ ỨNG DỤNG PYTHON XÂY DỰNG MODULE TỰ ĐỘNG NHẬN DẠNG BIỂN SỐ XE Gi
Trang 1HỌC VIỆN NGÂN HÀNG
KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
PHÂN TÍCH THIẾT KẾ HỆ THỐNG TRÔNG GỬI XE VÀ ỨNG DỤNG PYTHON XÂY DỰNG MODULE TỰ ĐỘNG NHẬN DẠNG BIỂN SỐ XE
Giáo viên hướng dẫn Sinh viên thực hiện
Mã sinh viên Lớp
Khóa Hệ
: TS Chu Thị Hồng Hải : Nguyễn Thị Hiếu : 20A4040051 : K20HTTTA : K20
: Đại học chính quy
HÀ NỘI, NĂM 2021
Trang 2KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
LỜI CẢM ƠN
Lời đầu tiên, em muốn gửi lời cảm ơn chân thành đến GVHD TS.Chu ThịHồng Hải - người đã hướng dẫn em trong suốt quá trình nghiên cứu và hoàn thànhbài Khóa luận tốt nghiệp Em cũng xin chân thành cảm ơn Quý Thầy, Cô trong khoa
Hệ thống Thông tin đã tận tình truyền đạt các kiến thức bổ ích và chuyên sâu trongquá trình học tập tại trường
Trong quá trình nghiên cứu và làm Khóa luận, do vốn kiến thức và kinhnghiệm còn hạn chế nên đề tài không thể tránh khỏi những thiếu sót Em mong nhậnđược ý kiến góp ý của Thầy, Cô để Khóa luận của em được hoàn thiện hơn
Sau cùng, em chúc quý Thầy, Cô thật nhiều sức khỏe và thật thành công trong
sự nghiệp giảng dạy của mình
Trang 3KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
LỜI CAM KẾT
Em xin cam đoan toàn bộ quá trình nghiên cứu và thực hiện của bài báo cáoKhóa luận tốt nghiệp hoàn toàn là của riêng em Những nội dung được trình bàytrong bài báo cáo này là của bản thân em và có những dữ liệu được tích hợp từnhiều nguồn khác nhau Mọi tài liệu tham khảo đều có sự trích dẫn rõ ràng, cụ thể,đầy đủ và hợp pháp
Em xin chịu hoàn toàn trách nhiệm với lời cam đoan này
SINH VIÊN THỰC HIỆN Nguyễn Thị Hiếu
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
•
Sinh viên: Nguyễn Thị Hiếu
Giảng viên hướng dẫn: TS.Chu Thị Hồng Hải
Khóa luận: PHÂN TÍCH THIẾT KẾ HỆ THỐNG TRÔNG GỬI XE VÀ ỨNG
XE
1 về mục đích của đề tài
Khóa luận đã nghiên cứu lý thuyết về phát triển hệ thống thông tin, ngôn ngữPython và từ đó ứng dụng lý thuyết vào việc xây dựng module nhận dạng biển số xetrong hệ thống trông gửi xe tự động
2 về tính thời sự và ứng dụng của đề tài
Ứng dụng công nghệ thông tin trong việc tự động hóa các nghiệp vụ là vấn đềluôn cần thiết ở mọi thời điểm Đề tài khóa luận đã nghiên cứu một vấn đề rất thânthuộc trong cuộc sống hàng ngày, vấn đề này tuy đã được nghiên cứu và ứng dụng ởnhiểu no`i nhưng tại HVNH chưa được nghiên cứu và ứng dụng Do vậy, đề tài này
có tính thời sự và thực tiễn đối với chính HVNH noi sinh viên đã gắn bó học tậptrong nhiều năm
3 Bố cục và hình thức trình bày của đề tài
Ngoài phần mở đầu và kết luận, tài liệu tham khảo, đề tài có kết cấu 3 chươngphù hợp với kết cấu chung của một khóa luận tốt nghiệp sinh viên ngành Hệ thốngthông tin quản lý
Chưong 1: Co sở lý thuyết
Chưong 2: Xây dựng module tự động nhận dạng biển số xe bằng Python
Chưong 3: Xây dựng hệ thống trông gửi xe ứng dụng module tự động nhậndạng biển số xe
4 Kết quả thực hiện đề tài
- Khóa luận đã trình bày được lý thuyết liên quan đến hệ thống thông tin, ngônngữ Python và tổng quan nghiên cứu của các tác giả trước
- Khóa luận đã xây dựng module và kiểm thử module nhận dạng biển số xe vàkết quả cho ra khá khả quan
- Phân tích thiết kế hệ thống trông gửi xe ứng dụng module nhận dạng biển số
xe tự động
5 về ý thức, thái độ của sinh viên trong quá trình thực hiện đề tài
KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây dựng module tự động nhận dạng biển số xe
Trang 5KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Sinh viên có tinh thần học tập nâng cao không ngại nghiên cứu những kiếnthức mới chưa được học trong chương trình đào tạo của nhà trường
Trang 6KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM KẾT ii
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iii
MỤC LỤC v
DANH MỤC HÌNH VẼ viii
DANH MỤC BẢNG BIỂU x
MỞ ĐẦU 1
1 Tính cấp thiết của đề tài 1
2 Mục đích, nhiệm vụ nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 1
4 Phương pháp nghiên cứu 2
5 Kết cấu đề tài 2
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 3
1.1 Tổng quan về hệ thống thông tin 3
1.1.1 Một số khái niệm 3
1.1.2 Các thành phần 3
1.1.3 Phương pháp tiếp cận phát triển hệ thống thông tin theo hướng đối tượng 4 1.1.4 Vòng đời phát triển của hệ thống thông tin 5
1.2 Ngôn ngữ Python 6
1.2.1 Giới thiệu Python 7
1.2.2 Các phiên bản 8
1.2.3 Các tính năng 8
1.2.4 Các thư viện 10
1.3 Tổng quan nhận dạng biển số xe 10
1.4 Kết thúc chương 1 12
Trang 7KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
CHƯƠNG 2: XÂY DỰNG MODULE Tự ĐỘNG NHẬN DẠNG BIỂN SỐ XE
BẰNG PYTHON 13
2.1 Nhận dạng biển số xe 13
2.2 Kĩ thuật nhận dạng trong Python: 14
2.2.1 Tải và hiển thị ảnh 14
2.2.2 Convert màu file ảnh 15
2.2.3 Resize ảnh 17
2.2.4 Tìm cạnh 18
2.2.5 Lọc hình ảnh 19
2.2.6 Tìm Contours 20
2.2.7 Python-tesseract 21
2.2.8 Dừng màn hình 21
2.3 Xây dựng và thử nghiệm module nhận dạng biển số xe 22
2.3.1 Cài đặt môi trường 22
2.3.2 Dữ liệu thử nghiệm 23
2.3.3 Xây dựng module 24
2.3.4 Kết quả thử nghiệm 25
2.4 Kết thúc chương 2 27
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TRÔNG GỬI XE ỨNG DỤNG MODULE NHẬN DẠNG BIỂN SỐ XE 28
3.1 Mô tả bài toán 28
3.2 Phân tích thiết kế 29
3.2.1 Biểu đồ use case 29
3.2.2 Biểu đồ tuần tự 34
3.2.3 Biểu đồ lớp 39
3.3 Thiết kế hệ thống 39
3.3.1 Thiết kế mức khái niệm 39
3.3.2 Thiết kế mức logic 41
3.3.3 Thiết kế mức vật lý 42
Trang 8KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
3.4 Thiết kế giao diện 45
3.5 Kết luận chương 48
KẾT LUẬN 49
TÀI LIỆU THAM KHẢO 50
Trang 9DANH MỤC HÌNH VẼ
•
Hình 1.1: Thành phần của hệ thống thông tin 3
Hình 1.2: Vòng đời phát triển hệ thống thông tin 5
Hình 1.3: Logo Python 7
Hình 1.4: Khảo sát dành cho nhà phát triển năm 2020 của Stack Overflow 7
Hình 1.5: Lịch sử Python 8
Hình 1.6: Các tính năng của Python 8
Hình 1.7: Khảo sát PYPL PopularitY of Programming Language 9
Hình 2.1: Quy trình nhận dạng biển số xe 14
Hình 2.2: Kết quả minh họa tải ảnh 15
Hình 2.3: Hệ màu RGB 15
Hình 2.4: Hệ màu CMYK 16
Hình 2.5: Hệ màu HSV 16
Hình 2.6: Kết quả minh họa convert màu ảnh 17
Hình 2.7: Kết quả minh họa resize ảnh 18
Hình 2.8: Kết quả minh họa tìm cạnh 19
Hình 2.9: Kết quả minh họa lọc ảnh 20
Hình 2.10: Kết quả minh họa tìm contours 21
Hình 2.11: Kết quả sử dụng Python-tesseract 21
Hình 2.12: Trang web Python 22
Hình 2.13: Trang web Visual Studio Code 22
Hình 2.14: Màn hình hoạt động Visual Studio Code 23
Hình 2.15: Màn hình đã cài đặt thư viện 23
Hình 2.16: Dữ liệu thử nghiệm 24
Hình 2.17: Khái báo thư viện 24
Hình 2.18: Giới hạn hình ảnh 24
Hình 2.19: Xây dựng module 25
Hình 2.20: Kết quả thử nghiệm 26
Hình 2.21: Một số trường hợp nhận diện sai 27
Hình 3.1: Biểu đồ use case tổng quát 29
Hình 3.2: Biểu đồ tuần tự Đăng nhập 35
Hình 3.3: Biểu đồ tuần tự Nhận xe 35
Hình 3.4: Biểu đồ tuần tự Trả xe 36
Hình 3.5: Biểu đồ tuần tự Kiểm tra thông tin vào 36
Hình 3.6: Biểu đồ tuần tự Lập biên bản 37
Hình 3.7: Biểu đồ tuần tự Lập phiếu thu chi 37
KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây dựng module tự động nhận dạng biển số xe
Trang 10KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 3.8: Biểu đồ tuần tự Báo cáo xe 38
Hình 3.9: Biểu đồ tuần tự Báo cáo doanh thu 38
Hình 3.10: Biểu đồ lớp 39
Hình 3.11: Mô hình ER 40
Hình 3.12: Mô hình ERD 41 Hình 3.13: Giao diện Đăng nhập
45 Hình 3.14: Giao diện Nhận xe
45 Hình 3.15: Giao diện Trả xe
46 Hình 3.16: Giao diện Báo cáo xe
46 Hình 3.17: Giao diện Báo cáo doanh thu
47 Hình 3.18: Giao diện Quản lí sự cố
Trang 11KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
DANH MỤC BẢNG BIỂU
•
Bảng 2.1: Mô tả quy trình nhận dạng biển số xe 13
Bảng 2.2: Kết quả thử nghiệm 26
Bảng 3.1: Mô tả kịch bản Đăng nhập 30
Bảng 3.2: Mô tả kịch bản Nhận xe 31
Bảng 3.3: Mô tả kịch bản Trả xe 31
Bảng 3.4: Mô tả kịch bản Kiểm tra thông tin vào 32
Bảng 3.5: Mô tả kịch bản Lập biên bản 32
Bảng 3.6: Mô tả kịch bản Lập phiếu thu chi 33
Bảng 3.7: Mô tả kịch bản Báo cáo xe 34
Bảng 3.8: Mô tả kịch bản Báo cáo doanh thu 34
Bảng 3.9: Bảng quan hệ thực thể 40
Bảng 3.10: Bảng Thẻ 42
Bảng 3.11: Bảng Loại xe 42
Bảng 3.12: Bảng Xe 42
Bảng 3.13: Bảng Xe gửi 42
Bảng 3.14: Bảng Xe trả 43
Bảng 3.15: Bảng Nhân viên 43
Bảng 3.16: Bảng Tài khoản 44
Bảng 3.17: Bảng Sự cố 44
Trang 12KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
MỞ ĐẦU
1 Tính cấp thiết của đề tài
Công nghệ thông tin đang ngày càng bùng nổ và trở thành nhân tố vô cùng cầnthiết trong mọi lĩnh vực về công việc và đời sống hàng ngày Ứng dụng công nghệthông tin vào mọi mặt của đời sống càng quan trọng hơn bởi lẽ, công nghệ thông tingiúp nâng cao chất lượng công việc, tăng hiệu suất, tiết kiệm thời gian, chi phí vậnhành, dự đoán,
Thành phố Hà Nội là một trong những trung tâm kinh tế của cả nước, nơi đâydân cư đông đúc, lượng xe lưu thông lớn vì vậy nhu cầu gửi xe nhanh chóng, antoàn thực sự rất cần thiết Nhưng hiện nay ở nhiều bãi trông gửi xe vẫn quản lí theophương pháp truyền thống việc ghi chép, lưu trữ, quản lí số lượt xe ra vào gặp rấtnhiều trở ngại như ùn tắc, mất xe, giải quyết nhiều sự cố, kiểm soát an ninh khôngđảm bảo, mất thời gian công sức kiểm tra, lập báo cáo
Xuất phát từ nhu cầu thực tiễn nhằm giải quyết khó khăn khi vận hành các hệthống trông gửi xe truyền thống, em chọn đề tài ii Phan tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây dựng module tự động nhận dạng biển số xẻ” để
hoàn thiện các quy trình quản lí giúp công việc quản lý trở nên dễ dàng, thuận tiện,chính xác và ra quyết định nhanh chóng hơn
2 Mục đích, nhiệm vụ nghiên cứu
Mục tiêu: Phân tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây
dựng module nhận dạng biển số xe
Nội dung nghiên cứu:
- Tìm hiểu cơ sở lý thuyết về xây dựng hệ thống thông tin, ngôn ngữ Python
- Tìm hiểu các kỹ thuật, hàm xử lí trong Python áp dụng xây dựng modulenhận dạng biển số xe
- Phân tích thiết kế hệ thống trông gửi xe ứng dụng module nhận dạng biển sốxe
3 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Module nhận dạng biển số xe và hệ thống trông gửixe
Trang 13KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
- Phạm vi nghiên cứu: Dữ liệu biển số xe
4 Phương pháp nghiên cứu
- Phương pháp nghiên cứu cho phần cơ sở lý thuyết sẽ là tìm kiếm và tổnghợp
- Phương pháp thực nghiệm trên nền tảng Python kết hợp Visual Studio Code
5 Kết cấu đề tài
Ngoài phần mở đầu, kết luận, nội dung chính của đề tài được chia làm 3
chương:
Chương 1 Cơ sở lý thuyết
Chương 2 Xây dựng module tự động nhận dạng biển số xe bằng Python
Chương 3 Xây dựng hệ thống trông gửi xe ứng dụng module nhận dạng biển
số xe
Trang 14KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
CHƯƠNG 1 CƠ SỞ LÝ THUYET 1.1 Tổng quan về hệ thống thông tin
1.1.1 Một số khái niệm
Có nhiều khái niệm về Hệ thống thông tin, tuy nhiên khái niệm về hệ thốngthông
tin đúng với quan điểm của khóa luận nhất sẽ được trình bày phần dưới đây:
- Hệ thống thông tin (IS) là một hệ thống kết hợp của phần cứng, phần mềm,mạng truyền thông, dữ liệu, phần mềm được xây dựng để thu thập, lưu trữ,
xử lý và khai thác, chia sẻ thông tin, tri thức nhằm phục vụ cho các mục tiêu,hoạt động của tổ chức
- Hệ thống thông tin quản lí (MIS): là một hệ thống tích hợp giữa con người vàmáy móc để cung cấp thông tin cho hỗ trợ các hoạt động, quản lý và chứcnăng ra quyết định trong tổ chức
1.1.2 Các thành phần
Một hệ thống thông tin được tạo thành từ năm thành phần:[3],[4]
Hình 1.1: Thành phần của hệ thống thông tin
Trong đó:
Trang 15- Phần cứng máy tính là các thiết bị vật lý, hữu hình của một hệ thống máytính, ví dụ bộ xử lý trung tâm (CPU), máy in, hay ổ đĩa Phần cứng của hệthống thông tin quản lý là toàn bộ các thiết bị kỹ thuật phục vụ cho việc thuthập, xử lý, lưu trữ và truyền đạt thông tin.
- Phần mềm máy tính là các chương trình đa dạng được sử dụng để vận hành,điều khiển máy tính và các thiết bị liên quan khác Về nguyên tắc, có thểphân phần mềm thành hai loại chính:
• Phần mềm hệ thống bao gồm hàng loạt các chương trình như hệ điềuhành, hệ thống quản trị cơ sở dữ liệu, các chương trình kiểm soát truyềnthông, các chương trình tiện ích và dịch vụ, các chương trình dịch Phầnmềm hệ thống còn được gọi là phần mềm hỗ trợ
• Phần mềm ứng dụng thực hiện các hoạt động xử lý thông tin của người
sử dụng thì phần mềm hệ thống thực hiện quản lý và hỗ trợ các hoạt độngcủa các hệ thống máy tính và mạng máy tính
- Dữ liệu được đề cập là nguyên liệu thô mà hệ thống thông tin biến đổi tổchức, tập hợp thành một cơ sở dữ liệu
• Dữ liệu được biểu diễn dưới nhiều dạng Chúng có thể ở dạng dữ liệu chữ
và số dữ liệu văn bản, dữ liệu hình ảnh và dữ liệu âm thanh
• Cơ sở dữ liệu là tập hợp các dữ liệu đã thu thập, lựa chọn và tổ chức mộtcách khoa học theo một cấu trúc xác định
- Thủ tục, quy trình: Các quy trình mô tả các nhiệm vụ và chức năng kinhdoanh mà người dùng, người quản lý và nhân viên công nghệ thông tin cácthành viên thực hiện để đạt được kết quả cụ thể Các quy trình là nền tảngxây dựng của một hệ thống thông tin vì chúng đại diện cho các hoạt độngkinh doanh thực tế hàng ngày Để xây dựng một hệ thống thông tin thànhcông, nhà phân tích phải hiểu các quy trình kinh doanh và phân tích chúng
- Con người là những người quan tâm đến hệ thống thông tin được gọi là cácbên liên quan Các bên liên quan bao gồm nhóm quản lý chịu trách nhiệm về
hệ thống, người dùng (đôi khi được gọi là người dùng cuối) bên trong và bênngoài công ty, những người sẽ tương tác với hệ thống và các nhân viên côngnghệ thông tin, chẳng hạn như nhà phân tích hệ thống, lập trình viên và mạngquản trị viên phát triển và hỗ trợ hệ thống
1.1.1 Phương pháp tiếp cận phát triển hệ thống thông tin theo hướng đối tượng
Có nhiều cách tiếp cận để phát triển hệ thống thông tin, tuy nhiên trong khóaluận sẽ phân tích và thiết kế hệ thống theo phương pháp hướng đối tượng Chính vì
KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây dựng module tự động nhận dạng biển số xe
Trang 16KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
vậy, phần trình bày chi tiết dưới đây sẽ trình bày sâu về phương pháp tiếp cậnhướng đối tượng [1],[2]
Phương pháp hướng đối tượng tập trung vào 2 khía cạnh là dữ liệu và quytrình Tư tưởng chính của phương pháp là:
- Ánh xạ tương ứng các đối tượng ngoài đời thực của hệ thống thành các đốitượng bên trong của hệ thống thông tin cần xây dựng Với cách tiếp cận này,một hệ thống được chia tương ứng thành các phần nhỏ gọi là đối tượng Mỗiđối tượng được thiết kế đầy đủ cả dữ liệu và các hành động liên quan đến đốitượng đó
- Các đối tượng trong một hệ thống tương đối độc lập với nhau và được kếtnối để tạo thành một hệ thống thông qua các mối quan hệ và tương tác giữachúng Với cơ chế này, hệ thống dễ dàng hơn trong công việc kế thừa, nângcấp để đạt đạt được quy mô tùy ý
1.1.3 Vòng đời phát triển của hệ thống thông tin
Bất kì phương pháp tiếp cận hệ thống thông tin nào đều trải qua sự khởi đầu,triển khai, xây dựng, khai thác, bảo dưỡng và kết thúc, được gọi là vòng đời pháttriển (Software Development Life Cycle - SDLC) [2] Vòng đời phát triển hệ thốngthông tin gồm có 4 pha chính:
Hình 1.2: Vòng đời phát triển hệ thống thông tin
- Pha 1: Lựa chọn và lập kế hoạch hệ thống
• Lựa chọn và lập kế hoạch là giai đoạn đầu tiên trong quá trình phát triểnmột hệ thống thông tin Nhiệm vụ chính trong giai đoạn này là thu thập
Trang 17thông tin, tài liệu, nghiên cứu thực trạng nhằm làm rõ tình trạng hoạtđộng của hệ thống thông tin cũ trong hệ thống thực, từ đó đưa ra giảipháp xây dựng hệ thống thông tin mới.
• Đầu ra là một bản kế hoạch dự án cơ sở mô tả sơ bộ các thông tin ban đầucủa dự án, nếu bản kế hoạch được phê duyệt thì có thể tiến hành các giaiđoạn tiếp theo của dự án
- Pha 2: Phân tích hệ thống
• Dựa vào các dữ liệu, thông tin được thu thập ở giai đoạn 1, giai đoạn 2 sẽxác định các yêu cầu của hệ thống, nghiên cứu cấu trúc yêu cầu theo cácmối tương quan để tạo ra một bản mô tả các giải pháp thiết kế ban đầu.Sau đó, sẽ so sánh để đưa ra giải pháp tốt nhất cho thiết kế ban đầu saocho phù hợp các khía cạnh yêu cầu về kinh tế, pháp lý, vận hành, kĩ thuật
và thời gian
• Đầu ra của giai đoạn phân tích là một mô tả các giải pháp thay thế được
đề nghị bởi nhóm phân tích Khi đề nghị được chấp nhận ta có thể lập kếhoạch yêu cầu các phần cứng và phần mềm hệ thống cần thiết để xâydựng và vận hành hệ thống như đề xuất
- Pha 3: Thiết kế hệ thống
• Nhiệm vụ chuyển đổi từ bản đặc tả giải pháp yêu cầu của pha phân tíchthành bản đặc tả hệ thống logic và hệ thống vật lý Thiết kế tất cả cáckhía cạnh của hệ thống từ màn hình đầu vào, đầu ra, cơ sở dữ liệu cũngnhư các tiến trình xử lý bên trong của hệ thống
• Đầu ra của pha thiết kế là bản đặc tả hệ thống vật lý và được chuyển chocác nhà lập trình để bắt đầu xây dựng hệ thống
- Pha 4: Triển khai và vận hành hệ thống
Trong pha cuối cùng của SDLC đặc tả hệ thống được chuyển thành hệthống thực, sau đó được kiểm tra và đưa vào sử dụng Pha này bao gồm 2hoạt động chính:
• Triển khai hệ thống: bao gồm các công việc lập trình, kiểm thử và cài đặt
• Vận hành hệ thống: là hoạt động đảm bảo hệ thống hoạt động hiệu quảtheo yêu cầu ban đầu, bao gồm công việc chỉnh sửa các lỗi phát sinh khi
hệ thống phần mềm được triển khai trong thực tế và cải tiến phần mềm đểđáp ứng các nhu cầu mới nảy sinh của tổ chức
1.1 Ngôn ngữ Python
Khi xây dựng một hệ thống thông tin cần quan tâm ba vấn đề: quy trình, cơ sở
dữ liệu và ngôn ngữ lập trình Ngôn ngữ lập trình là công cụ hỗ trợ việc xây dựng từ
KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng Python xây dựng module tự động nhận dạng biển số xe
Trang 18KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
một thiết kế cụ thể chuyển đổi logic của chương trình thành các câu lệnh cụ thể màmáy tính có thể thực thi Mỗi bài toán lựa chọn môi trường và ngôn ngữ lập trìnhphù hợp sẽ tiết kiệm được nhiều thời gian và công sức Một trong những ngôn ngữđang phát triển mạnh mẽ và được nhiều nhà phát triển lựa chọn đó là Python
1.2.1 Giới th iệu Python
Hình 1.3: Logo Python
Python được phát triển bởi Guido van Rossum vào cuối những 80 và đầunhững 90 tại Viện Nghiên cứu Quốc gia về Toán học và Khoa học Máy tính ở HàLan
Python là một ngôn ngữ lập trình có nguồn gốc từ nhiều ngôn ngữ khác, baogồm ABC, Modula-3, C, C ++, Algol-68, SmallTalk, Unix shell và các ngôn ngữ
khác Cuốn A Python Book: Beginning Python, Advanced Python, and Python
Exercises đã định nghĩa rằng ii Python là một ngôn ngữ lập trình thông dịch (interpreted), bậc cao (high-level) và đa năng (general-purpose) ”
Tính đến năm 2020, Python là ngôn ngữ lập trình đứng thứ 4 được yêu thíchtheo Khảo sát dành cho nhà phát triển năm 2020 của Stack Overflow
Hình 1.4: Khảo sát dành cho nhà phát triển năm 2020 của Stack Overflow
Trang 19Triển khai Phiên bàn
móng Phiên bản 0.9.0 Phiên bán 2.0 3.7 Phiên bản
KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
để phù hợp với phiên bản mới
Trang 20- Dễ dàng lập trình(Simplicity)
Python là một ngôn ngữ rất thân thiện với nhà phát triển với những cú pháp rõ
ràng, trực quan, phù hợp với nhiều lĩnh vực Theo PYPL Popularity of
Programming Language, Python được bình chọn là ngôn ngữ lập trình phổ biến
Tren toàn thề gĩớĩ , thảng 5 năm 2021 SO vởi một năm trước:
Hình 1.7: Khảo sát PYPL Popularity of Programming Language
- Mã nguồn mở miễn phí( Free & OpenSource)
Python là một mã nguồn mở có nghĩa là bất kỳ ai cũng có thể tạo và đóng gópvào sự phát triển của nó Python có một diễn đàn trực tuyến, noi hàng nghìn lậptrình viên tập hợp hàng ngày để cải thiện ngôn ngữ Python miễn phí tải xuống và
sử dụng trong bất kỳ hệ điều hành nào, có thể là Windows, Mac hoặc Linux
- Tính di động( Portability)Python dễ dàng thay đổi, chuyển đổi mã Python qua các hầu hết tất cả các nềntảng như Windows, masOS, Linux
- Nhúng và mở rộng (Embeddable & Extensive)Python cũng là một ngôn ngữ tích hợp vì có thể dễ dàng tích hợp Python vớicác ngôn ngữ khác như C, C ++, v.v Đồng thời, Python cũng là một ngôn ngữthông dịch vì Python thực thi mã một dòng tại một thời điểm Không giống như cácngôn ngữ lập trình hướng đối tượng khác, không cần phải biên dịch mã Python, do
đó làm cho quá trình gỡ lỗi dễ dàng và hiệu quả hon nhiều Một ưu điểm khác củađiều này là khi thực thi, mã Python ngay lập tức được chuyển đổi thành một dạng
Trang 21KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
trung gian còn được gọi là mã byte, giúp dễ thực thi hơn và cũng tiết kiệm thời gianchạy về lâu dài
- Thư viện phong phú (Huge Libraries)
Python có một thư viện tiêu chuẩn lớn cung cấp một tập hợp các mô-đun vàchức năng phong phú, do đó không cần phải viết mã của riêng mình cho mọi thứ
Có rất nhiều thư viện hiện diện trong Python chẳng hạn như biểu thức chính quy,kiểm tra đơn vị, trình duyệt web, v.v
- Phương pháp tiếp cận hướng đối tượng( Object Orientation)
Một trong những khía cạnh quan trọng của Python là cách tiếp cận hướng đốitượng Python nhận ra khái niệm đóng gói lớp và đối tượng, do đó cho phép cácchương trình hoạt động hiệu quả trong thời gian dài
số tuyến tính, biến đổi Fourier, v.v
- OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầucho xử lý về thị giác máy tính, Machine Learning và xử lý ảnh OpenCVđươc viết bằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụngvới các ứng dụng liên quan đến thời gian thực
- Imutils là chức năng tiện lợi để thực hiện các chức năng xử lý hình ảnh cơbản như dịch, xoay, thay đổi kích thước, tạo khung, hiển thị hình ảnhMatplotlib, sắp xếp đường viền, phát hiện cạnh tiện lợi hơn so với OpenCV
- Python-tesseract là một công cụ nhận dạng ký tự quang học (OCR) dành choPython Nó sẽ nhận ra và đọc văn bản được nhúng trong hình ảnh
1.2 Tổng quan nhận dạng biển số xe
Trong quá trình nghiên cứu, tìm hiểu tài liệu thực tiễn liên quan đến nhận dạngbiển số xe, hiện nay có rất nhiều đề tài đi sâu vào lĩnh vực này, cụ thể như:
Trang 22KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Automatic License Plate Recognition System using Histogram GraphAlgorithm (2014) [6] Divyang Goswami &Mrs Rama Gaur sử dụng HistogramGraph Algorithm trong công cụ phần mềm Matlab.- phần mềm cung cấp môitrường tính toán số và lập trình Giải quyết được bài toán nhận dạng biển số xe tại
Ản Độ và phân đoạn xác định các kí tự riêng biệt mang lại kết quả nhận diện lên tới90%.Tuy nhiên bài toán chỉ phát triển cho các biển số ở Ản Độ và khi hình ảnhđược chụp từ một khoảng cách xác định Các yếu tố ánh sáng, màu sắc của xe, độnghiêng, độ sắc nét của hình ảnh là những vấn đề chưa giải quyết được ở đây
License Plate Detection and Recognition in Unconstrained Scenarios [7]S'ergio Montazzolli Silva & Cl'audio Rosito Jung(2018), đề tài nghiên cứu nhậndạng các biển số xe ở Brazil Bài nghiên cứu nhận dạng biển số xe sử dụng WPOD-NET và nhận dạng kí tự Optical Character Recognition (OCR) Bài toán đã giảiquyết các vấn đề về các hình ảnh biển số chụp chéo và nhận diện các kí tự bị lệchmạng lại một kết quả nhận diện khả quan lên tới 89,33%, nhược điểm phương phápchưa nhận diện được các kí tự giống nhau như số ‘1’ với ‘I’
Automatic License Plate Recognition System for Bangla License Plates usingConvolutional Neural Network (2019) [8] nghiên cứu nhận diện biển số ởBangladesh sử dung YOLO để nhận dạng biển số, huấn luyện dữ liệu và nhận dạng
kí tự Phương pháp nhận diện nhanh chóng với tỉ lệ chính xác gần như tuyệt đối99,5 %, tuy nhiên mô hình phụ thuộc sâu vào dữ liệu, chưa nhận dạng được đa dạngnhiều loại xe cần đào tạo đa dạng với nhiều dữ liệu thử nghiệm khác
Xây dựng ứng dụng Nhận dạng biển số xe ô tô sử dụng mã nguồn mở Opencv[9] của Ths Nguyễn Duy Linh và các sinh viên Trường Đại học Quảng Bình trongTạp chí Thông tin Khoa học & Công nghệ Quảng Bình - Số 1/2018, đã nghiên cứuứng dụng nhận dạng biển số xe sử dụng OpenCV kết hợp phương pháp SVM(Surport Vector Machine) để nhận diện kí tự Việc dùng thư viên OpenCV khiến tốc
độ xử lí tương đối nhanh so với các ngôn ngữ lập trình và công cụ khác và mang lạichi phí triển khai thấp Các hình ảnh xác định vùng biển số xe lên tới 90% và nhậndạng chính xác lên tới 89% Tuy nhiên, phương pháp nhận diện có độ chính xácnhận dạng phụ thuộc vào ánh sáng môi trường và nhận dạng kí tự chưa có tập mẫuhoàn chỉnh
Trang 23KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Trên cơ sở các bài toán nhận dạng biển số xe của các tác giả đi trước, Khóaluận sẽ tập trung xây dựng module nhận dạng biển số xe sử dụng OpenCV và nhậndiện kí tự bằng thư viên Python-tesseract
1.3 Kết thúc chương 1
Chương 1, khóa luận đã trình bày cơ sở lí luận về hệ thống thông tin ,ngôn ngữPython và tổng quan về các kết quả nghiên cứu về nhận dạng biển số xe.Những nộidung này sẽ là nền tảng để xây dựng sản phẩm của đề tài ở các chương tiếp theo, cụthể trong chương tiếp theo, ngoài việc khóa luận sẽ trình bày sâu hơn về các kỹthuật trong Python để nhận dạng ảnh con xây dựng module nhận dạng biển số xe sửdụng Python
Trang 24Hoạt động Tên hoạt động Mô tả
HDl Nạp ảnh vào hệ thống Đưa đường dẫn ảnh vào hệ thống
HĐ2 Điều chỉnh kích thước ảnh Đưa ảnh về một kích thước xác định
HĐ3 Chuyển ảnh về ảnh xám Hệ thống tiến hành đọc ảnh, đưa ảnh
về giá trị đen trắng biểu thị 1, 0HĐ4 Loại bỏ vùng không mong
muốn Lọc và giảm nhiễu những đối tượngảnh hưởng đến kết quả
HĐ5 Tìm cạnh biển số Vẽ các cạnh, đường nét của hình ảnh
HĐ6 Tìm vùng bao quanh biển số Tìm ra khung chứa biển số xe
HĐ7 Trích xuất biển số Hiển thị hình ảnh biển số
HĐ8 Nhận dạng kí tự Sử dụng thư viện Python nhận diệncác kí tự biển số.
Nhận dạng biển số xe là công nghệ ứng dụng nhận dạng ký tự nhằm chuyểnđổi hình ảnh biển số chụp được từ camera sang các ký tự dạng text trong hệ thốngphần mềm để lưu trữ, phân tích so sánh Nhận dạng biển số xe thực hiện qua cáchoạt động sau:
Bảng 2.1: Mô tả quy trình nhận dạng biển số xe
Trang 25KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 2.1: Quy trình nhận dạng biển số xe
2.2 Kĩ thuật nhận dạng trong Python:
Để thực hiện được mục tiêu nhận dạng biển số xe, dưới đây sẽ trình bày chitiết các kỹ thuật sử dụng trong Python
2.2.1 Tải và hiển thị ảnh
Ảnh có thể thu nhận qua máy ảnh màu hoặc trắng đen, máy quét ảnh, máycamera, v.v Ảnh sẽ được lưu trữ trong thư mục Để đọc ảnh và hiển thị ảnh trongPython ta dùng hàm imread và hàm imshow
Hàm imread sẽ đọc ảnh từ các đường dẫn thư mục hoặc các đường dẫn tươngđối và gán nó vào biến Nó cũng thể hiện chế độ đọc ảnh ta có thể lựa chọn theo ảnhxám hay ảnh màu
Hàm imshow là hàm giúp hiển thị ảnh đã được đọc lên màn hình
Kết quả minh họa:
Trang 26KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 2.2: Kết quả minh họa tải ảnh
2.2.2 Convert màu file ảnh
Một bức ảnh chứa rất nhiều màu sắc, trong mỗi bài toán khác nhau ta cần vậndụng những hệ màu khác nhau để tăng khả năng thành công của kết quả TrongPython sử dùng hàm cv2.cvtColor() để chuyển đổi hệ màu Dưới đây là một số hệmàu được sử dụng phổ biến:
- Hệ màu RGB phổ biến dùng trong máy ảnh, máy tính, điện thoại và nhiềuthiết bị kĩ thuật số khác nhau Nguyên lý cơ bản là kết hợp 3 màu sắc cơ bản
R (red - đỏ), B (blue - xanh dương), G (green - xanh lá) để biểu diễn tất cảcác màu sắc
Hình 2.3: Hệ màu RGB
- Hệ màu CMYK sử dụng phổ biến trong ngành công nghiệp in ấn Nguyên lý
cơ bản sử dụng 3 màu là C (Cyan: xanh), M (Magenta: hồng), và Y (Yellow:vàng) để biểu diễn các màu sắc khác nhau và sau khi kết hợp của 3 màu sẽtạo nên K (màu đen.)
Trang 27KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 2.4: Hệ màu CMYK
- Hệ màu HSV (còn gọi là HSB) là một cách tự nhiên hơn để mô tả màu sắc,
dựa trên 3 số liệu: H (Hue) Vùng màu, S (Saturation) Độ bão hòa màu, B(hay V): (Bright hay Value) Độ sáng Hệ màu này thường được biểu diễndưới dạng hình trụ hoặc hình nón Theo đó vòng theo vòng tròn từ 0 - 360 độ
là trường biểu diễn màu sắc (Hue) Màu đỏ tới màu xanh lục nằm trongkhoảng 0-120 độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ Từ 240-360
độ là từ màu đen tới lại màu đỏ
Hình 2.5: Hệ màu HSV
Trang 28KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Kết quả minh họa:
Hình 2.6: Kết quả minh họa convert màu ảnh
2.2.3 Resize ảnh
Thay đổi kích thước hình ảnh có nghĩa là thay đổi kích thước của nó, có thể làchiều rộng, chiều cao hoặc thay đổi cả hai Ngoài ra, tỷ lệ khung hình của hình ảnhgốc có thể được giữ nguyên trong hình ảnh đã thay đổi kích thước Hàm resize củaPython sẽ thực hiện điều đó
Kết quả minh họa: Ảnh gốc kích thước 472x303, Resize về kích thước 300x300:
Trang 29KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 2.7: Kết quả minh họa resize ảnh
2.2.4 Tìm cạnh
Trong hình ảnh, thường tồn tại nhiều các thành phần như: vùng trơn, góc/cạnh
và nhiễu Cạnh trong ảnh mang đặc trưng quan trọng, thường là thuộc đối tượngtrong ảnh Do đó, để phát hiện cạnh trong ảnh, giải thuật Canny là một trong nhữnggiải thuật phổ biến, nổi tiếng nhất trong xử lí ảnh Hàm Canny sẽ lọc các điểm màutrong khoảng giá trị ngưỡng để hiển thị
Trang 30KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Kết quả minh họa:
Hình 2.8: Kết quả minh họa tìm cạnh
2.2.5 Lọc hình ảnh
Một bức ảnh có rất nhiều những chi tiết, đôi khi bài toán không sử dụng cácchi tiết đó Để hạn chế điều đó, ta sử dụng giải pháp làm mờ và lọc nhiễu Làm mờ
là làm mịn hình ảnh, khử nhiễu là loại bỏ những đối tượng không nằm trong phạm
vi xác định Python hỗ trợ rất nhiều bộ lọc hình ảnh như: Gaussian Filter,medianBlur hay bilateralFilter
Bộ lọc bilateralFilter là một bộ lọc hiệu quả cao trong việc loại bỏ nhiễu mà vẫn giữlại được các đường viền (cạnh) trong ảnh
Trang 31KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Kết quả minh họa:
Hình 2.9: Kết quả minh họa lọc ảnh
2.2.6 Tìm Contours
Contours là tập các điểm liên tục tạo thành một đường cong và không có
khoảng hở trong đường cong đó Trong OpenCV, việc tìm một contours là việc tìmmột đối tượng có màu trắng trên nền đen Contours rất hữu ích trong phân tích hìnhdạng, phát hiện vật thể và nhận diện vật thể
Trang 32KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Kết quả minh họa:
Hình 2.10: Kết quả minh họa tìm contours
Trang 33KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
2.3 Xây dựng và thử nghiệm module nhận dạng biển số xe
2.3.1 Cài đặt môi trường
- Cài đặt Python: Truy cập trang web https://www.python.org/
Hình 2.12: Trang web Python
- Cài đặt Visual Studio Code: Truy cập https://code.visualstudio.com
Hình 2.13: Trang web Visual Studio Code
Trang 34KHÓA LUẬN TỐT NGHIỆP Phân tích thiết kế hệ thống trông gửi xe và ứng dụng
Python xây dựng module tự động nhận dạng biển số xe
Hình 2.14: Màn hình hoạt động Visual Studio Code
- Cài đặt thư viện hỗ trợ: Opencv, imutils, numpy, Pytesseract
Để cài đặt các thư viện, sử dụng lệnh pip install [thư viên] trên CommandPrompt và dùng lệnh pip list để kiểm tra các thư viện đã được cài đặt trên máy
Hình 2.15: Màn hình đã cài đặt thư viện
2.3.2 Dữ liệu thử nghiệm
Dữ liệu là các hình ảnh chứa biển số xe được thu thập từ nhiều nguồn khácnhau Dữ liệu gồm 50 hình ảnh biển số xe máy với kích thước trong khoảng giá trị
từ min_size=300, max_size =5000