Nhận diện biển số xe OpenCV trí tuệ nhân tạo, bằng lập trình winform C#
Nhóm 03 Trí Tuệ Nhân Tạo GVHD: Nguyễn Đình Hiển SVTH: - Tạ Thị Thu Thánh_43.01.103.041 - Siu Thu Ngân_43.01.103.026 - Trần Thịnh_43.01.103.043 - Huỳnh Thiện Toàn_42.01.103.073 Mục Lục CHƯƠNG 1: GIỚI THIỆU OPENCV .4 1.1 OPENCV LÀ GÌ? 1.2 ỨNG DỤNG CỦA OPENCV: 1.3 CHỨC NĂNG CỦA OPENCV: 1.4 MỘT SỐ HÀM THÔNG DỤNG: CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE 2.1 KHÁI NIỆM VỀ NHẬN DẠNG BIỂN SỐ XE 2.1.1 Khái niệm & ứng dụng 2.1.2 Phân loại biển số xe 2.2 MỘT SỐ HƯỚNG TIẾP CẬN GIẢI QUYẾT BÀI TOÁN PHÁT HIỆN BIỂN SỐ XE 11 2.2.1 Hướng tiếp cận phát triển vùng 11 2.2.2 Hướng tiếp cận dò biên biến đổi Hough 12 2.2.3 Hướng tiếp cận phát biên Heuristic .12 2.3 HƯỚNG GIẢI QUYẾT CỦA ĐỀ TÀI 13 CHƯƠNG 3: QUY TRÌNH NHẬN DẠNG BIỂN SỐ XE 20 3.1 MỘT SỐ KHAI NIỆM CƠ BẢN 20 3.1.1 Tổng quan ảnh 20 2.1.2 Phương pháp tách dò ngưỡng tự động 20 3.2 BIÊN VÀ CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN 21 3.2.1 Khái niệm biên 21 3.2.2 Các phương pháp phát biên 21 3.3 TỔNG QUAN VỀ TACH BIỂN SỐ 25 3.3.1 Tìm vùng màu trắng 26 2.3.2 Xác định vùng chứa biển số 26 3.3.3 Cắt vùng chứa biển số .28 3.4 PHÂN ĐOẠN KÍ TỰ 29 3.4.1 Tổng quan phân đoạn kí tự 29 3.4.2 Nhị phân biển số xe 29 3.4.3 Phân đoạn kí tự 30 3.4.4 Chương trình phân vùng kí tự 33 3.5 NHẬN DẠNG KÍ TỰ 34 2.5.1 Tổng quan nhận dạng kí tự 34 3.5.2 Công nghệ nhận dạng OCR 34 CHƯƠNG XÂY DỰNG DEMO CHƯƠNG TRÌNH 36 4.1 CẤU HÌNH HỆ THỐNG 36 4.1.1 Yêu cầu hệ thống .36 4.1.2 Chương trình cần thiết cho thiết kế 36 4.2 GIAO DIỆN CHƯƠNG TRÌNH 36 4.3 ƯU NHƯỢC ĐIỂM CỦA HỆ THỐNG 40 4.3.1 Ưu điểm .40 4.3.2 Nhược điểm .40 KẾT LUẬN 42 TÀI LIỆU THAM KHẢO 43 LỜI NÓI ĐẦU Ngày giới bên cạnh việc tăng trưởng kinh tế phát triển ngành khoa học kỹ thuật nói chung, mà ngành công nghiệp sản xuất phương tiện giao thông lại ngành có tốc độ phát triển cực nhanh Sự phát triển ấy, thể rõ ràng thơng qua hình ảnh phương tiện giao thông giới ngày tăng cao đa dạng Tuy nhiên, điều lại gây áp lực người quan cấp quản lý, làm cho công tác quản lý giám sát khó khăn Và vấn nạn Việt Nam Công tác quản lý phương tiện giao thơng nói chung quản lý ôtô, xe máy vô phức tạp…cũng công tác phát hiện, xử phạt hành vi vi phạm giao thông, chống trộm.…sẽ tốn nhiều thời gian công sức Để làm giảm lượng nhân lực việc cơng tác quản lý, kiểm sốt phương tiện giao thơng, giới nhanh chóng xây dựng hệ thống giám sát tự động phương tiện giao thông Và hệ thống giám sát lấy biển số xe mục tiêu giám sát Hệ thống sử dụng rộng rãi nhiên Việt Nam lĩnh vực mẻ Do em chọn làm đề tài “Tìm hiểu hệ thống nhận dạng biển số xe” với mục đích để tìm hiểu nhằm trợ giúp cho cơng tác giám sát, quản lý phương tiện giao thông cách hiệu quả, dễ dàng nhanh chóng CHƯƠNG 1: GIỚI THIỆU OPENCV 1.1 OpenCV gì? OpenCV viết tắt Open Source Computer Vision xem thư viện mã nguồn mở hàng đầu cho việc xử lý ảnh theo thời gian thực OpenCV (Thư viện hình ảnh máy tính nguồn mở) thư viện phần mềm máy tính học tập máy tính nguồn mở OpenCV xây dựng để cung cấp sở hạ tầng chung cho ứng dụng thị giác máy tính để đẩy nhanh việc sử dụng nhận thức máy sản phẩm thương mại Là sản phẩm cấp phép BSD, OpenCV giúp doanh nghiệp dễ dàng sử dụng sửa đổi Thư viện có 2500 thuật tốn tối ưu hóa, bao gồm tập hợp tồn diện thuật tốn máy học tầm nhìn máy tính tiên tiến đại Các thuật tốn sử dụng để phát nhận diện khuôn mặt, xác định đối tượng, phân loại hành động người video, theo dõi chuyển động camera, theo dõi đối tượng chuyển động, trích xuất mơ hình 3D đối tượng, tạo đám mây điểm 3D từ camera stereo, ghép ảnh lại với để tạo độ phân giải cao hình ảnh tồn cảnh, tìm hình ảnh tương tự từ sở liệu hình ảnh, xóa mắt đỏ khỏi hình ảnh chụp flash, theo dõi chuyển động mắt, nhận diện phong cảnh thiết lập điểm đánh dấu để che phủ thực tế mở rộng, v.v Thư viện sử dụng rộng rãi cơng ty, nhóm nghiên cứu quan phủ Cùng với cơng ty có uy tín Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota sử dụng thư viện, có nhiều cơng ty khởi nghiệp Applied Minds, VideoSurf Zeitera, sử dụng rộng rãi OpenCV Các ứng dụng triển khai OpenCV mở rộng phạm vi từ khâu hình ảnh đường phố, phát xâm nhập video giám sát Israel, giám sát thiết bị mỏ Trung Quốc, giúp robot điều hướng nhận đồ vật Willow Garage, phát tai nạn chết đuối châu Âu Tây Ban Nha New York, kiểm tra đường băng cho mảnh vỡ Thổ Nhĩ Kỳ, kiểm tra nhãn sản phẩm nhà máy khắp giới để phát khn mặt nhanh chóng Nhật Bản Nó có giao diện C ++, Python, Java MATLAB hỗ trợ Windows, Linux, Android Mac OS OpenCV dựa chủ yếu vào ứng dụng thị giác thời gian thực tận dụng hướng dẫn MMX SSE có sẵn Một giao diện CUDA OpenCL đầy đủ tính tích cực phát triển Có 500 thuật toán khoảng 10 lần so với nhiều chức soạn hỗ trợ thuật tốn OpenCV viết tự nhiên C ++ có giao diện templated hoạt động liền mạch với container STL 1.2 Ứng dụng OpenCV: - Giám sát tự động - Tìm kiểm, phục hồi, xử lý ảnh - Nhận dạng khuôn mặt, cử - Nhận dạng chữ viết, số, ký tự - Kiểm soát dân số trung quốc cách nhận diện khuôn mặt qua opencv - Kiểm soát bãi giữ xe - Nhận dạng ảnh - Xử lý hình ảnh - Phục hồi hình ảnh/video - Thực tế ảo - Các ứng dụng khác 1.3 Chức OpenCV: - Bộ công cụ hỗ trợ 2D 3D - Nhận diện khuôn mặt - Nhận diện cử - Nhận dạng chuyển động, đối tượng, hành vi - Tương tác người máy tính - Điều khiển robot - Hỗ trợ thực tế tăng cường 1.4 Một số hàm thơng dụng: • Hàm cvLoadImage() thực tải hình ảnh dựa vào tên file truyền vào IplImage * imp = cvLoadImage(“C:\\hinh.jpg”); • Hàm cvNameWindow() tạo cửa sổ hình để chứa hiển thị ảnh cvNameWindow(“My Window”); • Hàm cvShowImage() hiển thị hình ảnh lên cửa sổ vừa tạo thơng qua hàm cvShowImage(“My Window”, img); • Hàm chuyển đổi hệ màu: cvCvtColor(IplImage* src, IplImage* dst, int code); • Hàm chép ảnh: cvCopyImage(IplImage* scr, IplImage* dst); • Hàm hủy đối tượng: cvReleaseImage(IplImage** image); CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG BIẾN SỐ XE 2.1 Khái niệm nhận dạng biển số xe 2.1.1 Khái niệm & ứng dụng a) Khái niệm Hệ thống nhận dạng biển số xe hệ thống có khả phân tích hình ảnh xác định biển số xe, thông qua video, thiết bị ghi hình hình ảnh Sau xác định thông tin như: chủ sở hữu xe, tốc độ xe … v…v Phân loại ứng dụng nhận dạng biển số xe: Có nhiều cách thức khác để phân loại ứng dụng nhận dạng biển số xe Một cách đơn giản phân loại ứng dụng nhận dạng biển số xe thông qua mục đích sử dụng Có thể chia ứng dụng nhận dạng biển số xe thành hai loại sau: Loại 1: Giới hạn vùng nhìn: • Đầu vào: Ảnh thu trực tiếp từ thiết bị ghi nhận ảnh kỹ thuật số Ảnh ghi nhận thường giới hạn vùng có biển số xe • Ngun lý hoạt động: Các phương tiện giao thông phải chạy với tốc độ đủ chậm để máy ghi nhận hình ảnh thu ảnh vùng biển số xe • Ứng dụng: Những ứng dụng nhận dạng biển số xe loại thường ứng dung cac trạm kiểm soát, trạm thu phí, bãi gửi xe tự động, trạm gác cổng Loại 2: Không giới hạn vùng nhìn: • Đầu vào: Ảnh đầu vào thu từ thiết bị ghi hình tự động, khơng phụ thuộc vào góc độ, đối tượng xung quanh, ảnh khơng cần bắt buộc chụp vùng chứa biển số xe, mà ảnh tổng hợp chứa thêm đối tượng người, cây, đường phố , miễn vùng biển số xe phải đủ rõ để thực nhận dạng kí tự vùng • Ngun lý hoạt động: Do đặc tính khơng giới hạn vùng nhìn mà ảnh đầu vào thu từ thiết bị ghi hình (camera, máy ảnh…) Và đó, cơng việc dò tìm ảnh, để xác định vùng biển số xe Sau đó, thực tách vùng nhận dạng Cuối tùy thuộc vào mục đích sử dụng mà kết nhận dạng truyền hay lưu trữ để phục vụ nhu cầu khác • Ứng dụng: Vì khơng phụ thuộc vào hình ảnh thu nên cp Gradient Dựa vào cực đại hóa đạo hàm Theo định nghĩa, gradient vecto có thành phần biểu thị tốc độ thay đổi giá trị điểm ảnh theo hướng x y Các thành phần Gradient tính bởi: 𝜕𝑓(𝑥, 𝑦) 𝑓 (𝑥 + 𝑑𝑥, 𝑦) − 𝑓(𝑥, 𝑦) = 𝑓𝑥 ≈ 𝜕𝑥 𝑑𝑥 𝜕𝑓(𝑥, 𝑦) 𝑓 (𝑥, 𝑦 + 𝑑𝑦) − 𝑓 (𝑥, 𝑦) = 𝑓𝑥 ≈ 𝜕𝑦 𝑑𝑦 Đổi sang tọa độ cực x = rcos𝜃 ; y=rsin𝜃 Suy ra: 𝜕𝑓 𝜕𝑓 𝜕𝑓 = 𝑐𝑜𝑠𝜃 + 𝑠𝑖𝑛𝜃 𝜕𝑟 𝜕𝑥 𝜕𝑦 𝜕𝑓 𝜕𝑓 𝜕𝑓 (−𝑟𝑠𝑖𝑛𝜃) + = 𝑐𝑜𝑠𝜃 𝜕𝑟 𝜕𝑥 𝜕𝑦 21 Với dx khoảng cách điểm theo hướng x (khoảng cách tính số điểm) tương tự với dy Trên thực tế người ta hay dùng với dx= dy= Với ảnh liên tục f(x, y), đạo hàm riêng cho phép xác định vị trí cục theo hướng biên Thực vậy, gradient ảnh liên tục, biểu diễn hàm f(x,y), dọc theo r với góc , định nghĩa bởi: 𝑑𝑓 𝜕𝑓 𝑑𝑥 𝜕𝑓 𝑑𝑦 = + = 𝑓 (𝑥)𝑐𝑜𝑠𝜃 + 𝑓 (𝑦)𝑠𝑖𝑛𝜃 𝑑𝑟 𝜕𝑥 𝑑𝑟 𝜕𝑦 𝑑𝑟 Chú ý: Khi ta nói lấy đạo hàm ảnh thực mô xấp xỉ đạo hàm kỹ thuật nhân chập (phép cuộn) Do ảnh số tín hiệu rời rạc nên đạo hàm không tồn Kỹ thuật Gradient sử dụng cặp mặt nạ H1 H2 trực giao (theo hướng vng góc) Nếu định nghĩa g1, g2 gradient tương ứng theo hướng x y, biên độ gradient, ký hiệu g điểm (m,n) tính theo cơng thức: A0 = g(m,n) = √𝑔12 (𝑚, 𝑛) + 𝑔22 (𝑚, 𝑛) (1) 𝜃(𝑚, 𝑛) = 𝑡𝑎𝑛−1 (𝑔2 (𝑚, 𝑛)/𝑔1 (𝑚, 𝑛)) (2) Chú ý: để giảm tính tốn cơng thức (1) tính gần bởi: A0 = |g1(m,n)| + |g2(m,n)| Các toán tử đạo hàm áp dụng nhiều, ta xét số toán tử tiêu biểu: toán tử Robert, toán tử Sobel,… *)Kỹ thuật Robert: Với điểm ảnh I(x,y) I, đạo hàm theo x, theo y ký hiệu tương ứng gx, gy tính: 22 { 𝑔𝑥 = 𝐼(𝑥 + 1, 𝑦) − 𝐼(𝑥, 𝑦) 𝑔𝑦 = 𝐼 (𝑥, 𝑦 + 1) − 𝐼(𝑥, 𝑦) Điều tương đương với việc chập ảnh với mặt nạ H1 H2: 𝐻1 = [ 1 ] 𝐻2 = [ −1 0 ] −1 Q trình tính tốn thực qua bước: • Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦 • Bước 2: Tính √𝐼𝑥2 + 𝐼𝑦2 Từ ma trận √𝐼𝑥2 + 𝐼𝑦2 chọn cao thứ 2, thứ 3, chiếm đa số *)Kĩ thuật Sobel: Kĩ thuật sử dụng mặt nạ H1 H2: −1 𝐻1 = [−2 −1 0 2] −1 − − 𝐻2 = [ 0 0] Q trình tính tốn thực qua bước: • Bước 1: Tính 𝐼𝑥 = 𝐼 ⨂ 𝐻𝑥 𝐼𝑦 = 𝐼 ⨂ 𝐻𝑦 • Bước 2: Tính |𝐼 ⨂ 𝐻𝑥 | + |𝐼 ⨂ 𝐻𝑦 | *)Kĩ thuật PreWitt: Tương tự kĩ thuật Sobel, kĩ thuật PreWitt sử dụng ma trận mặt nạ nhân chập là: −1 𝐻1 = [−1 −1 0 1] −1 − − 𝐻2 = [ 0 0] 1 b) Kĩ thuật Laplace 23 TÀI LIỆU THAM KHẢO [1] Giáo trình “Ngơn ngữ Lập tr.nh C#” biên dịch tổng hợp từ: - Programming C#, Jesse Liberty, O’Reilly - C# in 21 Days, Bradley L.Jones, SAMS - Windows Forms Programming with C#, Erik Brown, Manning [2] http://www.emgu.com/ [3] Abbas M Al-Ghaili, Syamsiah Mashohor, Alyani Ismail, and Abdul Rahman Ramli, 2008 “A New Vertical Edge Detection Algorithm and its Application”, International Conference on Computer Engineering & Systems, ICCES 2008, pp.204209 [4] Tác giả mesa177, “License Plate Extraction, Processing, and Character Segmentation”: http://www.lebgeeks.com/forums/viewtopic.php?id=7786 [5] Bài viết tác giả Damiles: http://blog.damiles.com/2010/12/segmentation-andfeature-extraction-contours-and-blob-detection/ 43