ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI XÂY DỰNG ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE SINH VIÊN THỰC HIỆN VÕ THỊ MINH NGUYỆT LỚP 18IT2 GIẢNG VIÊN HƯỚN[.]
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN ĐỒ ÁN CƠ SỞ ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG NHẬN DẠNG BIỂN SỐ XE SINH VIÊN THỰC HIỆN: LỚP: VÕ THỊ MINH NGUYỆT 18IT2 GIẢNG VIÊN HƯỚNG DẪN: ThS NGUYỄN VĂN BÌNH Đà nẵng, tháng năm 2021 MỤC LỤC MỤC LỤC MỞ ĐẦU LỜI CẢM ƠN CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu tổng quan đề tài CHƯƠNG 2: CƠ SỞ LÝ THUYẾT .2 2.3 Xử lí ảnh 2.3.2 Các bước hệ thống xử lí ảnh .6 2.5.1 OpenCV gì? 10 2.5.1 Thư viện Numpys .12 CHƯƠNG 3: KHẢO SÁT THỰC TRẠNG .14 3.1 Phần mềm nhận dạng biển số xe tự động VietParking.vn 14 3.2 Phần mềm nhận dạng biển số xe STM01 15 CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH .17 4.1 Xây dựng ý tưởng tổng quát 17 4.2 Xây dựng mã nguồn 17 4.2.1 Chuyển ảnh sang ảnh nhị phân 18 4.2.4 Đánh dấu đối tượng tách biển số xe 20 4.2.2 Nhận đọc lại văn 21 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 23 5.1.2 Hạn chế .24 5.1 Hướng phát triển 25 5.2 Kết luận chung 26 TÀI LIỆU THAM KHẢO 27 MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ khoa học công nghệ, Công nghệ Thông tin ngành có vị dẫn đầu có vai trị lớn phát triển chung Các ứng dụng công nghệ thông tin áp dụng lĩnh vực nghiên cứu khoa học lĩnh vực đời sống Là phần Cơng nghệ Thơng tin, Cơng nghệ AI có phát triển mạnh mẽ phổ biến nhanh lợi ích mà mang lại cho cộng đồng lớn Bằng việc lựa chọn thực đề tài “Xây dựng ứng dụng nhận dạng biển số xe”, em muốn tìm hiểu đưa giải pháp tốt nhằm giải công việc ghi lại biển số xe cách tự động nhanh chống, phục vụ phần nhỏ việc quản lý giao thông giám sát xe bãi giữ xe cách thuận tiện Ứng dụng mang lại nhiều lợi ích như: giảm thời gian ghi nhớ viết lại biển số xe, dễ dàng thu thập kiểm soát xe bãi giữ xe tiện lợi hơn, v v Nội dung đề tài gồm chương: Chương : Tổng quan đề tài Chương 2: Cơ sở lý thuyết Chương : Khảo sát thực trạng Chương 4: Thiết kế xây dựng chương trình Chương 5: Kết luận LỜI CẢM ƠN Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc tới thầy cô giáo trường Đại học Công nghệ thông tin truyền thơng Việt Hàn nói chung thầy giáo khoa Khoa học máy tính nói riêng tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt thời gian học vừa qua Đặc biệt em xin gửi lời cảm ơn đến thầy giáo Nguyễn Văn Bình tận tình giúp đỡ, trực tiếp bảo, huớng dẫn em suốt trình thực học phần Đồ án Trong thời gian làm việc, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà cịn học tập tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu Tuy nhiên, với thời gian kiến thức có hạn, báo có nhiều hạn chế sai sót, em mong nhận lời góp ý chân thành thầy giáo bạn Em xin bày tỏ lòng biết ơn sâu sắc đến với thầy bạn giúp em hoàn thành nội dung báo cáo Một lần nữa, em xin chân thành cảm ơn.! Sinh viên Võ Thị Minh Nguyệt DANH MỤC CÁC HÌNH ẢNH Hình 1: Cơng nghệ AI Hình 2: Ứng dụng Python Hình 3: Quá trình xử lý ảnh Hình Các bước xử lý ảnh Hình Ví dụ ảnh màu Hình Ảnh màu biến đổi thành ảnh xám 10 Hình OpenCv Python 11 Hình Sơ đồ bước thực 17 Hình Hình ảnh góc ban đầu .18 Hình 10 Đánh dấu đối tượng khung màu xanh 20 Hình 11 Ảnh cắt từ khung đánh dấu 21 Hình 12 Kết dự án 23 Hình 13 Hình ảnh bị nhỏ khơng nhận dạng .24 CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Giới thiệu tổng quan đề tài Trong thời đại ngày việc người làm máy móc làm Đó nhờ người lập trình viên biến máy tính ngoại vi trở thành hệ thống thơng minh thực cơng việc Đơn giản cơng việc gửi xe, vài năm trước đến bãi gửi xe thấy tất xe phải nhân viên coi xe gi giấy, việc vô bất tiện nhiều rủi ro giấy dễ bị hư hao, rách dính nước…Không việc ghi giấy tránh khỏi sai sót người nhân viên coi xe thống tập trung ghi sai, thời gian Nhưng khơng cịn vấn đề có cơng nghệ nhận diện biển số xe thẻ từ công việc gồm giai đoạn Lấy hình ảnh có chứa biển số xe, xử lý ảnh để lấy đoạn mã số ghi biển số, cuối lưu chúng vào thẻ Trong giai đoạn quan trọng thu thập đoạn mã biển số xe từ hình ảnh thu Trong đề tài em trình bày phương pháp để nhận diện đoạn mã 1.2 Mục tiêu Phần mềm có khả phân tích biển số xe từ hình ảnh chụp hay hình ảnh từ camera thu lại nhằm phục vụ việc quản lý vi phạm giao thơng hay chống trộm… Trong q trình đề tài em đề mục tiêu chính: - Có kiến thức lập trình Python Tìm hiểu thư viện OpenCV qua ứng dụng nhận diện biển số xe cách tương đối xác CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Trí tuệ nhân tạo gì? Trí tuệ nhân tạo hay trí thơng minh nhân tạo (Artificial intelligence – viết tắt AI) ngành thuộc lĩnh vực khoa học máy tính (Computer science) Là trí tuệ người lập trình tạo nên với mục tiêu giúp máy tính tự động hóa hành vi thơng minh người Trí tuệ nhân tạo khác với việc lập trình logic ngơn ngữ lập trình việc ứng dụng hệ thống học máy (machine learning) để mô trí tuệ người xử lý mà người làm tốt máy tính Cụ thể, trí tuệ nhân tạo giúp máy tính có trí tuệ người như: biết suy nghĩ lập luận để giải vấn đề, biết giao tiếp hiểu ngơn ngữ, tiếng Có loại trí tuệ nhân tạo? Công nghệ AI chia làm loại chính: - Loại 1: Cơng nghệ AI phản ứng Cơng nghệ AI phản ứng có khả phân tích động thái khả thi đối thủ, từ đó, đưa giải pháp tối ưu Một ví dụ điển hình cơng nghệ AI phản ứng Deep Blue Đây chương trình chơi cờ vua tự động, tạo IBM, với khả xác định nước cờ đồng thời dự đoán bước đối thủ Thơng qua đó, Deep Blue đưa nước thích hợp - Loại 2: Cơng nghệ AI với nhớ hạn chế Đặc điểm công nghệ AI với nhớ hạn chế khả sử dụng kinh nghiệm khứ để đưa định tương lai Công nghệ AI thường kết hợp với cảm biến môi trường xung quanh nhằm mục đích dự đốn trường hợp xảy đưa định tốt cho thiết bị Ví dụ xe khơng người lái, nhiều cảm biến trang bị xung quanh xe đầu xe để tính tốn khoảng cách với xe phía trước, cơng nghệ AI dự đốn khả xảy va chạm, từ điều chỉnh tốc độ xe phù hợp để giữ an toàn cho xe - Loại 3: Lý thuyết trí tuệ nhân tạo Cơng nghệ AI học hỏi tự suy nghĩ, sau áp dụng học để thực việc cụ thể Hiện nay, công nghệ AI chưa trở thành phương án khả thi - Loại 4: Tự nhận thức Cơng nghệ AI có khả tự nhận thức thân, có ý thức hành xử người Thậm chí, chúng cịn bộc lộ cảm xúc hiểu cảm xúc người Đây xem bước phát triển cao công nghệ AI đến thời điểm tại, cơng nghệ chưa khả thi Hình 1: Công nghệ AI 2.2 Giới thiệu ngôn ngữ Python Python ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu lên ngơn ngữ lập trình nhập môn tố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 sử dụng chế cấp phát nhớ tự động Python có cấu trúc liệu cấp cao mạnh mẽ cách tiếp cận đơn giản hiệu lập trình hướng đối tượng Cú pháp lệnh Python điểm cộng vơ lớn rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngơn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết tảng Tính Python - Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp đơn giản, rõ ràng Nó dễ đọc viết nhiều so sánh với ngơn ngữ lập trình khác 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 giải pháp cú pháp - Miễn phí, mã nguồn mở: Bạn tự sử dụng phân phối Python, chí dùng cho mục đích thương mại Vì mã nguồn mở, bạn khơng sử dụng phần mềm, chương trình viết Python mà cịn thay đổi mã nguồn Python có cộng đồng rộng lớn, khơng ngừng cải thiện lần cập nhật - Khả di chuyển: Các chương trình Python di chuyển từ tảng sang tảng khác chạy mà khơng có thay đổi Nó chạy liền mạch hầu hết tất tảng Windows, macOS, Linux - Khả mở rộng nhúng: Giả sử ứng dụng đòi hỏi phức tạp lớn, bạn dễ dàng kết hợp phần code C, C++ ngơn ngữ khác (có thể gọi từ C) vào code Python Điều cung cấp cho ứng dụng bạn tính tốt khả scripting mà ngơn ngữ lập trình khác khó làm - Ngôn ngữ thông dịch cấp cao: Không giống C/C++, với Python, bạn lo lắng nhiệm vụ khó khăn quản lý nhớ, dọn dẹp liệu vô nghĩa, Khi chạy code Python, tự động chuyển đổi code sang ngơn ngữ máy tính hiểu Bạn khơng cần lo lắng hoạt động cấp thấp • Thư viện tiêu chuẩn lớn để giải tác vụ phổ biến: Python có số lượng lớn thư viện tiêu chuẩn giúp cho cơng việc lập trình bạn trở nên dễ thở nhiều, đơn giản khơng phải tự viết tất code Ví dụ: Bạn cần kết nối sở liệu MySQL Web server? Bạn nhập thư viện MySQLdb sử dụng Những thư viện kiểm tra kỹ lưỡng sử dụng CHƯƠNG 3: KHẢO SÁT THỰC TRẠNG Hiện với phát triển CNTT mạng thông tin, việc xây dựng hệ thống tự động hóa quản lý, điều hành phương tiện giao thông ứng dụng rộng rãi như: bãi parking tự động, quản lý phương tiện vi phạm giao thơng, tự động hóa quản lý phương tiện kết hợp với hệ thống tự động để quản lý điều hành sản xuất 3.1 Phần mềm nhận dạng biển số xe tự động VietParking.vn a, Lợi ích mang lại từ ứng dụng Đối với chủ xe: Bảo vệ tài sản phương tiện: quy trình quản lý khép kín, hệ thống thơng minh đại lưu trữ hình ảnh, thơng tin xe vào phải với biển số đăng ký Trả phí có lưu lại thơng tin rõ ràng, xác Tránh xảy mâu thuẫn Không tốn thời gian chờ đợi xe vào bãi bãi Các thông tin chủ xe bảo mật Tránh bị kẻ gian lợi dụng lấy cắp thông tin để lấy cắp xe Đối với ban quản lý: Tiết kiệm chi phí quản lý với số lượng xe lớn Tiết kiệm chi phí thuê nhân viên bảo vệ Hệ thống làm việc thay cho người đến 80% Vì vậy, cần bảo vệ quản lý khoảng 10.000 xe Quản lý doanh thu chặt chẽ, tránh thất thoát Truy Xuất liệu thông tin xe, biển số xe, doanh thu theo thời gian nhanh Thể bãi giữ xe văn minh, lịch sự, đại mắt khách hàng b, Các thiết bị hệ thống Máy tính kiểm sốt Máy tính để bàn: thiết bị quan trọng hệ thống nhận dạng biển số xe Dùng để cài đặt phần mềm quản lý xe vào cổng, lưu lại thông tin Đồng thời kết nối với thiết bị khác để hệ thống hoạt động theo nhu cầu Barrier tự động 14 Barrier tự động thiết bị cơng nghệ đại làm việc hồn to Phần mềm nhận dạng biển số xe: phần quan trọng hệ thống Nếu phần mềm không ổn định, chưa sử dụng nhiều điều kiện khu vực khác thường xảy tình trạng Phần mềm nhận dạng phần quan trọng hệ thống Tuy nhiên phần mềm cịn có số nhược điểm cần khắc phục sau: + Hệ thống bị đơ, không hoạt động + Phần mềm báo lỗi liên tục + Khả tách TEST từ biển số để so sánh liệu không chuẩn xác + Khi hoạt động với số lượng lượt xe vào lớn, liên tục lúc xảy tượng thiết bị liên quan không truyền liệu máy chủ để xử lý 3.2 Phần mềm nhận dạng biển số xe STM01 Tính bật Phần mềm có tính bật sau: - Tích hợp cơng nghệ nhận dạng biển số xe giới Việt Nam với độ xác nhận dạng lớn 95% thời gian nhận dạng nhanh (50-100ms với ảnh cỡ 640×480) bắt vi phạm xe với vận tốc 80km/h - Phân tích đặc điểm loại biển số xe Việt Nam để tích hợp cơng nghệ nhận dạng - Tích hợp cơng nghệ phân tích ảnh để xác định tín hiệu đèn xanh, đèn đỏ ứng dụng quản lý giám sát vi phạm vượt đèn đỏ - Tích hợp cơng nghệ phát chuyển động - Tích hợp cơng nghệ tìm kiếm, đối chiếu linh hoạt tối ưu ứng dụng phát biển số đen, phát yêu cầu độ xác nhận dạng lớn 98.5% - Tích hợp cơng nghệ web server cho phép người quản lý tìm kiếm, thiết lập báo cáo, in biên bản, kiểm tra hoạt động hệ thống, …thông qua mạng nội internet 15 - Tích hợp chế giao tiếp Client-Server, cho phép phần mềm bắt tay, giao tiếp, gửi thông tin qua lại hai chiều với nhiều phần mềm khác Ứng dụng: Phần mềm ứng dụng cho: - Ứng dụng thành công quản lý vi phạm giao thơng Phịng cảnh sát giao thơng tỉnh Kiên Giang quản lý phương tiện tự động trạm cân xi măng Hoàng Thạch - Sau thời gian lắp đặt hoạt động thành phố Rạch Giá tỉnh Kiên Giang, hệ thống đưa vào ứng dụng tỉnh, thành phố khác toàn quốc Đồng Nai, Quảng Nam, Nghệ An … 16 CHƯƠNG 4: 4.1 THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH Xây dựng ý tưởng tổng quát • Chuyển ảnh màu đưa vào ảnh xám • Dựa vào thuật tốn GrabCut để thực việc khai thác ảnh nền, tách hình ảnh chứa nọi dung cần xác định • Vẽ hình chữ nhật xung quanh vùng tiền cảnh Tìm hiểu đề tài, Tải thư viện Hoàn thành lên ý tưởng xây cần thiết, code chương trình dựng chương trình chương trình Hình Sơ đồ bước thực 4.2 Xây dựng mã nguồn Xây dựng mã nguồn code phần mềm Pycharm, ta sử dụng thư viện OpenCv Numpy để thực Dưới bước thực để code chương trình: 4.2.1 Chọn ảnh, ảnh, chuyển ảnh xám Sử dụng hàm imread để chọn ảnh hàm imshow để ảnh 17 Sử dụng lệnh cvtColor(source, mode) cho phép chuyển đổi ảnh màu source sang ảnh xám độ chuyển màu mode.COLOR_BGR2GRAY chế độ cho phép chuyển từ ảnh màu lưu format BGR sang ảnh xám Hình Hình ảnh góc ban đầu 4.2.1 Chuyển ảnh sang ảnh nhị phân Giải thuật Adaptive Thresholding lựa chọn ngưỡng (threshold) động vùng lân cận (neighborhood) Cụ thể giải thuật làm sau: • Đối với pixel ảnh, ta xét vùng ảnh có blockSize x blockSize (blockSize số lẻ) với pixel xét trung tâm vùng ảnh • Các mức sáng vùng ảnh blockSize x blockSize Ta có giá trị ngưỡng (đối với phương pháp “cv2.ADAPTIVE_THRESH_GAUSSIAN_C”) giá trị trung bình M (đối với phương pháp (“cv2.ADAPTIVE_THRESH_MEAN_C”) • Như độ tốt Adaptive Thresholding phụ thuộc vào tham số: 18 o adaptiveMethod: cv2.ADAPTIVE_THRESH_GAUSSIAN_C o blockSize: kích thước vùng lân cận o C: số mà ta trừ (C số dương, số âm hay 0) 4.2.3 Khoanh vùng nhận diện biển số xe Contour đơn giản đường cong khép kín biểu diễn danh sách điểm Tập hợp điểm có màu sác hay cường độ sáng Contours có nhiều ứng dụng thực tế xử lý ảnh, đặc biệt khoanh vùng nhận diện vật thể Mỗi ảnh có nhiều contours Trong OpenCV, contour hoạt động ảnh đơn kênh, hiệu ảnh nhị phân Việc tìm kiếm contours OpenCV đơn giản hàm findContours() Hàm đưa danh sách contours tìm được, với contour danh sách tọa độ điểm Những cần làm sau tìm Contours kiểm tra xem khu vực đường bao lớn giá trị diện tích hình chữ nhật (largest_rectangle), khơng phải đường viền nhỏ tránh Sử dụng hàm cv2.arcLength() để tìm chu vi đường viền Sử dụng hàm cv2.approxPolyDP() để tìm xấp xỉ đường viền Khu vực viền cho hàm cv2.contourArea() 19