NGHIÊN CỨU THƯ VIỆN MÃ NGUỒN MỞ OPENCV VÀ ỨNG DỤNG VÀO NHẬN DẠNG BIỂN SỐ XE
1. Tính cấp thiết của luận văn
Ngày nay trên thế giới bên cạnh việc tăng trưởng kinh tế là sự phát triển của các ngành khoa học kỹ thuật nói chung, mà trong đó ngành công nghiệp sản xuất các phương tiện giao thông lại là một trong nhưng ngành có tốc độ phát triển cực nhanh. Sự phát triển ấy, được thể hiện rõ ràng nhất thông qua hình ảnh của các phương tiện giao thông trên thế giới ngày một tăng cao, đa dạng và Việt Nam cũng không phải là một ngoại lệ.
Ở nước ta, do mật độ dân số ở phân bổ khá đông tại các thành phố lớn trong khi các phương tiện giao thông công cộng còn chưa phát triển kịp nên đã bùng nổ các phương tiên giao thông cá nhân. Với số lượng phương tiện giao thông lớn, và còn không ngừng tăng lên như vậy đã làm nảy sinh nhiều vấn đề trong kiểm soát cũng như quản lý các phương tiện. Việc nhận dạng biển số xe được áp dụng rất nhiều trong các hệ thống nhận dạng quản lý phương tiện giao thông tại các trạm thu phí, trạm cân, bãi giữ xe tự động, kiểm soát lưu lượng giao thông hay trong các ứng dụng an ninh như tìm kiếm xe mất cắp, phục vụ điều tra các vụ tai nạn giao thông.
Vì vậy mục đích chính của nghiên cứu này là tìm hiểu và xây dựng hệ thống “Nhận dạng biển số xe” từ hình ảnh nhằm trợ giúp cho công tác phát hiện vi phạm giao thông, chống trộm, quản lý,…được dễ dàng và nhanh chóng hơn.
2. Mục tiêu nghiên cứu
Quy mô luận văn của em là cung cấp cái nhìn tổng quan về xử lý ảnh, mã nguồn mở OPENCV và ứng dụng nhận dạng biển số xe. Mục đích chính của việc xây dựng chương trình ứng dụng này là để đảm bảo cung cấp ba đặc điểm quan trọng dưới đây:
- Độ tin cậy:
Việc xác định và nhận dạng biển số xe phải có tỉ lệ chính xác tương đối cao. Đảm bảo trong điều kiện lý tưởng sẽ luôn luôn nhận dạng được biển số xe.
- Tính toàn vẹn:
Tính toàn vẹn là đảm bảo quá trình xử lý ảnh và nhận dạng không làm cho hình ảnh bị mất mát hoặc thay đổi.
- Tính kịp thời:
Đảm bảo việc nhận dạng biển số xe không quá lâu. Đối với ảnh có chất lượng cao cần chuyển đổi về một chuẩn để việc nhận dạng được nhanh chóng và kịp thời.
3. Phương pháp nghiên cứu
Nghiên cứu, tìm hiểu các công nghệ áp dụng vào nhận dạng biển số xe. Sau đó sử dụng các công nghệ đã nghiên cứu, thiết kế chương trình cụ thể để thực thi.
Các phương pháp sẽ thực hiện để đạt được mục tiêu nghiên cứu:
- Phương pháp so sánh
– Tổng hợp và đối chiếu giữa những tài liệu thu được để đưa ra một cái nhìn tổng quan nhất giữa các phương pháp cũng như ưu nhược điểm của nó.
- Phương pháp phân tích
– Phân tích thuật toán, cách thức hoạt động cũng như đặc trưng của mỗi thuật toán.
– Phân tích những điểm cần khắc phục trong tương lai đối với các phương pháp nhằm đạt được kết quả tốt hơn.
- Phương pháp thực nghiệm
– Xây dựng chương trình ứng dụng nhận dạng biển số xe từ những thuật toán và phương pháp đã nghiên cứu được. Từ đó rút ra những kết luận cho việc nghiên cứu.
Dự kiến kết quả
– Tài liệu tổng quan về vấn đề nhận dạng biển số xe.
– Đề xuất giải thuật và xây dựng thành công chương trình nhận dạng biển số xe.
4. Bố cục luận văn
Luận văn này gồm có 3 phần:
Chương 1: Tổng quan về xử lý ảnh
Chương này cung cấp một cái nhìn tổng quan về xử lý ảnh, các khái niệm cơ bản về xử lý ảnh. Đây là cơ sở lý thuyết làm nền tảng cho việc thực nghiệm sau này.
Chương 2: Giới thiệu về thư viện OpenCV
Chương này giới thiệu thư viện mã nguồn mở OPENCV, các hàm và phương thức áp dụng vào bài toán nhận dạng biển số xe.
Chương 3: Ứng dụng OpenCV vào bài toán nhận dạng biển số xe
Triển khai xây dựng ứng dụng nhận dạng biển số xe. Giới thiệu công đoạn chính của bài toán nhận dạng biển số xe.
Trình bày kết quả thực nghiệm, so sánh đánh giá các kết quả đã đạt được.
CHƯƠNG 1
TỔNG QUAN VỀ XỬ LÝ ẢNH
1.1. Xử lý ảnh và sơ đồ tổng quát của một hệ thống xử lý ảnh
Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt hơn” hoặc một kết luận.
Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Thu nhận ảnh
Tiền xử lý
Trích chọn đặc điểm
Hậu xử lý
Đối sánh rút ra kết luận
Hệ quyết định
Lưu trữ
– Thu nhận ảnh: Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình xử lý ảnh. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor, máy scanner,v.v… và sau đó các tín hiệu này sẽ được số hóa.Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các thông số quan trọng ở bước này là độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của các thiết bị.
– Tiền xử lý: Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử bóng, khử độ lệch,v.v… với mục đích làm cho chất lượng ảnh trở lên tốt hơn nữa, chuẩn bị cho các bước xử lý phức tạp hơn về sau trong quá trình xử lý ảnh. Quá trình này thường được thực hiện bởi các bộ lọc.
– Phân đoạn ảnh: phân đoạn ảnh là bước then chốt trong xử lý ảnh. Giai đoạn này phân tích ảnh thành những thành phần có cùng tính chất nào đó dựa theo biên hay các vùng liên thông. Tiêu chuẩn để xác định các vùng liên thông có thể là cùng màu, cùng mức xám v.v… Mục đích của phân đoạn ảnh là để có một miêu tả tổng hợp về nhiều phần tử khác nhau cấu tạo lên ảnh thô. Vì lượng thông tin chứa trong ảnh rất lớn, trong khi đa số các ứng dụng chúng ta chỉ cần trích một vài đặc trưng nào đó, do vậy cần có một quá trình để giảm lượng thông tin khổng lồ đó. Quá trình này bao gồm phân vùng ảnh và trích chọn đặc tính chủ yếu.
– Tách các đặc tính: Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểm ảnh thô, trong đó hàm chứa biên của một vùng ảnh, hoặc tập hợp tất cả các điểm ảnh thuộc về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyển đổi dữ liệu thô này thành một dạng thích hợp hơn cho việc xử lý trong máy tính là rất cần thiết. Để chuyển đổi chúng, câu hỏi đầu tiên cần phải trả lời là nên biểu diễn một vùng ảnh dưới dạng biên hay dưới dạng một vùng hoàn chỉnh gồm tất cả những điểm ảnh thuộc về nó. Biểu diễn dạng biên cho một vùng phù hợp với những ứng dụng chỉ quan tâm chủ yếu đến các đặc trưng hình dạng bên ngoài của đối tượng, ví dụ như các góc cạnh và điểm uốn trên biên chẳng hạn. Biểu diễn dạng vùng lại thích hợp cho những ứng dụng khai thác các tính chất bên trong của đối tượng. Sự chọn lựa cách biểu diễn thích hợp cho một vùng ảnh chỉ mới là một phần trong việc chuyển đổi dữ liệu ảnh thô sang một dạng thích hợp hơn cho các xử lý về sau. Chúng ta còn phải đưa ra một phương pháp mô tả dữ liệu đã được chuyển đổi đó sao cho những tính chất cần quan tâm đến sẽ được làm nổi bật lên, thuận tiện cho việc xử lý chúng.

– Nhận dạng và giải thích: Đây là bước cuối cùng trong quá trình xử lý ảnh. Nhận dạng ảnh có thể được nhìn nhận một cách đơn giản là việc gán nhãn cho các đối tượng trong ảnh. Ví dụ đối với nhận dạng chữ viết, các đối tượng trong ảnh cần nhận dạng là các mẫu chữ, ta cần tách riêng các mẫu chữ đó ra và tìm cách gán đúng các ký tự của bảng chữ cái tương ứng cho các mẫu chữ thu được trong ảnh. Giải thích là công đoạn gán nghĩa cho một tập các đối tượng đã được nhận biết.
1.2. Một số khái niệm cơ bản trong xử lý ảnh
* Ảnh và điểm ảnh
Điểm ảnh được xem như là dấu hiệu hay cường độ sáng tại 1 toạ độ trong không gian của đối tượng và ảnh được xem như là 1 tập hợp các điểm ảnh.
* Mức xám, màu
Là số các giá trị có thể có của các điểm ảnh của ảnh
1.2.1. Khử nhiễu
Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh
• Nhiều hệ thống: là nhiễu có quy luật có thể khử bằng các phép biến đổi
• Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân → khắc phục bằng các phép lọc
1.2.2. Chỉnh mức xám
Nhằm khắc phục tính không đồng đều của hệ thống gây ra. Thông thường có 2 hướng tiếp cận:
• Giảm số mức xám: Thực hiện bằng cách nhóm các mức xám gần nhau thành một bó. Trường hợp chỉ có 2 mức xám thì chính là chuyển về ảnh đen trắng. Ứng dụng: In ảnh màu ra máy in đen trắng.
• Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy. Kỹ thuật này nhằm tăng cường độ mịn cho ảnh.
1.2.3. Trích chọn đặc điểm
Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh. Có thể nêu ra một số đặc điểm của ảnh sau đây:
Đặc điểm không gian: Phân bố mức xám, phân bố xác suất, biên độ, điểm uốn v.v..
Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc thực hiện lọc vùng (zonal filtering). Các bộ vùng được gọi là “mặt nạ đặc điểm” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn v.v..).
Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng và do vậy rất hữu ích trong việc trích trọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng. Các đặc điểm này có thể được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) v.v..
Việc trích chọn hiệu quả các đặc điểm giúp cho việc nhận dạng các đối tượng ảnh chính xác, với tốc độ tính toán cao và dung lượng nhớ lưu trữ giảm xuống.
1.2.4. Nhận dạng
Nhận dạng tự động (automatic recognition), mô tả đối tượng, phân loại và phân nhóm các mẫu là những vấn đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau. Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể:
Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân biệt (discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần của một lớp đã xác định.
Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:
1. Thu nhận dữ liệu và tiền xử lý.
2. Biểu diễn dữ liệu.
3. Nhận dạng, ra quyết định.
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
1. Đối sánh mẫu dựa trên các đặc trưng được trích chọn.
2. Phân loại thống kê.
3. Đối sánh cấu trúc.
4. Phân loại dựa trên mạng nơ-ron nhân tạo. Trong các ứng dụng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ để phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau. Do vậy, các phương thức phân loại tổ hợp hay được sử dụng khi nhận dạng và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp.
Việc giải quyết bài toán nhận dạng trong những ứng dụng mới, nảy sinh trong cuộc sống không chỉ tạo ra những thách thức về thuật giải, mà còn đặt ra những yêu cầu về tốc độ tính toán. Đặc điểm chung của tất cả những ứng dụng đó là những đặc điểm đặc trưng cần thiết thường là nhiều, không thể do chuyên gia đề xuất, mà phải được trích chọn dựa trên các thủ tục phân tích dữ liệu.
CHƯƠNG 2
GIỚI THIỆU VỀ OPENCV
2.1. Tổng quan về OPENCV
OPENCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh, và các vấn đề liên quan tới thị giác máy. OPENCV được thiết kế một cách tối ưu, sử dụng tối đa sức mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường. OPENCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-patform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Việc sử dụng thư viện OPENCV tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho cả mục đích phi thương mại lẫn thương mại..
2.2. Các phiên bản OPENCV
Cho tới nay, trải qua hơn 6 năm từ lúc phiên bản OPENCV đầu tiên được công bố, đã có lần lượt nhiều phiên bản OPENCV ra đời, tuy nhiên có thể chia thư viện này thành hai bản chính dựa trên những đặc điểm khác biệt lớn nhất của chúng: Phiên bản OPENCV thế hệ thứ nhất (hay còn gọi là phiên bản OpenCV 1.x) và phiên bản OPENCV thứ hai (hay còn gọi là phiên bản OPENCV 2.x).
2.3. Cấu trúc và nội dụng của OPENCV
OPENCV gồm 4 module chính và 2 module mở rộng:
– CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ, các cấu trúc dữ liệu cho ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h. CXCORE cũng chứa đại số tuyến tính và phương pháp thống kê, chức năng duy trì và điều khiển chuỗi. Một số ít, các chức năng đồ họa để vẽ trên.
– CV chứa các thuật toán về xử lý ảnh và định kích cỡ camera. Các chức năng hình họa máy tính cũng được đặt ở đây.
– CVAUX được mô tả trong tài liệu của OPENCV như chứa các mã cũ và thử nghiệm. Tuy nhiên các giao diện đơn cho sự nhận diện ảnh ở trong module này. Code sau này chúng được chuyên dụng cho nhận diện mặt và chúng được ứng dụng rộng rãi cho mục đích đó.
– HIGHGUI và CVCAM được đặt trong cùng thư mục là “otherlibs”.
– HIGHGUI chứa các giao diện vào ra cơ bản, nó cũng chứa các khả năng cửa sổ mở rộng và vào ra video.
– CVCAM chứa các giao diện cho video truy cập qua DirectX trên nền Windows 32bits.
Kèm theo thư viện là tài liệu hướng dẫn và các ví dụ mẫu thể hiện một phần các chức năng của công cụ OPENCV.
Các chức năng của OPENCV tập trung vào thu thập ảnh, xử lý ảnh và các thuật toán phân tích dữ liệu ảnh, bao gồm:
– Truy xuất ảnh và phim: Đọc ảnh số từ camera, từ file, ghi ảnh và phim.
– Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: Ma trận, vector, chuỗi, xâu và cây.
– Xử lý ảnh căn bản: Các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu nhỏ vả hiệu ứng histograms.
– Xử lý cấu trúc: Tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối chiếu bản mẫu, xấp xỉ các đơn vị hình học cơ sở – mặt phẳng, đa giác, eclipse, đường thẳng…
– Phân tích dữ liệu ảnh: Nhận dạng thực thể, theo dõi các chi tiết và phân tích chuyển động.
– Tạo giao diện đơn giản: Hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thông số.
– Chức năng vẽ, chú thích lên ảnh
2.4. Không gian màu, chuyển đổi giữa các không gian màu
Không gian màu là một mô hình toán học dùng để mô tảcác màu sắc trong thực tế được biểu diễn dưới dạng số học. Trên thực tế có rất nhiều không gian màu khác nhau được mô hình để sử dụng vào những mục đích khác nhau. Trong luận văn này ta sẽ tìm hiểu qua về ba không gian màu cơ bản hay được nhắc tới và ứng dụng nhiều, đó là hệ không gian màu RGB, HSV và CMYK.
2.5. Ảnh nhị phân, nhị phân hóa với ngưỡng động
Ảnh nhị phân là ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bằng hai giá trị 0 hoặc 255 tương ứng với hai màu đen hoặc trắng. Nhị phân hóa một ảnh là quá trình biến một ảnh xám thành ảnh nhị phân. Gọi f(x,y) là giá trị cường độ sáng của một điểm ảnh ở vị trí (x,y), T là ngưỡng nhị nhị phân. Khi đó, ảnh xám f sẽ được chuyển thành ảnh nhị phân dựa vào công th ức f(x,y) = 0 nếu f(x,y) ≤ T và f(x,y) = 255 nếu f(x,y) > T
Kết quả của việc nhị phân hóa một ảnh phụ thuộc vào ngưỡng T, có nghĩa là với mỗi ngưỡng T khác nhau thì ta có những ảnh nhị phân khác nhau.
Để thu được một ảnh nhị phân tốt mà không cần phải quan tâm tới các điều kiện ánh sáng khác nhau (không cần quan tâm tới ngưỡng T), người ta dùng một kĩ thuật sao cho với mọi ngưỡng xám khác nhau ta luôn thu được một ảnh nhi phân tốt. Kĩ thuật đó gọi là kĩ thuật nhị phân hóa với ngưỡng động (Dymamic threshold) hay nhị phân thích nghi (Adaptive threshold).
2.6. HISTOGRAM, cân bằng HISTOGRAM trong ảnh
HISTOGRAM của một ảnh là một biểu đồ nói lên mối quan hệ giữa các giá trị của pixel ảnh (điểm ảnh) và tần suất xuất hiện của chúng. Nhìn vào biểu đồ histogram ta có thể đoán được một ảnh sáng tối như thế nào.
Nếu một ảnh có HISTOGRAM lệch về phía phải biểu đồ, ta nói ảnh đó thừa sáng. Nếu lệch về phía trái thì ảnh đó thiếu sáng. Hình bên mô tả HISTOGRAM của một ảnh xám, ảnh này có HISTOGRAM lệch về phía trái của biểu đồ và do đó ảnh này là khá tối. Đối với ảnh màu, ta có thể tính toán HISTOGRAM cho từng kênh màu một.
* Cân bằng HISTOGRAM
Phương pháp làm cho biểu đồ HISTOGRAMcủa ảnh được phân bố một cách đồng đều. Đây là một biến đổi khá quan trọng giúp nâng cao chất lượng ảnh, thông thường đây là bước tiền xử lý của một ảnh đầu vào cho các bước tiếp theo.
Để cân bằng histogram của một ảnh màu, trước hết ta chuyển ảnh màu ở dạng RGB sang HSV, sau đó cân bằng thành phần kênh màu V (Value tức độ sáng) và biến đổi ngược lại.
2.7. Các phép toán hình thái học trong ảnh
Các phép toán hình thái học là những phép toán liên quan tới cấu trúc hình học (hay topo) của các đối tượng trong ảnh. Các phép toán hình thái học tiêu biểu bao gồm phép giãn nở (DIALATION) phép co/ ăn mòn (NEROSION), phép mở (OPENING) và phép đóng (CLOSING).
Giãn nở và ăn mòn là hai phép toán hình thái tổng quát và đây là hai quá trình ngược nhau. Trong phép giãn nở, các đường biên của một đối tượng trong ảnh được cộng thêm các pixel trong khi đó ở phép ăn mòn các đường biên của một đối tượng nào đó trong ảnh lại bị bỏ bớt đi. Số lượng các pixel được cộng thêm hay bớt đi khỏi đối tượng ở trong ảnh phụ thuộc vào kích thước và hình dáng của cấu trúc phần tử được dùng để xử lý. Sự giãn nở có xu hướng mở rộng các đường biên, đường viền, các vùng, trong khi sự ăn mòn có xu hướng giảm hoặc thậm chí loại bỏ các vùng nhỏ.
Quá trình ăn mòn và giãn nở có thể kết hợp lại với nhau hoặc có thể thực hiện một cách song hành để tạo nên những phương pháp xử lý hình thái phức tạp hơn. Vì cả sự ăn mòn lẫn giãn nở đều là phép toán phi tuyến, nên chúng không có nghịch đảo, vì vậy có thể thực hiện phép này sau phép kia trên cùng một vùng của một ảnh. Phần tử cấu trúc
Trong quá trình làm giãn nở và ăn mòn một ảnh nhị phân(hay ảnh xám), ta gặp một khái niệm quan trọng là phần tử cấu trúc. Nó là phần chính yếu của sự giãn nở và ăn mòn được sử dụng để thử các ảnh đầu vào. Kết quả của quá trình giãn nở hay ăn mòn khiến cho miền biên bị thay đổi thì ngay tại vùng biên thay đổi ta có thể dễ nhận thấy dáng dấp của phần tử cấu trúc, các phần tử cấu trúc hai chiều hoặc còn gọi là các phần tử cấu trúc phẳng là một ma trận (còn gọi là nhân) gồm các phần tử 0 và 1 có kích thước nhỏ hơn kích thước ảnh cần xử lý.
Lấy đường bao
Phép lấy đường bao áp dụng cho ảnh xám cũng thực hiện một cách nhanh chóng.
Với ảnh xám, chúng ta thấy rằng giá trị của phép toán sẽ cho ta biết nhiều điều về sự biến đổi nhanh chóng của ảnh sáng.Phép toán này thường dùng để tách đường bao của vùng sáng để chúng ta có thể đối xử với chúng như là một đối tượng hoàn chỉnh ( hay những phần hoàn chỉnh của những đối tượng). Đường bao kín của vùng ảnh được tìm thầy nhờ vào sự phần bù giữa phiên bản mở rộng của vùng ảnh và phần thu hẹp của vùng để lại một đường bao hoàn chỉnh. Đây chính là một cách để phát hiện mép, viền của các đối tượng trong ảnh.
CHƯƠNG 3
ỨNG DỤNG OPENCV VÀO BÀI TOÁN NHẬN DẠNG BIỂN SỐ XE
Mục tiêu của bài toán là khảo sát tính chính xác của việc ứng dụng OPENCV vào việc nhận dạng biển số xe. Đầu vào là một ảnh chứa biển số xe oto được chụp trực diện và đầu ra là một chuỗi kí tự của biển số đã được nhận dạng. Ở đây ta sẽ chia làm ba bài toán con: Định vị vùng chứa các ký tự từ ảnh đầu vào, tách các ký tự từ vùng ký tự và định vị biển số xe, rút trích bộ đặc trưng và nhận dạng cho từng ký tự. Ta có rất nhiều phương pháp để giải quyết bài toán này. Trong đó có những cách tiếp cận phổ biến sau.
3.1. Một số hướng giải quyết bài toán nhận dạng biển số xe
3.1.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 như 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ý 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 có hiệu quả đối với hệ thống trạm thu phí, trạm gác cổng, gửi xe tự động.
3.1.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 Roma được đại diện cho cách tiếp cận này.
– Ý tưởng: 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à nhận dạng các ký tự ở trên mỗi vùng con.
– Ưu điểm:Độ chính xác cao. Và 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 nhau 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.
3.1.3. Phân ngưỡng và tím vùng đối tượng
– Ý tưởng: Nhận thấy các vùng biển số là các vùng đặc trưng có hình chữ nhật, có tỉ lệ kích thước theo tiêu chuẩn. Vì vậy sau khi tách ngường và tìm vùng (OPENCV hỗ trợ findContourns) ta tìm những vùng có tỷ lệ theo kích thước giống với tỉ lệ của biển số xe. Để có thế lọc các vùng biển số một lần nữa thì ta tiếp tục tìm số vùng con trên vùng biển số và so sánh với số lượng ký tự của biển số.
–Ưu điểm: Độ phức tạp không cao, dễ áp dụng, xử lý nhanh đối với những ảnh chỉ chứa vùng biển số xe.
– Nhược điểm: Độ chính xác không cao với các ảnh bị nhiễu hoặc mờ
Với ưu điểm của phương pháp phân ngưỡng và tím vùng dữ liệu nên trong luận văn này tác giả sẽ chọn hướng giải quyết này để khảo sát độ chính xác của OPENCV trong việc nhận dạng biển số xe.
Vì biển số xe có những đặc trưng cơ bản được quy định bởi các cơ quan chức năng nên ta có thể dựa vào đặc trưng này để phân biệt với các đối tượng khác. Ta sẽ dựa vào các đặc trưng hình học của biển số xe để trích chọn ra vùng chứa biển số xe, các bước thực hiện như sau:
Bước 1: Load ảnh, tiền xử lý ảnh (chuyển ảnh sang ảnh nhị phân, giảm nhiễu,…).
Bước 2: Chuyển ảnh ban đầu thành ảnh xám rồi nhị phân hóa ảnh đó. Để ảnh nhị phân thu được kết quả tốt và không bị phụ thuộc vào các điều kiện ánh sáng khác nhau, ta sử dụng phương pháp nhị phân hóa với ngưỡng động (ADAPTIVE THRESHOLD) như đã nói ở trên.
Bước 3: Tìm các đường bao quanh đối tượng. Sau khi nhị phân ảnh, các đối tượng sẽ là các khối hình đen trên nền trắng, với mỗi đối tượng ta luôn vẽ được một đường biên bao quanh đối tượng đó. Để tránh trình trạng các đối tượng không tạo ra được các đường biên khép kín do các vết dạn nứt hoặc nhiễu gây ra, trước khi tìm biên ta nên làm mịn đường biên bằng các phép giãn nở (hoặc co) .Xác định hình chữ nhật bao quanh các đường bao quanh đã tìm được. Đường bao quanh đã tìm được là một chuỗi các điểm biên nối liền của đối tượng, dựa vào tọa độ của các điểm biên này ta sẽ xác định được hình chữ nhật ngoại tiếp bao quanh đối tượng.Tìm ra các hình chữ nhật có khả năng là vùng chứa biển số.
Bước 4:Nhận dạng ký tự từ hình chữ nhật có khả năng là biển số
3.2. Tiền xử lý
Đây là các thao tác xử lý trên ảnh để chuẩn bị cho những bước phân tích tiếp theo. Chẳng hạn như các thao tác: Chọn ngưỡng để chuyển ảnh đa cấp xám, ảnh màu về dạng nhị phân, giảm nhiễu để loại bỏ những dữ liệu không liên quan, phân đoạn để tách các thành phần trong ảnh và cuối cùng là làm mảnh hay dò biên để dễ dàng xác định các vùng, các đặc trưng thích hợp và đối tượng cần quan tâm.
3.3. Định vị vùng chứa biển số xe
Mục đích: Từ bức ảnh nhận được sau bước tiền xử lý ảnh, áp dụng các thuật toán trích ra được vùng ảnh nhỏ nhất chứa biển số.
Các phương pháp: Có nhiều phương pháp khác nhau để thực hiện nhiệm vụ này nhưng trong luận văn này tác giả xin phép chỉ tìm hiểu về 2 phương pháp sau:
- Phương pháp dùng biến đổi HOUGH: Dựa vào đặc trưng cạnh biên trích được, áp dụng các phương pháp xác định đường thẳng nhờ phép biến đổi Hough để phát hiện các cặp đường thẳng gần song song ghép thành một ảnh biển số.
- Phương pháp hình thái học: Dựa vào đặc trưng hình thái của biển số xe như màu sắc, độ sáng, sự đối xứng… để xác định và trích ra ảnh biển số.
Vì phương pháp hình thái học có thể dễ dàng cài đặt và cũng có độ chính xác khá cao nên tác giả sẽ sử dụng phương pháp hình thái học trong nghiên cứu này.
Sau khi đã xác định được vùng có khả năng là biển số, ta sẽ cắt vùng hình đó, đồng thời lấy ra các kí tự trong vùng đó lưu vào một mảng để thực hiện việc nhận dạng.
3.4. Nhận dạng kí tự
Các kí tự sau khi được cách ly là những kí tự đơn lẽ trong một khung hình chữ nhật có kích thước nhất định. Để nhận dạng được kí tự này ta có thể sử dụng rất nhiều phương pháp khác nhau, từ đơn giản như phương pháp sử dụng độ tương quan chéo (cross correlation) cho đến những phương pháp sử dụng các mô hình máy học (machine learning) như mạng Neuron nhân tạo, SVM…
Đối với các phương pháp sử dụng máy học, ta cần sưu tầm một lượng mẫu các kí tự nhất định, từ vài trăm cho tới hàng nghìn mẫu rồi đưa vào các bộ huấn luyện, kết quả huấn luyện này sẽ được dùng để nhận dạng các mẫu mới. Độ chính xác của kết quả nhận dạng nói chung của phương pháp này tùy thuộc vào độ phức tạp của mô hình, khối lượng mẫu huấn luyện, thời gian tính toán. Trong phần này ta sử dụng phương pháp SVM để nhận dạng kí tự.
Phương pháp SVM (Chi tiết về phương pháp này bạn đọc có thể tham khảo trong các tài liệu chuyên ngành khác). SVM (Support Vector Machine) là một mô hình máy học giám sát được dùng trong việc phân tích, phân lớp – dữ liệu dựa vào các siêu phẳng. Giả sử ta có một tập dữ liệu hai chiều như hình bên, khi đó ta có thể phân lớp dữ liệu này thành hai phần nhờ một siêu. Siêu phẳng trong mặt phẳng là một đường thằng, trong không gian 3 chiều là một mặt phẳng và tổng quát trong không gian n chiều là một không gian n-1 chiều. Trong trường hợp dữ dữ liệu là không tuyến tính, ta cần ánh xạ tập dữ liệu đó lên một không gian có số chiều lớn hơn để thuận tiện cho việc phân loại dữ liệu, nhiệm vụ là cần phải tìm siêu phẳng sao cho khoảng cách tới các biên của dữ liệu là lớn nhất. Hiểu một cách đơn giản về phương pháp này như sau: Cho một tập các mẫu huấn luyện, với mỗi mẫu được gắn vào một nhãn, quá trình huấn luyện SVM sẽ xây dựng một mô hình cho phép dự đoán một tập dữ diệu khác thuộc về nhãn nào, tức phân loại tập dữ liệu đó thuộc vào lớp nào.
Quay lại bài toán nhận dạng kí tự biển số xe ta đang xét, làm sao để nhận dạng được các kí tự này dựa trên mô hình SVM?Trước hết cần phải nhận thấy rằng SVM là một bộ máy phân loại dữ liệu, muốn sử dụng được nó ta cần phải có dữ liệu, dữ liệu đối với các kí tự mà ta cần nhận dạng ởđây chính là các đặc trưng trong ảnh của kí tự đó. Giả sử ta cần phân loại 30 lớp dữ liệu (tương ứng với 30 kí tự trong biển số xe), với mỗi lớp dữ liệu, ta tính toán được 10 vector đặc trưng (10 mẫu), và mỗi vector đặc trưng tưng ứng với các đặc trưng trong một ảnh. Khi đó ta sẽ đưa vào bộ huấn luyện SVM toàn bộ dữ liệu này, sau đó với một ảnh bất kì, ta sẽ tính toán một vector đặc trưng của ảnh đó, mô hình SVM sẽ xem xét xem dữ liệu này (tức vector đặc trưng này) thuộc vào lớp nào trong số những lớp mà nó đã được huấn luyện. Tính toán đặc trưng trong ảnh.
Đặc trưng trong ảnh là những đặc điểm riêng biệt giúp phân biệt ảnh này với ảnh khác. Việc xem xét như thế nào là các đặc trưng trong ảnh là một việc không có quy ước trước, nó phụ thuộc vào cách nghiên cứu, cài đặt của từng trường hợp cụ thể và vẫn đang được nghiên cứu để đưa ra những phương pháp tốt nhất. Trong phần này ta sẽ tính toán các vector đặc trưng dựa trên ý tưởng của phương pháp Haar
3.5. Cài đặt chương trình Nhận dạng biển số xe ô tô
Ta tạo một chương trình dựa trên Dialog của MFC, đặt tên project là LPR (License Plate Recognition). Về cơ bản có thể chia chương trình thành 3 phần chính như sau: Phần chứa giao diện chính của chương trình (được định nghĩa trong file LPRDlg.h và LPRDlg.cpp), phần chứa các hàm chính cho việc phát hiện, nhận dạng biển số xe và không liên quan tới giao diện (được định nghĩa trong file LprCore.h và LprCore.cpp) và phần chứa một công cụ giúp cho ta có thể huấn luyện được mô hình SVM một cách tùy ý (được định nghĩa trong file TrainSVM.h và TrainSVM.cpp). Ngoài ra còn có một số phần nhỏ giúp cho việc lập trình được dễ dàng hơn như phần chuyển đổi các biến dữ liệu trong MFC chằng hạn (unity_conversion.h).
3.6. Kết quả và đánh giá theo nhóm dữ liệu
Có 2 nhóm dữ liệu để đánh giá độ chính xác của OPENCV trong nhận dạng biển số xe. Đó là các hình ảnh lấy từ internet, các hình ảnh tự chụp bằng điện thoại di động.
3.6.1. Bộ dữ liệu ảnh từ internet
Sau đây là bảng thống kê về kết quả thu được với bộ dữ liệu thu thập được từ internet.
| Loại ảnh | Số lượng ảnh | Định vị | Tách ký tự | Nhận dạng | Thời gian TB (s) |
| Ảnh chụp ban ngày | 450 | 411(91.3%) | 406(90.2%) | 399(88.6%) | 10.578 |
| Ảnh chụp ban đêm | 150 | 125 (83.3%) | 120(80%) | 113(75.3%) | 15.212 |
| Tổng | 600 | 536(89.3%) | 526(87.6%) | 512(85.3%) | 12.895 |
– Môi trường ánh sáng ban ngày đối với các ảnh lấy từ internet thì tỉ lệ nhận dạng chính xác là 88.6%. Thời gian nhận dạng trung bình là 10.578s.
– Môi trường ban đêm chụp có đèn flash thì tỉ lệ chính xác là 75.3%. Thời gian nhận dạng trung bình là 15.212s.
Đối với các ảnh từ internet, các ảnh có kích thước khác nhau nên phải chuẩn hóa hình ảnh trước khi đưa vào thử nghiệm. Tuy nhiên có quá nhiều ảnh với nhiều góc độ và chất lượng khác nhau nên việc chuẩn hóa và tìm ngưỡng trở nên khó khăn dẫn đến nhiều trường hợp không nhận dạng được biển số.
3.6.2. Bộ dữ liệu ảnh tự thu thập
Sau đây là bảng thống kê về kết quả thu được với bộ dữ liệu mà tác giả tự thu thập được bằng cách chụp hình bằng điện thoại di động
| Loại ảnh | Số lượng ảnh | Định vị | Tách ký tự | Nhận dạng | Thời gian TB (s) |
| Ảnh chụp ban ngày | 150 | 145(96.6%) | 143(95.3%) | 138(92%) | 8.545 |
| Ảnh chụp ban đêm | 100 | 92(92%) | 90(90%) | 85(85%) | 13.408 |
| Tổng | 250 | 237(94.8%) | 233(93.2%) | 223(89.2%) | 10.976 |
– Môi trường ánh sáng ban ngày trong điều kiện thời tiết tốt, không mưa, không bị ngược sáng thì tỉ lệ nhận dạng chính xác là 92%. Thời gian nhận dạng trung bình là 8.545s.
– Môi trường ban đêm chụp bằng điện thoại di động có đèn flash thì tỉ lệ chính xác là 85%. Thời gian nhận dạng trung bình là 13.408s.
Dễ dàng nhận ra là đối với ảnh tự chụp thì việc chuẩn hóa dữ liệu sẽ dễ dàng hơn vì hình có cùng kích thước và chất lượng không chênh lệch quá nhiều. Vì vậy tỉ lệ nhận dạng biển số xe với bộ dữ liệu tự thu thập là cao hơn so với bộ dữ liệu từ internet.
Tiếp theo ta sẽ so sánh giữa các ảnh có xe cùng biển số và ảnh chỉ có biển số xe trong điều kiện ban ngày
| Loại ảnh | Số lượng ảnh | Định vị | Tách ký tự | Nhận dạng | Thời gian TB (s) |
| Ảnh có xe | 100 | 95(95%) | 93(93%) | 90(90%) | 8.253 |
| Ảnh chỉ có biển số | 100 | 97(97%) | 96(96%) | 94(94%) | 5.785 |
| Tổng | 200 | 192(96%) | 189(94.5%) | 184(92%) | 7.02 |
Ta nhận thấy đối với các ảnh chỉ có biển số xe thì việc nhận dạng sẽ chính xác hơn. Các trường hợp có cả xe và biển số thì có thể gây ra hiện tượng nhiễu làm việc nhận dạng trở nên không chính xác
Từ những bảng số liệu trên thì ta rút ra được một số nguyên nhân đối với các trường hợp không nhận dạng được biển số xe.
- Các trường hợp không nhận dạng được biển số là do những nguyên nhân sau:
– Biển số xe bị mờ, có vật thể lạ, không rõ ràng.
– Biển số xe bị nhiễu do các họa tiết của xe.
– Dữ liệu training còn thiếu.
– Hình ảnh chưa được chuẩn hóa tốt.
- Hạn chế:
– Hiệu năng của hệ thống xây dựng còn kém (Tốc độ xử lý chậm, khả năng xử lý nhiễu hạn chế).
– Chỉ nhận dạng biển số xe ôtô.
– Số lượng biển số xe đưa vào nghiên cứu và thử nghiệm còn ít so với thực trạng thực tế.
– Tỉ lệ nhận dạng nhầm và không nhận dạng được là còn cao.
- Các khó khăn về phương pháp:
– Đa số các hướng tiếp cận phát hiện và nhận dạng vật thể một cách tự động hiệu quả nhất hiện nay thường dựa vào việc tìm ra mô hình hoặc bộ phân lớp hoặc một cơ sở dữ liệu đặc tả tốt nhất. Việc hệ thống có khả năng hoạt động tốt trong bất kỳ tình huống, điều kiện thu nhận ảnh nào trong bất kỳ tình huống nào với các tư thế quan sát xe khác nhau là cực kỳ khó khăn, mặc dù đối với con người, việc này là hoàn toàn đơn giản trong đa số các trường hợp thông thường.
– Kiểu dáng biển số xe: Kiểu dáng biển số xe có thể nói là đa dạng cũng như phức tạp đối với người quan sát hoặc đối với thuật toán phát hiện và nhận dạng. Bên cạnh đó sự đa dạng về màu sắc cũng là một thách thức đối với quá trình thực hiện. Ngoài ra, biển số xe thường bị biến dạng và xuống cấp theothời gian
– Tư thế xe và góc độ quan sát: Hệ thống khó có thể phát hiện ra đối tượng với tư thế quan sát xe nhìn quá nghiêng.
– Điều kiện ghi nhận ảnh: Trong các điều kiện chiếu sáng khác nhau (bao gồm kiểu chiếu sáng, cường độ sáng và màu sắc của nguồn sáng) cũng như các đặc tính của hệ thống thu thập dữ liệu ảnh (camera, máy ảnh, hệ thống gương phản xạ, thấu kính, …) góp phần ảnh hưởng không nhỏ đến kết quả phát hiện vànhận dạng của hệ thống.
– Nền ảnh và điều kiện của môi trường ghi nhận ảnh: Hai vấn đề này là đáng được qua tâm bởi sự ảnh hưởng của nó đến quá trình phát hiện là không nhỏ. Khi nền ảnh càng chứa nhiều thành phần (bao gồm nhiều chi tiết rối rắm, màu sắc, hình dáng phức tạp giống với đối tượng – nhưng không phải đối tượng – …) hoặc môi trường không đồng nhất về ánh sáng (ngược sáng, ảnh bị bóng râm che một phần hoặc toàn phần lên đối tượng) thì vấn đề phát hiện càng thêm khó khăn và phức tạp.
KẾT LUẬN
Kết quả đạt được
Đề tài nghiên cứu những thuật toán trong nhận dạng và xử lý ảnh và áp dụng vào việc nhận dạng các biển số xe oto tại Việt Nam. Hệ thống đáp ứng được yêu cầu về việc phát hiện và nhận dạng chính xác biển số xe oto để đưa ra thông báo hỗ trợ cho các công việc phù hợp. Trên thế giới các hệ thống với mục đích tương tự hiện vẫn đang được nghiên cứu và thử nghiệm, đặc biệt với các trung tâm nghiên cứu của các hãng chế tạo ô tô như Toyota, Ford thì hệ thống vẫn chưa đưa ra thương mại hóa.Với các hệ thống biển số xe oto giữa các quốc gia vẫn có nhiều điểm khác nhau, bên cạnh đó số lượng đề tài nghiên cứu về vấn đề này tại Việt Nam vẫn chưa nhiều. Dựa theo các bài báo khoa học được công bố trình bày về vấn đề này thì tác giả nghiên cứu có những nét riêng trong quá trình phát hiện và nhận dạng biển số xe oto.
Hạn chế
Tuy nhiên, với thời gian nghiên cứu cho phép và lượng kiến thức của nhóm giới hạn, nên đề tài dừng lại ở việc nghiên cứu và còn nhiều vấn đề cần phải giải quyết, tiêu biểu nhất là số lượng biển số xe oto. Chương trình nhận dạng được còn ít, và tỉ lệ nhận dạng nhầm còn cao. Quá trình thực hiện đề tài tác giả gặp phải một số khó khăn cả về chủ quan lẫn khách quan. Các công trình nghiên cứu trong và ngoài nước hiện tại vẫn đang thử nghiệm nên số lượng biển số xe nhận dạng được vẫn còn bị giới hạn, đồng thời tập dữ liệu phục vụ cho việc huấn luyện và mẫu thử cũng không được công bố, hoặc không phù hợp với hệ thống biển số xe tại Việt Nam nên em không thể kế thừa và phát triển từ những đề tài đó mà phải xây dựng lại các tập cơ sở dữ liệu từ đầu. Song song đó thì các yếu tố khách quan về các biển số xe trong thực tế tại Việt Nam cũng là một khó khăn rất lớn, ảnh hướng nhiều đến quá trình phát hiện và nhận dạng của thuật toán.
Hướng phát triển của đề tài
Trong hướng nghiên cứu tiếp theo, khắc phục những hạn chế về việc thu ảnh bằng cách sử dụng camera chuyên dụng để cho chất lượng ảnh tốt hơn, giảm thiểu việc nhận dạng nhầm giữa các biển số xe. Việc mở rộng cơ sở dữ liệu biển số xe là cực kỳ quan trọng và cần thiết ở hướng nghiên cứu tiếp theo. Trong tương lai, khắc phục được những mặt hạn chế của đề tài thì chương trình có thể mở rộng hơn về phạm vi nghiên cứu đối với các biển số xe tại Việt Nam và sau đó có thể kết hợp với các hệ thống khác như nhận dạng bằng điện thoại, tìm kiếm biển số xe.
E:\DỮ LIỆU COP CỦA CHỊ YẾN\LUAN VAN DUY TAN\LUAN VAN DUY TAN\PHAN HUYNH THIEN AN\New folder (2)


