Để giảm tải cho các công việc như thu tiền, bảo hiểm xe, tìm xe cộ trong bãi đỗ xe, trên thế giới đã phát triển công nghệ giám sát tự động đối với các phương tiện giao thông, chính nhờ t
CƠ SỞ LÝ THUY Ế T
AI (Artificial Intelligence)
Trí tuệ nhân tạo là dạng trí tuệ được biểu hiện ở máy móc, không giống như những dạng trí tuệ tự nhiên ở con người hay động vật Thông thường cụm từ “trí tuệ nhân tạo” sẽ được hiểu như máy móc có khả năng bắt chước hành vi và nhận thức của con người như việc học tập hay xử lý vấn đề Trong vài năm trở lại đây, AI thật sự bùng nổ, đặc biệt là từ năm 2015 Phần lớn trong số đó liên quan đến những tiện ích sẵn có của GPU khiến cho việc xử lý song song nhanh, rẻ và mạnh mẽ hơn
Bên trong AI bao gồm hai khối nhỏ là Máy học (Machine learning) và Học sâu (Deep learning)
Hình 1.1 Các lớp trong AI
Machine Learning
Machine learning là một lĩnh vực sử dụng các thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng Một số ứng dụng có thể kể đến như xử lý hình ảnh (gắn thẻ, nhận diện kí tự, ô tô tự lái), phân tích văn bản (lọc mail spam, phân tích ngữ nghĩa và khai thác thông tin),
Về cách hoạt động của Machine learning nói nôm na ta cần một tập dữ liệu huấn luyện bao gồm nhiều mẫu huấn luyện Mỗi mẫu huấn luyện sẽ là một thể hiện của bài toán (có đầu vào và lời giải) Machine learning sẽ học từ các thể hiện đó để tìm ra lời giải phù hợp với từng đầu vào mới Nó giống như khi dạy một đứa trẻ cách tâng cầu, ta sẽ tâng cầu vài lần cho đứa trẻ quan sát Sau đó đứa trẻ sẽ bắt đầu học để tự tâng cầu Trong đề tài đồ án này, em sẽ đưa vào tập dữ liệu mẫu là hình ảnh các chữ số, ký tự của biển số Việt Nam đã được gắn nhãn là một mã ASCII tương ứng để máy tự học
Machine Learning có nhiều thuật toán khác nhau nhưng nổi bật nhất là hai thuật toán Học có giám sát (Supervised learning) và Học không giám sát (Unsupervised learning)
Hình 1.2 Phân loại Machine Learning
Là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp (input, outcome) đã biết từ trước Cặp dữ liệu này còn được gọi là (data, label), tức (dữ liệu, nhãn) Ví dụ như thuật toán dò các khuôn mặt trong một bức ảnh đã được phát triển từ rất lâu Thời gian đầu, Facebook sử dụng thuật toán này để chỉ ra các khuôn mặt trong một bức ảnh và yêu cầu người dùng tag friends- tức gán nhãn cho mỗi khuôn mặt Số lượng cặp dữ liệu (khuôn mặt, tên người) càng lớn, độ chính xác ở những lần tự động tag tiếp theo sẽ càng lớn
Thuật toán học có giám sát lại tiếp tục được chia ra hai phần nhỏ gồm bài toán phân loại (Classification) khi các nhãn của dữ liệu đầu vào chia thành hữu hạn các nhóm và bài toán hồi quy (Regression) khi nhãn không được chia thành các nhóm mà là một giá trị thực cụ thể Ví dụ: một cô gái x tuổi, cao y m, thu nhập hàng tháng z triệu đồng thì sẽ kết hôn khi nào?
Trong thuật toán này, chúng ta không biết được đầu ra hay nhãn mà chỉ có dữ liệu đầu vào Thuật toán học không giám sát sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán
Bao gồm hai loại chính: Phân nhóm (clustering) toàn bộ dữ liệuđầu vào thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm ví dụ như chia nhóm khách hàng dựa trên hành vi mua hàng, độ tuổi, giới tính của họ Còn lại là bài toán kết hợp (Association) được dùng khi ta muốn khám phá ra một quy luật nào đó dựa trên tập dữ liệu cho trước như những khách hàng mua laptop thường có xu hướng mua thêm con chuột hay chó thường trung thành với chủ hơn mèo.
Khái quát v ề x ử lý ả nh và OpenCV
Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này Hai nhiệm vụ cơ bản của quá trình xử lý ảnh là nâng cao chất lượng thông tin hình ảnh và xử lý số liệu cung cấp cho các quá trình khác trong đó có việc ứng dụng thị giác vào điều khiển.
Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng số hoặc tương tự) gửi đến máy tính Dữ liệu ảnh được lưu trữ ở định dạng phù hợp với quá trình xử lý Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnh nhằm thay đổi cấu trúc ảnh phù hợp với các ứng dụng khác nhau
- Chuyển ảnh màu thành ảnh xám
- Lược đồ xám của ảnh (Histogram)
- Các bộ lọc không gian
OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, 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ụng với các ứng dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần Opencv có rất nhiều ứng dụng như:
- Phục hồi hình ảnh/video
T ổ ng quan v ề nh ậ n d ạ ng
Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó và gán cho chúng vào một lớp (gán cho đối tượng một tên gọi) dựa theo những quy luật và các mẫu chuẩn Quá trình nhận dạng dựa vào những mẩu học biết trước gọi là nhận dạng có thầy hay học có thầy (supervised learning); trong trường hợp ngược lại gọi là học không có thầy (non supervised learning) Chúng ta sẽ lần lượt giới thiệu các khái niệm này
1.4.1.Không gian biểu diễn đối tượng, không gian diễn dịch
*) Không gian biểu diễn đối tượng
Các đối tượng khi quan sát hay thu thập được, thường được biểu diễn bởi tập các đặc trưng hay đặc tính Người ta thường phân các đặc trưng theo các loại như: đặc trưng tôpô, đặc trưng hình học và đặc trưng chức năng Việc biểu diễn ảnh theo đặc trưng nào là phụ thuộc vào ứng dụng tiếp theo Ở đây ta đưa ra một cách hình thức việc biểu diễn các đối tượng Giả sử đối tượng X (ảnh, chữ viết, dấu vân tay, v ,v) được biểu diễn bởi n thành phần (n đặc trưng): X = {x 1 , x2, , xn}; mỗi xi biểu diễn một đặc tính Không gian biểu diễn đối tượng thường gọi tắt là không gian đối tượng X được định nghĩa:
X = {X1, X2, , Xm} trong đó mỗi Xi biểu diễn một đối tượng Không gian này có thể là vô hạn Để tiện xem xét chúng ta chỉ xét tập X là hữu hạn
Không gian diễn dịch là tập các tên gọi của đối tượng Kết thúc quá trình nhận dạng ta xác định được tên gọi cho các đối tượng trong tập không gian đối tượng hay nói là đã nhận dạng được đối tượng Một cách hình thức gọi Ω là tập tên đối tượng: Ω = {w 1 , w2, ,wk} với wi, i = 1, 2, , k là tên các đối tượng
Quá trình nhận dạng đối tượng f là một ánh xạ f: X -> Ω với f là tập các quy luật để xác định một phần tử trong X ứng với một phần tử trong Ω Nếu tập các quy luật và tập tên các đối tượng là biết trước như trong nhận dạng chữ viết (có 26 lớp từ A đến Z), người ta gọi là nhận dạng có thầy Trường hợp thứ hai là nhận dạng không có thầy Đương nhiên trong trường hợp này việc nhận dạng có khó khăn hơn
1.4.2.Mô hình và bản chất của quá trình nhận dạng
Việc chọn lựa một quá trình nhận dạng có liên quan mật thiết đến kiểu mô tả mà người ta sử dụng để đặc tả đối tượng Trong nhận dạng, người ta phân chia làm 2 họ lớn:
- Họ mô tả theo tham số
- Họ mô tả theo cấu trúc
Cách mô tả được lựa chọn sẽ xác định mô hình của đối tượng Như vậy, chúng ta sẽ có 2 loại mô hình: mô hình theo tham số và mô hình cấu trúc
Mô hình tham số: sử dụng một vectơ để đặc tả đối tượng Mỗi phần tử của vectơ mô tả một đặc tính của đối tượng Thí dụ như trong các đặc trưng chức năng, người ta sử dụng các hàm cơ sở trực giao để biểu diễn Và như vậy ảnh sẽ được biểu diễn bởi một chuỗi các hàm trực giao Giả sử C là đường bao của ảnh và C(i,j) là điểm thứ i trên đường bao, i = 1, 2, , N (đường bao gồm N điểm)
Giả sử tiếp : x0 = xi y0 = yi là toạ độ tâm điểm Như vậy, moment trung tâm bậc p, q của đường bao là: μ pq =(xi-x0) p (yi-y0) q
Vectơ tham số trong trường hợp này chính là các moment μ ij với i=1, 2, ,p và j=1, 2, ,q Còn trong số các đặc trưng hình học, người ta hay sử dụng chu tuyến , đường bao, diện tích và tỉ lệ T = 4πS/p 2 , với S là diện tích, p là chu tuyến
Việc lựa chọn phương pháp biểu diễn sẽ làm đơn giản cách xây dựng Tuy nhiên, việc lựa chọn đặc trưng nào là hoàn toàn phụ thuộc vào ứng dụng Thí dụ , trong nhận dạng chữ (sẽ trình bày sau), các tham số là các dấu hiệu:
- số điểm chạc ba, chạc tư,
- số điểm kết thúc, chẳng hạn với chữ t có 4 điểm kết thúc, 1 điểm chạc tư,
Mô hình cấu trúc :Cách tiếp cận của mô hình này dựa vào việc mô tả đối tượng nhờ một số khái niệm biểu thị các đối tượng cơ sở trong ngôn ngữ tự nhiên Để mô tả đối tượng, người ta dùng một số dạng nguyên thuỷ như đoạn thẳng, cung, v, ,v Chẳng hạn một hình chữ nhật được định nghĩa gồm 4 đoạn thẳng vuông góc với nhau từng đôi một Trong mô hình này người ta sử dụng một bộ ký hiệu kết thúc Vt, một bộ ký hiệu không kết thúc gọilà Vn Ngoài ra có dùng một tập các luật sản xuất để mô tả cách xây dựng các đối tượng phù hợp dựa trên các đối tượng đơn giản hơn hoặc đối tượng nguyên thuỷ (tập Vt) Trong cách tiếp cận này, ta chấp nhận một khẳng định là: cấu trúc một dạng là kết quả của việc áp dụng luật sản xuất theo theo những nguyên tắc xác định bắt đầu từ một dạng gốc ban đầu Một cách hình thức, ta có thể coi mô hình này tương đương một văn phạm G = (Vt, Vn, P, S) với:
- Vt là bộ ký hiệu kết thúc,
- Vn là bộ ký hiệu không kết thúc,
- S là dạng (ký hiệu bắt đầu)
1.4.2.2 Bản chất của quá trình nhận dạng
Quá trình nhận dạng gồm 3 giai đoạn chính:
- Lựa chọn mô hình biểu diễn đối tượng
- Lựa chọn luật ra quyết định (phương pháp nhận dạng) và suy diễn quá trình học
Khi mô hình biểu diễn đối tượng đã được xác định, có thể là định lượng (mô hình tham số) hay định tính (mô hình cấu trúc), quá trình nhận dạng chuyển sang giai đoạn học Học là giai đoạn rất quan trọng Thao tác học nhằm cải thiện, điều chỉnh việc phân hoạch tập đối tượng thành các lớp
Việc nhận dạng chính là tìm ra quy luật và các thuật toán để có thể gán đối tượng vào một lớp hay nói một cách khác gán cho đối tượng một tên
Học có giám sát (supervised learning)
Kỹ thuật phân loại nhờ kiến thức biết trước gọi là học có thầy Đặc điểm cơ bản của kỹ thuật này là người ta có một thư viện các mẫu chuẩn Mẫu cần nhận dạng sẽ được đem sánh với mẫu chuẩn để xem nó thuộc loại nào Thí dụ như trong một ảnh viễn thám, người ta muốn phân biệt một cánh đồng lúa, một cánh rừng hay một vùng đất hoang mà đã có các miêu tả về các đối tượng đó Vấn đề chủ yếu là thiết kế một hệ thống để có thể đối sánh đối tượng trong ảnh với mẫu chuẩn và quyết định gán cho chúng vào một lớp Việc đối sánh nhờ vào các thủ tục ra quyết định dựa trên một công cụ gọi là hàm phân lớp hay hàm ra quyết định Hàm này sẽ được đề cập trong phần sau
Học không có giám sát (unsupervised learning)
Kỹ thuật học này phải tự định ra các lớp khác nhau và xác định các tham số đặc trưng cho từng lớp Học không có thầy đương nhiên là khó khăn hơn Một mặt, do số lớp không được biết trước, mặt khác những đặc trưng của các lớp cũng không biết trước Kỹ thuật này nhằm tiến hành mọi cách gộp nhóm có thể và chọn lựa cách tốt nhất Bắt đầu từ tập dữ liệu, nhiều thủ tục xử lý khác nhau nhằm phân lớp và nâng cấp dần để đạt được một phương án phân loại
Nhìn chung, dù là mô hình nào và kỹ thuật nhận dạng ra sao, một hệ thống nhận dạng có thể tóm tắt theo sơ đồ sau:
Hình 1.4 Sơ đồ tổng quát một hệ nhận dạng
Thu ậ t toán KNN (K - Nearest Neighbor)
KNN là một trong những thuật toán học có giám sát đơn giản nhất trong Machine Learning, có thể sử dụng cho cả bài toán phân loại và hồi quy Về ý tưởng là gán kết quả với dữ liệu training gần giống với mẫu nhất Ví dụ như khi đi câu cá, ta không biết cá câu lên là cá rô hay cá chép, nhưng khi so sánh những đặc điểm về mắt, mang, vây, từ những con cá rô, cá chép đã thấy thì cuối cùng có thể quyết định xem con cá mình câu được thuộc nhóm cá nào
KNN hoạt động theo quy trình gồm 4 bước chính:
- Xác định tham số K (số láng giềng gần nhất)
- Tính khoảng cách từ điểm đang xét đến tất cả các điểm trong tập dữ liệu cho trước
- Sắp xếp các khoảng cách đó theo thứ tự tăng dần
- Xét trong tập K điểm gần nhất với điểm đang xét, nếu số lượng điểm của loại nào cao hơn thì coi như điểm đang xét thuộc loại đó
Hình 1.5 Ví dụ về KNN Việc điểm đang xét thuộc loại nào còn phụ thuộc vào hệ số K hay trọng số khoảng cách mà người dùng đặt sao cho phù hợp với bài toán đang xét Chẳng hạn ở hình trên nếu ta xét K = 3 thì điểm đang xét sẽ thuộc loại B, ngược lại nếu K = 6 thì nó thuộc loại A Ngoài ra người ta có thể để trọng số cao hơn cho những điểm gần hơn hay ít khi sử dụng K = 1 để đảm bảo kết quả đầu ra được tối ưu
Thông thường việc tính khoảng cách đến các điểm sẽ theo công thức Euclid:
Khi thực hiện so sánh có thể bỏ qua dấu căn bậc 2 Ngoài ra nếu như khoảng cách giữa các biến quá lớn như biến x lớn hơn xấp xỉ 1000000 lần thì ta cũng cần chuẩn hóa lại dữ liệu theo công thức: Để dễ hiểu hơn em xin lấy một ví dụ về một công ty muốn đưa dòng xe ô tô mới của mình vào thị trường và muốn biết xe sẽ bán chạy hay ế Họ tổng hợp các dữ liệu về dung tích xi lanh, giá tiền, màu sơn, diện tích xe của các dòng xe đã xuất ra thị trường Đặt Z là khả năng tiêu thụ cụ các dòng xe Z = 0 nghĩa là xe ế, Z = 1 nghĩa là xe sẽ bán chạy
Hình 1.6 Xét khả năng tiêu thụ của xe Sau đó ta chuẩn hóa dữ liệu:
Hình 1.7 Dữ liệu sau chuẩn hóa Sau đó ta tính khoảng cách giữa điểm đang xét đến các dữ liệu cho trước Lưu ý ở các biến có giá trị định tính nếu khác nhau khoảng cách sẽ bằng 1, giống nhau sẽ bằng 0 Ví dụ ta tính khoảng cách giữa dòng xe 6 và 1:
Hình 1.8 Sau khi tính khoảng cách và xếp hạng Nhìn hình trên nếu chọn K=1 thì kết quả Z=1, nếu K=3 thì Z=0, nếu K=5 thì Z=0
Tuy nhiên phương pháp này có một số ưu và nhược điểm như sau: Ưu điểm:
- Dễ sử dụng và cài đặt
- Độ phức tạp tính toán nhỏ
- Việc dự đoán kết quả rất đơn giản
- Với K nhỏ, khi gặp nhiễu dễ đưa ra kết quả không chính xác
- Cần nhiều thời gian lưu training set và nếu test tăng lên sẽ tốn rất nhiều thời gian
Khái ni ệ m v ề nh ậ n d ạ ng bi ể n s ố xe
1.6.1.Khái niệm và ứng dụng a) Khái niệm
Hệ thống nhận dạng biển số xe là hệ thống có khả năng phân tích hình ảnh và xác định biển số trên xe, thông qua video, thiết bị ghi hình và hình ảnh Sau cùng là xác định các thông tin như: chủ sở hữu xe, theo dõi xe với tốc độ chậm,
*) Phân loại ứng dụng nhận dạng biển số xe Ứng dụng nhận dạng biển số xe là ứng dụng có khả năng phân tích hình ảnh và xác định biển số xe từ các hình ảnh chụp được từ các thiết bị thu hình Nguồn hình ảnh cho ứng dụng có rất nhiều Và phát triển, hình ảnh được trực tiếp thu nhận từ camera Trong báo cáo tốt nghiệp của em chỉ dừng lại ở mức xác định được biển số xe (xác định các chữ) từ các bức ảnh
Có nhiều cách thức khác nhau để phân loại các ứng dụng nhận dạng biển số xe Một trong những cách đơn giản là 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ừ các thiết bị ghi nhận ảnh kỹ thuật số Ảnh được ghi nhận thường chỉ giới hạn trong vùng có biển số xe
Nguyên lý hoạt động: Các phương tiện giao thông phải chạy với một tốc độ đủ chậm để máy ghi nhận hình ảnh co thể thu được ả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 này thường được dùng tại các trạm kiểm soát, các trạm thu phí, các bãi gửi xe tự động, các 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 được từ các thiết bị ghi hình tự động, không phụ thuộc vào góc độ, các đối tượng xung quanh, ảnh không cần bắt buộc chỉ chụp vùng chứa biển số xe, mà có thể ảnh tổng hợp như chứa thêm các đối tượng như người, cây, đường phố , miễn là vùng biển số xe phải đủ rõ để có thể thực hiện nhận dạng được các ký tự trong vùng đó
Nguyên lý hoạt động: Do đặc tính không giới hạn vùng nhìn mà ảnh đầu vào có thể thu được từ một thiết bị ghi hình (camera, máy ảnh…) Và do đó, công việc đầu tiên là dò tìm trong ảnh, để xác định đúng vùng nào là biển số xe Sau đó, thực hiện tách vùng và nhận dạng Cuối cùng tùy thuộc vào mục đích sử dụng mà kết quả nhận dạng được truyền đi hay lưu trữ để phục vụ nhu cầu của người dùng cuối Ứng dụng: Vì không phụ thuộc vào hình ảnh thu được nên có thể dùng ứng dụng tại nhiều nơi như tại những nơi điều tiết giao thông, tại các vị trí nhạy cảm của giao thông như ngã ba, ngã tư đường giao nhau Kiểm soát, phát hiện những hành vi vi phạm an toàn giao thông
Yêu cầu về thiết bị:
- Bộ phận thu – tách hình ảnh
- Các thiết bị khác tùy mục đích sử dụng Trong quá trình tìm hiểu, xây dựng ứng dụng của mình Ứng dụng mà em hướng tới trong quá trình xây dựng là ứng dụng loại 2 Vì vậy, trong toàn bộ báo cáo này, chỉ nêu cách thức giải quyết là làm sao nhận dạng (lọc ra) được các ký tự số và chữ b) Ứng dụng của hệ thống nhận dạng biển số xe
Hệ thống nhận dạng biển số xe được xây dựng nhằm mục đích giám sát, kiểm soát các phương tiện Dưới đây chúng ta đề cập đến một số ứng dụng phổ biến đối với hệ thống nhận dạng biển số xe:
+) Thu phí giao thông: Lắp đặt hệ thống “Nhận dạng biển số xe” tại các trạm thu phí nhằm hỗ trợ hoặc tự động hóa công tác thu phí
+) Kiểm soát xe tại các đường biên giới: Mỗi quốc gia đều có những quy định riêng về biển số xe, để phục vụ cho công tác quản lý và phát hiện những phương tiện giao thông (xe) vượt biên giới bất hợp pháp Việc lắp hệ thống “Nhận dạng biển số xe” tại các trạm kiểm soát sẽ góp phần hỗ trợ công tác kiểm tra và an ninh quốc gia
+) Các trạm gác cổng: Việc lắp đặt hệ thống “Nhận dạng biển số xe” sẽ hỗ trợ hoặc tự động hóa công tác mở cổng cho xe vào
Ngoài ra, hệ thống còn được ứng dụng vào công tác chống trộm xe, các bãi giữ xe tự động, điều tiết giao thông (chẵng hạn như Thành phố Dublin đã ứng dụng công nghệ “Nhận dạng biển số xe tự động” trong việc điều tiết giao thông theo dạng biển số chẳn/lẻ)
1.6.2.Phân loại biển số xe
Trước tiên là quy định biển số của 64 tỉnh thành (Biển trắng chữ đen):
50 đến 59 - TP Hồ Chí Minh
80 - Các đơn vị kinh tế thuộc TW (hàng không)
Bảng 1 Biển số xe của 64 tỉnh thành
*) Những quy định về màu sắc và chữ số đặc biệt:
1 Màu xanh chữ trắng là biển xe của các cơ quan hành chính sự nghiệp:
- Các tỉnh thành thì theo số tương ứng
2 Màu đỏ chữ trắng là biển xe trong quân đội:
AD: Quân Đoàn 4 , Binh đoàn cửu long
BC: Binh chủng Công Binh
BH: Binh chủng hoá học
BS: Binh đoàn Trường Sơn
BT: Binh chủng thông tin liên lạc
BP: Bộ tư lệnh biên phòng
HB: Học viện lục quân
QH: Quân chủng hải quân
QK, QP: Quân chủng phòng không không quân
TC: Tổng cục chính trị
TH: Tổng cục hậu cần
TK: Tổng cục công nghiệp quốc phòng
TT:Tổng cục kỹ thuật
TM: Bộ tổng tham mưu
3 Màu trắng 2 chữ, 5 số là biển dành cho người nước ngoài:
- NG là xe ngoại giao
- NN là xe của các tổ chức, cá nhân nước ngoài: Trong đó 3 số ở giữa là mã quốc gia, 2 số tiếp theo là số thứ tự
* Xe số 80 NG xxx-yy là biển cấp cho các đại sứ quán, thêm gạch đỏ ở giữa và 2 số cuối là 01 là biển xe của tổng lãnh sự
4 Những xe mang biển 80 gồm có :
- Các Ban của Trung ương Đảng
- Văn phòng Chủ tịch nước
- Xe phục vụ các đồng chí uỷ viên Trung ương Đảng công tác tại Hà Nội và các thành viên Chính phủ
- Viện kiểm sát nhân dân tối cao
- Toà án nhân dân tối cao
- Đài truyền hình Việt Nam
- Đài tiếng nói Việt Nam
- Thông tấn xã Việt Nam
- Học viện Chính trị quốc gia
- Ban quản lý Lăng, Bảo tàng, khu Di tích lịch sử Hồ Chí Minh;
- Trung tâm lưu trữ quốc gia
- Uỷ ban Dân số kế hoạch hoá gia đình
- Tổng công ty Dầu khí Việt Nam
- Các đại sứ quán, tổ chức quốc tế và nhân viên người nước ngoài
- Uỷ ban Chứng khoán Nhà nước
- Cục Hàng không dân dụng Việt Nam
Xe của Công An - Cảnh Sát tương ứng với các tỉnh ví dụ: 31A = xe của Công An - Cảnh Sát thành phố Hà Nội
M ộ t s ố hướ ng gi ả i quy ế t bài toán nh ậ n d ạ ng bi ể n s ố xe
Có rất nhiều phương pháp tiếp cận Trong đó có hai cách tiếp cận phổ biến dưới đây:
1.7.1 Hướng tiếp cận phát triển vùng
Nhóm tác giả Nigel Whyte and Adrien Kiernan được đại diện cho cách tiếp cận này Ý tưởng của phương pháp này: đó là biển số xe thường chứa một màu đồng nhất, chẳng hạn màu trắng, và có diện tích tương đối nhất định Vì vậy có thể dùng phương pháp phát triển vùng, hoặc sử dụng khung chữ nhật di chuyển trong để tìm ra vùng có tính chất thỏa mãn biển số xe và tiến hành nhận dạng. Ưu điểm: rất đơn giản, và xử lý rất nhanh đối với những ảnh chỉ chứa vùng biển số xe
Nhược điểm: khi ảnh có thêm nhiều đối tượng không phải là vùng biển số xe, chẳng hạn là ảnh chụp tổng quát gồm cả cảnh vật bên ngoài thì cách tiếp cận này trở nên không hiệu quả Vì vậy phương pháp này rất hiệu quả đối với hệ thống trạm thu phí, trạm gác cổng, gửi xe tự động
1.7.2 Hướng tiếp cận dò biên và biến đổi Hough
Nhóm tác giả Michael Lindenbaum, Rosen Alexander, Vichik Sergey, Sandler Roman được đại diện cho cách tiếp cận này Ý tưởng của cách tiếp cận này là: Biển số xe được bao bọc bởi đường viền Do đó, có thể dùng phương pháp phát hiện biên, sau đó dùng phép biến đổi Hough để trích những đoạn thẳng dọc, ngang tồn tại trong ảnh Giao điểm của những đoạn thẳng này chính là vùng bao chứa biển số xe Và cuối cùng là tiến hành nhận dạng các ký tự ở trên mỗi vùng con Ưu điểm: độ chính xác cao Và các hệ thống nhận dạng đa phần đều phát triển theo hướng tiếp cận này.
Nhược điểm: Độ phức tạp tính toán khá cao Khi ảnh có thêm nhiều đối tượng khác thì khối lượng tính toán tăng lên rất nhiều Do mục đích là phải xác định được vùng con nào chứa biển số xe
Ngoài hai cách tiếp cận trên, còn có nhiều cách tiếp cận khác để xác định chính xác vùng nào chứa biển số xe và bước cuối cùng là tiến hành nhận dạng ký tự Mỗi cách tiếp cận có một ưu và nhược điểm Trong bài báo cáo của em, em xin trình bày về hướng tiếp cận phát triển vùng.
Hướ ng gi ả i quy ế t bài toán
Ở phần 1.3 chúng ta đã tìm hiểu 2 hướng giải quyết cho việc xác định vùng chứa biển số xe Mỗi cách giải quyết có những ưu điểm và hạn chế riêng của nó.
*) Một số đặc điểm về biển số xe ở Việt Nam:
- Tiêu chuẩn về kích thước: Ở mỗi nước thường có tiêu chuẩn về kích thước nhất định Đối với nước ta, biển số xe quy định khá đồng đều cho mỗi loại xe, tỷ lệ chiều dài, rộng cho mỗi loại xe là như nhau Kích thước giữa các biển số là gần như giống nhau Biển số xe có 2 loại, kích thước như sau: Loại biển số dài có chiều cao 110mm, chiều dài 470 mm; loại biển số ngắn có chiều cao 200mm, chiều dài 280mm nên ta sẽ giới hạn tỷ lệ cao/rộng là 3.5 ≤ cao/rộng ≤ 6.5 (biển một hàng) và 0.8 ≤ cao/rộng ≤ 1.5 (biển hai hàng)
- Số lượng ký tự trong biển số xe nằm trong khoảng [7,9] Chiều cao của chữ và số: 80mm, chiều rộng của chữ và số: 40mm
Từ những đặc điểm trên ta có thể thiết lập những thông số, điều khiển để lọc chọn những đối tượng phù hợp mà ta cần
Trong phạm vi bài báo cáo này của em sẽ giải quyết vấn đề theo 3 bước chính:
1 Phát hiện vị trí và tách biển số xe từ một hình ảnh có sẵn từ đầu vào là camera
2 Phân đoạn các kí tự có trong biển số xe
3 Nhận diện các kí tự đó rồi đưa về mã ASCII
Hình 1.9 Các bước chính trong nhận dạng biển số xe
PHÂN TÍCH THIẾ T K Ế BÀI TOÁN NH Ậ N D Ạ NG BI Ể N S Ố XE
Phát hi ệ n v ị trí và tách bi ể n s ố xe
Sơ đồ dưới đây sẽ tóm gọn các bước để xác định và tách biển số xe từ hình ảnh:
Hình 2.1 Xác định và tách biển số xe Đầu tiên ta sẽ chụp ảnh từ camera làm đầu vào để xử lý và tách biển số xe Ở phạm vi đồ án này, ý tưởng chủ yếu là nhận diện được biển số từ sự thay đổi đột ngột về cường độ ánh sáng giữa biển số và môi trường xung quanh nên ta sẽ loại bỏ các dữ liệu màu sắc RGB bằng cách chuyển sang ảnh xám Tiếp theo ta tăng độ tương phản với hai phép toán hình thái học Top Hat và Black Hat để làm nổi bật thêm biển số giữa phông nền, hỗ trợ cho việc xử lý nhị phân sau này Sau đó, ta giảm nhiễu bằng bộ lọc Gauss để loại bỏ những chi tiết nhiễu có thể gây ảnh hưởng đến quá trình nhận diện, đồng thời làm tăng tốc độ xử lý
Việc lấy ngưỡng sẽ giúp ta tách được thông tin biển số và thông tin nền, ở đây em chọn lấy ngưỡng động (Adaptive Threshold) Tiếp đó ta sử dụng thuật toán phát hiện cạnh Canny để trích xuất những chi tiết cạnh của biển số Trong quá trình xử lý máy tính có thể nhầm lẫn biển số với những chi tiết nhiễu, việc lọc lần cuối bằng các tỉ lệ cao/rộng hay diện tích của biển số sẽ giúp xác định được đúng biển số Cuối cùng, ta sẽ xác định vị trí của biển số trong ảnh bằng cách vẽ Contour bao quanh
2.1.1.Chuyển ảnh xám Ảnh xám (Grayscale) đơn giản là một hình ảnh trong đó các màu là các sắc thái của màu xám với 256 cấp độ xám biến thiên từ màu đen đến màu trắng, nằm trong giải giá trị từ 0 đến 255, nghĩa là cần 8 bits hay 1 byte để biểu diễn mỗi điểm ảnh này Lý do cần phải phân biệt giữa ảnh xám và các ảnh khác nằm ở việc ảnh xám cung cấp ít thông tin hơn cho mỗi pixel Với ảnh thông thường thì mỗi pixel thường được cung cấp 3 trường thông tin trong khi với ảnh xám chỉ có 1 trường thông tin, việc giảm khối lượng thông tin giúp tăng tốc độ xử lý, đơn giản hóa giải thuật nhưng vẫn đảm bảo các tác vụ cần thiết Ở bài này em sẽ chuyển ảnh xám từ hệ màu HSV thay vì RGB vì với không gian màu HSV ta có ba giá trị chính là: Vùng màu (Hue), độ bão hòa (Saturation), cường độ sáng (Value) Vì lý do đó không gian màu HSV thích nghi tốt hơn đối với sự thay đổi ánh sáng từ môi trường ngoài Khi chuyển đổi, ảnh xám ta cần là ma trận các giá trị cường độ sáng tách ra từ hệ màu HSV
Phép toán hình thái học:
Hình thái học toán học là một lý thuyết và kỹ thuật để phân tích và xử lý cấu trúc hình học, hình ảnh đầu ra được xác định chủ yếu dựa vào phần từ cấu trúc (structuring elements/kernel)
Hình 2.2 Ví dụ về phần tử cấu trúc Hình thái học toán học đã được phát triển cho hình ảnh nhị phân, và sau đó được mở rộng cho ảnh xám, Đây là một trong những kỹ thuật được áp dụng trong giai đoạn tiền xử lý Hai phép toán thường dùng là phép giãn nở (Dilation) và phép co (Erosion) Từ hai phép toán cơ bản này người ta phát triển thành một số phép toán như phép đóng (Closing) và phép mở (Opening) và phép Top Hat, Black Hat a) Phép co
Phép toán co có ứng dụng trong việc giảm kích thước của đối tượng, tách rời các đối tượng gần nhau, làm mảnh và tìm xương của đối tượng Ảnh gốc Ảnh sau khi dùng phép co
Hình 2.3 Phép co b) Phép giản nở
Phép toán này có tác dụng làm cho đối tượng ban đầu trong ảnh tăng lên về kích thước (giãn nở ra) Ứng dụng của phép giãn nở là làm cho đối tượng trong ảnh được tăng lên về kích thước, các lỗ nhỏ trong ảnh được lấp đầy, nối liền đường biên ảnh đối với những đoạn rời nhỏ Ảnh gốc Ảnh sau khi dùng phép giãn nở
Hình 2.4 Phép giản nở c) Phép mở
Là thực hiện phép co trước sau đó mới thực hiện phép giãn nở Phép toán mở được ứng dụng trong việc loại bỏ các phần lồi lõm và làm cho đường bao các đối tượng trong ảnh trở nên mượt mà hơn Ảnh gốc Ảnh sau khi dùng phép mở
Hình 2.5 Phép mở d) Phép đóng
Thực hiện phép giãn nở trước sau đó mới thực hiện phép co Phép toán đóng được dùng trong ứng dụng làm trơn đường bao các đối tượng, lấp đầy các khoảng trống biên và loại bỏ những hố nhỏ Ảnh gốc Ảnh sau khi dùng phép đóng
Hình 2.6 Phép đóng e) Phép Top Hat
Phép Top Hat là kết quả của phép trừ ảnh của ảnh ban đầu với ảnh sau khi thực hiện phép mở, dùng để làm nổi bật nhưng chi tiết trắng trong nền tối Ảnh gốc Ảnh sau khi dùng phép Top Hat
Hình 2.7 Phép Top Hat f) Phép Black Hat
Phép Black Hat là kết quả của phép trừ ảnh của ảnh sau khi thực hiện phép đóng với ảnh ban đầu Dùng làm nổi bật chi tiết tối trong nền trắng Ảnh gốc Ảnh sau khi dùng phép Black Hat
Tăng độtương phản: Để làm tăng độ tương phản của biển số, sử dụng chủ yếu hai phép Top Hat và Black Hat Ý tưởng chung là ảnh đầu ra sẽ là ảnh gốc cộng thêm ảnh qua phép Top Hat và trừ đi ảnh qua phép Black Hat Những chi tiết đã sáng sẽ sáng hơn và những chi tiết tối lại càng tối hơn, từ đó sẽ làm tăng độ tương phản cho biển số Ảnh gốc Ảnh sau khi tăng độ tương phản
Hình 2.9 Ảnh sau khi tăng độ tương phản
2.1.3.Giảm nhiễu bằng bộ lọc Gauss
Noise được hiểu cơ bản là các dạng chấm hạt nhỏ phân bố trên hình ảnh Noise có thể làm biến dạng các chi tiết trong ảnh khiến cho chất lượng ảnh thấp
Trên thực tế có nhiều loại nhiễu, nhưng người ta thường chia làm ba loại: nhiễu cộng, nhiễu nhân và nhiễu xung Bản chất của nhiễu thường tương ứng với tần số cao và cơ sở lý thuyết của bộ lọc là chỉ cho những tín hiệu có tần số nhất định đi qua, nên người ta thường sử dụng bộ lọc thông thấp hay trung bình
Bộ lọc Gauss (Gauss filter):
Bộ lọc Gauss được cho là bộ lọc hữu ích nhất, được thực hiện bằng cách nhân chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu ra Ý tưởng chung là giá trị mỗi điểm ảnh sẽ phụ thuộc nhiều vào các điểm ảnh ở gần hơn là các điểm ảnh ở xa Trọng số của sự phụ thuộc được lấy theo hàm Gauss (cũng được sử dụng trong quy luật phân phối chuẩn)
Phân đoạ n ký t ự
Ở giai đoạn này có những bước chính sau: Xoay biển số để tăng khả năng nhận diện, Tìm tất cả các vùng kín cho là ký tự và lọc ra những ký tự đúng Tách hình ảnh những ký tự đó ra và đưa vào bộ nhận diện
Hình 2.24 Các bước chính trong phân đoạn kí tự
Khi chụp ảnh đầu vào, không phải lúc nào biển số cũng ở chính diện, có thể bị méo sang trái, sang phải, nghiêng góc dẫn đến nếu cứ sử dụng ảnh biển số đã cắt mà không điều chỉnh góc độ dẫn đến ảnh kí tự được cắt ra đưa vào bộ nhận diện rất dễ bị sai Ví dụ giữa số 1 và số 7, số 2 và chữ Z, chữ B và số 8,
Hình 2.25 Ảnh biển số chưa xoay Phương pháp xoay ảnh em sử dụng ở đây là:
1 Lọc ra tọa độ 2 đỉnh A,B nằm dưới cùng của biển số
2 Từ 2 đỉnh có tọa độ lần lượt là A(x1, y1) và B(x2,y2) ta có thể tính được cạnh đối và cạnh kề của tam giác ABC
3 Ta tính được góc quay
4 Xoay ảnh theo góc quay đã tính Nếu ngược lại điểm A nằm cao hơn điểm
B ta cho góc quay âm
Hình 2.26 Ảnh biển số đã xoay
Từ ảnh nhị phân, ta lại tìm contour cho các ký tự (phần màu trắng) Sau đó vẽ những hình chữ nhật bao quanh các kí tự đó Tuy nhiên việc tìm contour này cũng bị nhiễu dẫn đến việc máy xử lý sai mà tìm ra những hình ảnh không phải ký tự Ta sẽ áp dụng các đặc điểm về tỉ lệ chiều cao/rộng của ký tự, diện tích của ký tự so với biển số
Hình 2.28 Tìm vùng đối tượng Trong ảnh 4.3 - 2 những đường màu vàng là đường contour và nếu so sánh với ảnh nhị phân 4.3 -1 thì có rất nhiều đường nhiễu như đường viền biển số, dấu gạch, dấu chấm Sau khi đã áp dụng các điều kiện thì sẽ vẽ ra những hình chữ nhật màu xanh bao quanh các kí tự
2.2.3.Tìm và tách ký tự
Sau khi đã nhận dạng từng ký tự bằng hình chữ nhật và cũng đã có tọa độ vị trí 4 đỉnh của hình đó, ta lúc này có thể cắt hình ảnh kí tự đó ra phục vụ cho giai đoạn sau
“Nhận diện ký tự” Lưu ý ở đây ta cắt ảnh nhị phân chứ không cắt từ ảnh gốc.
Hình 2.29 Ảnh ký tự sau khi cắt
THỰ C NGHI ỆM VÀ ĐÁNH GIÁ
Môi trườ ng th ự c nghi ệ m
3.1.1.Về thông tin web chạy thực nghiệm
Visual Studio Code là một trình soạn thảo mã nguồn được phát triển bởi Microsoft dành cho Windows, Linux và macOS Nó hỗ trợ chức năng debug, đi kèm với Git, có chức năng nổi bật cú pháp (syntax highlighting), tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn Nó cũng cho phép tùy chỉnh, do đó, người dùng có thểthay đổi theme, phím tắt, và các tùy chọn khác
Visual Studio Code là một trình biên tập mã Nó hỗ trợ nhiều ngôn ngữ và chức năng tùy vào ngôn ngữ sử dụng theo như trong bảng sau
Batch, C++, Clojure, CoffeeScript, DockerFile, Elixir, F#,
Go, Pug template language,Java, HandleBars, Ini, Lua, Makefile, Objective-C, Perl, PowerShell, Python, R, Razor, Ruby, Rust, SQL, Visual Basic, XML
Snippets Groovy, Markdown, Nim, PHP, Swift
Tự động hoàn thành mã thông minh
CSS, HTML, JavaScript, JSON, Less, Sass, TypeScript
Debugging JavaScript và TypeScript cho Node.js
C# và F# cho Mono trên Linux và macOS
C và C++ trên Windows, Linux và macOS Python
Bảng 2 Các chức năng phụ thuộc vào ngôn ngữ Visual Studio Code có thể được mở rộng qua plugin Điều này giúp bổ sung thêm chức năng cho trình biên tập và hỗ trợ thêm ngôn ngữ Một tính năng đáng chú ý là khả năng tạo phần mở rộng để phân tích mã, như là các linter và công cụ phân tích, sử dụng Language Server Protocol
3.1.2.Về ngôn ngữ lập trình
Sử dụng ngôn ngữ lập trình Python với các thư viện OpenCV, Numpy, Math.
K ế t qu ả và đánh giá nhậ n d ạ ng bi ể n s ố xe
Ở biển số 1 hàng có tỉ lệ nhận diện cao hơn vì tập mẫu còn ít và mỗi frame ảnh chỉ có 1 biển, dẫn đến biển số thường nằm ở vị trí trung tâm nên dễ nhận diện hơn Ngược lại, với biển 2 hàng có tập mẫu lớn, và số biển số trong 1 frame nhiều hơn Chưa kể, biển số ở đây được tính là vùng hình bình hành có tối thiểu 7 ký tự mới được tính là biển số, dẫn đến có nhiều biển số đã cắt đúng những vẫn không được tính vào Tuy nhiên cách làm này lại giúp loại bỏ đáng kể những chi tiết, biển số sai lệch từ môi trường ngoài
Hình 3.2 Không tìm thấy ký tự
Hình 3.3 Tìm thấy 5 ký tự
Hình 3.4 Tìm thấy 9 ký tự Ở hình 5.2 - 2 ta thấy chương trình xử lý tìm ra 3 vùng được cho là biển số, tuy nhiên số ký tự tìm ra ở hình 5.2 - 1 và 5.2 - 3 không đủ Tìm thấy 9 ký tự nên sẽ bị loại dẫn đến trong ảnh chỉ còn lại duy nhất biển số hình 5.2 - 4
Khi ta quay theo nhiều góc độ, nhiều vị trí dẫn đến khi tính toán diện tích, tỉ lệ cao/rộng của biển số không còn thỏa điều kiện đặt ra nên đã bị loại Biển số có thể bị ảnh hưởng bởi những chi tiết ngoài nên khi xấp xỉ contour không ra hình tứ giác, dẫn đến cũng gây mất biển số Lỗi này đặc biệt xảy ra ở những xe ô tô vì ô tô thường có nền xung quanh biển số là những vật liệu phản chiếu ánh sáng mạnh, gây ảnh hưởng lớn đến quá trình xác định vùng biển số
Hình 3.5 Lấy ngưỡng cao/rộng 1.5
Hình 3.6 Lấy ngưỡng cao/rộng 1.4
Hình 3.7 Lỗi xấp xỉ Contour Ở hình 5.2 - 7 mặc dù đường contour màu hồng có bao quanh biển số, tuy nhiên sau khi xấp xỉ chỉ còn lại hình 2, 3 cạnh, để khắc phục được các lỗi tỉ lệ, xấp xỉ contour ta cần điều chỉnh mức ngưỡng cho tối ưu
Trong quá trình xử lý, việc xử lý nhị phân cũng đóng vai trò quan trọng, ở hình 5.2 - 9 ta thấy ảnh bị nhiễu và bản thân biển số bị tối, dính nhiều bụi dẫn đến khi xử lý nhị phân sẽ bị đứt đoạn và vẻ contour bị sai, để khắc phục cần sử dụng những phép toán hình thái học như phép nở, phép đóng để làm liền những đường màu trắng trong ảnh nhị phân
Hình 3.8 Ảnh nhị phân bị đứt
Hình 3.9 Đường contour bị đứt đoạn Dưới đây ta xét khả năng khoanh vùng và nhận diện ký tự tương ứng với giai đoạn “Phân đoạn ký tự” và “Nhận diện ký tự” đã đặt ra ở đầu bài toán
Nhìn chung mô hình nhận diện KNN cũng khá tốt, có những ký tự dù bị mờ, bị nghiêng vẫn nhận diện đúng Điều này một phần nhờ vào chương trình đã xoay biển số lại cho để tăng khả năng nhận diện, cho dù nghiêng thì kí tự cũng chỉ nghiêng từ đến Tuy nhiên vẫn còn nhầm lẫn nhiều giữa các ký tự như số 1 với số 7 Chữ G, chữ D, số
6 với số 0 Chữ B với số 8
Hình 3.10 Ảnh gốc nhận diện 3 biển số
Hình 3.13 Biển số 3 Theo như hình gốc 6.2 - 10 ta nhận diện đúng hết biển số 2 và 3 Còn biển số 1 bị sai giữa chữ B và số 8.
Hình 3.14 Không khoanh được vùng ký tự Ở ảnh 5.2 - 16 chỗ số 0 bị dính con ốc dẫn đến không thể khoanh vùng được, Tuy nhiên ở chữ F mặc dù vẫn dính con ốc trong ảnh cắt ra để nhận diện, mô hình KNN vẫn cho ra đáp án đúng
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Từ những kết quả thu được ở chương trên em nhận thấy phương pháp nhận diện biển số xe bằng xử lý ảnh và thuật toán KNN có những ưu và khuyết điểm sau: Ưu điểm:
- Dễ cài đặt và sử dụng
- Khá nhẹ nên máy tính với cấu hình yếu cũng có thể xử lý mượt mà so với các thuật toán khác như CNN, SVM
- Phù hợp cho đối tượng sinh viên muốn tìm hiểu căn bản về xử lý ảnh hay trí tuệ nhân tạo
- Khả năng nhận diện của KNN còn thấp, khi tập dữ liệu quá nhiều sẽ tăng thời gian xử lý vì phải quét hết tập dữ liệu train
- Nhận diện kém với sự phản chiếu của biển số, sự di ảnh, chói sáng từ môi trường ngoài, những biển có phần chữ số không rõ ràng, với biển số xe ô tô
Vì vậy tốt nhất cần đặt camera cố định, với môi trường ánh sáng xung quanh được cài đặt trước Phông nền cần hạn chế tối đa những chi tiết lóe sáng gây nhiễu Phương pháp này vẫn còn cần sự giám sát của con người nhiều chứ chưa thể hoàn toàn tự động
Cần thay đổi thuật toán nhận diện KNN sang những thuật toán khác tinh vi và phức tạp hơn như CNN, SVM hoặc có thể sử dụng những bộ thư viện đã có sẵn trên thế giới như YOLO, YOLOv3
Sử dụng camera chuyên dụng cho việc nhận diện biển số xe vì có khả năng chống chịu với sương mù, đêm tối, chói sáng,
Sử dụng các thuật toán xử lý ảnh khác để xác định vị trí biển số tốt hơn như phương pháp biến đổi Hough để nhận diện đường thẳng, xác định bằng màu sắc, những thuật toán làm hạn chế sự di ảnh khi xe đang di chuyển
Kết hợp với những chương trình khác để quản lý kho bãi, quản lý các phương tiện đang tham gia giao thông, tìm xe thất lạc, theo dấu,
[1]M J Ahmed, M Sarfaz, A Zidouri, and K G AI-Khatib, “License plate recognition system,” Proc IEEE Int Conf Electron Circuits, Syst., vol 2, no
[2]C N E Anagnostopoulos, “License plate recognition: A brief tutorial,” IEEE Intell Transp Syst Mag., vol 6, no 1, pp 59–67, 2014, doi:
[3]A Badr, M M Abdel, A M Thabet, and A M Abdelsadek, “Automatic number plate recognition system,” Ann Univ Craiova, Math Comput Sci Ser., vol
[4]S L Chang, L S Chen, Y C Chung, and S W Chen, “Automatic License Plate Recognition,” IEEE Trans Intell Transp Syst., vol 5, no 1, pp 42–53, 2004, doi: 10.1109/TITS.2004.825086
[5]N D Linh, N Van Nhan, and D Van Dat, “12.pdf,” Tap chi thong tin khoa hoc va cong nghe Quang Binh, 2018
[6]D V R Mohan, M T Communication, S Srkr, and E College, “Number Plate Recognition by using open CV- Python,” pp 4987–4992, 2019
[7]Nguyễn Vĩnh An, “So sánh một số phương pháp phát hiện biên,” Tạp chí khoa học Trường Đại học Quốc gia Hà Nội, vol 31, no 2, pp 1–7, 2015
[8]F Patel, J Solanki, V Rajguru, and A Saxena, “Recognition of Vehicle Number Plate Using Image Processing Technique,” Adv Emerg Med., vol 7, no 1, pp 2–8, 2018, doi: 10.18686/aem.v7i1
[9]L F Sanchez, “Automatic Number Plate Recognition System Using Machine Learning Techniques,” no August, pp 2017–2018, 2018
[10]K Sarbjit, “An Efficient Approach for Automatic Number Plate Recognition System under Image Processing,” Int J Adv Res Comput Sci., vol 5, no (6), pp 43–50, 2014
[11]N Simin, F Choong, and C Mei, “Automatic Car-plate Detection and
[12]G D Yeshwant, S Maiti, and P B Borole, “Automatic Number Plate
Recognition System (ANPR System),” Int J Eng Res., vol 3, no 7, p 5, 2014,
[Online] Available: https://www.ijert.org/research/automatic-number-plate- recognition-system-anpr-system-IJERTV3IS071132.pdf
[13]A Zelinsky, Learning OpenCV -Computer Vision with the OpenCV
Library (Bradski, G.R et al.; 2008)[On the Shelf], vol 16, no 3 2009
[14]Chris Dahms (2016), OpenCV 3 License Plate Recognition Python https://www.youtube.com/watch?v=fJcl6Gw1D8k
[15]OpenCV Morphological Transformations https://docs.opencv.org/3.4/d9/d61/tutorial_py_morphological_ops.html
[16]Nhận dạng biển số xe với opencv step by step https://thorpham.github.io/blog/2018/04/11/regconite-plate-car/
[17]Find and draw Contours - OpenCV 3.4 with python 3 https://www.youtube.com/watch?v=_aTC-Rc4Io0
[18]Contour https://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html
[19]Tìm hiểu về Contour, moments trong xử lý ảnh https://congdongopencv.blogspot.com/2017/11/tim-hieu-ve-contour-moments-trong- xu-ly.html
[20]Suzuki’s contour tracing algorithm OpenCV - Python https://theailearner.com/tag/suzuki-contour-algorithm-opencv/
[21]Chris Dahms (2016), KNN character recognition python https://www.youtube.com/watch?vw1JS28AY&t=6s
[22]K-nearest neighbor trong opencv2 https://viblo.asia/p/k-nearest-neighbour-trong-opencv2-V3m5W2wWlO7
[23]Son Nguyen (2017), Machine learning với OpenCV python - Bài 10 THUẬT TOÁN K-Nearest Neighbour láng giềng gần nhất https://www.youtube.com/watch?v=ETOqRZIrLY8
[24]Thuật toán KNN và ví dụ đơn giản trong ngành ngân hàng https://bigdatauni.com/vi/tin-tuc/thuat-toan-knn-va-vi-du-don-gian-trong-nganh-ngan- hang.html