1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu về opencv và ứng dụng vào bài toán trách chọn vùng biển số xe ô tô ở việt nam

38 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Về Opencv Và Ứng Dụng Vào Bài Toán Trích Chọn Vùng Biển Số Xe Ô Tô Ở Việt Nam
Tác giả Đinh Viết Hưng
Người hướng dẫn ThS. Nguyễn Thị Hồng Anh
Trường học Trường Đại Học Vinh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp đại học
Năm xuất bản 2016
Thành phố Vinh
Định dạng
Số trang 38
Dung lượng 1,98 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU VỀ THƯ VIỆN MÃ NGUỒN MỞ OPENCV VÀ TỔNG (6)
    • 1.1 Giới thiệu về thƣ viện mã nguồn mở OpenCV (6)
      • 1.1.1. Giới thiệu về OpenCV (6)
      • 1.1.2 Hướng dẫn sử dụng OpenCV trên Window (6)
    • 1.2 Khái niệm về nhận dạng biển số xe (11)
      • 1.2.1 Khái niệm và ứng dụng (11)
      • 1.2.2 Phân loại biển số xe (12)
    • 1.3 Một số hướng giải quyết bài toán phát hiện biển số xe (15)
      • 1.3.1 Hướng tiếp cận phát triển vùng (15)
      • 1.3.2 Hướng tiếp cận dò biên và biến đổi Hough (16)
      • 1.3.3. Hướng tiếp cận phát hiện biên và Heuristic (16)
    • 1.4 Hướng giải quyết của đề tài (0)
  • CHƯƠNG 2. PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE (19)
    • 2.1. Một số khái niệm cơ bản (19)
    • 2.2. Biên và các phương pháp phát hiện biên (19)
      • 2.2.1. Khái niệm về biên (19)
      • 2.2.2. Các phương pháp phát hiện biên (19)
    • 2.3. Phát hiện vùng chứa biển số xe (22)
      • 2.3.1. Biến đổi hình thái học (22)
      • 2.3.2. Tìm chính xác vùng chứa biển số (24)
  • CHƯƠNG 3 CHƯƠNG TRÌNH TRÍCH CHỌN VÙNG BIỂN SỐ (28)
    • 3.1 Giới thiệu các lớp cơ bản (28)
    • 3.2 Giao diện chương trình (30)
    • 3.3 Kết quả thực nghiệm (33)
  • KẾT LUẬN (37)
  • TÀI LIỆU THAM KHẢO (38)

Nội dung

GIỚI THIỆU VỀ THƯ VIỆN MÃ NGUỒN MỞ OPENCV VÀ TỔNG

Giới thiệu về thƣ viện mã nguồn mở OpenCV

OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy tính, cung cấp hơn 500 hàm và 2500 thuật toán tối ưu cho xử lý ảnh và các vấn đề liên quan đến thị giác máy Thư viện này được thiết kế để tận dụng sức mạnh của các dòng chip đa lõi, cho phép thực hiện các phép tính toán trong thời gian thực với tốc độ đáp ứng đủ nhanh cho nhiều ứng dụng OpenCV hỗ trợ chạy trên nhiều nền tảng khác nhau như Windows, Linux, Mac, và iOS Người dùng có thể sử dụng thư viện này miễn phí cho cả mục đích thương mại và phi thương mại, tuân theo quy định về phần mềm mã nguồn mở BSD.

Dự án OpenCV bắt đầu từ năm 1999 và được giới thiệu tại hội nghị IEEE về thị giác máy tính vào năm 2000 Tuy nhiên, phiên bản chính thức OpenCV 1.0 chỉ ra mắt vào năm 2006, với bản 1.1 pre-release vào năm 2008 Tháng 10 năm 2009, OpenCV phiên bản 2.x ra đời, đánh dấu sự chuyển mình với giao diện C++ và nhiều cải tiến so với phiên bản đầu tiên.

Thư viện OpenCV, ban đầu được Intel hỗ trợ và sau đó được phát triển bởi Willow Garage - một phòng thí nghiệm chuyên về công nghệ robot, hiện vẫn là một thư viện mã nguồn mở OpenCV được duy trì và phát triển bởi một tổ chức phi lợi nhuận.

- profit foundation) và được sự hưởng ứng rất lớn từ cộng đồng

Thông tin chi tiết về OpenCV có thể tham khảo tại trang chủ: http://opencv.willowgarage.com/wiki/

1 1.2 Hướng dẫn sử dụng OpenCV trên Window

Để bắt đầu, bạn cần tải về thư viện OpenCV, tốt nhất là phiên bản mới nhất từ trang web chính thức Chọn phiên bản đã được xây dựng sẵn, ví dụ như phiên bản 2.4.10, được cập nhật lần cuối vào ngày 2 tháng 10 năm 2014 Sau khi tải về, bạn thực hiện cài đặt theo cách thông thường và để mặc định thư mục cài đặt là C:\ Sau khi cài đặt xong, thư mục sẽ có dạng C:\opencv Cuối cùng, bạn cần tùy chỉnh để làm việc với OpenCV thông qua Microsoft Visual Studio.

Phiên bản Visual Studio sử dụng ở đây là phiên bản Visual Studio 2010:

Tạo một project mới: New > Project, trong cửa sổ New Project chọn Visual C++, Win32 console application Đặt tên project là opencv

Select OK and then click Next In the next dialog box, choose "Application Type" as Console application and "Additional options" as Empty project Finally, click Finish to complete the initialization process.

To create a new project, start with an empty project and add at least one source file for the program to run In Solution Explorer, right-click on Source Files and select Add -> New Item.

Hộp thoại Add New Item hiện ra, ta chọn kiểu

Để thêm vào tệp C++ (.cpp), bạn cần nhập tên tệp trong ô "Name", ví dụ như "FirstApp.cpp" Bây giờ, bạn có thể bắt đầu thêm mã vào tệp này.

Để chạy chương trình với thư viện OpenCV, bạn cần sử dụng #include và gọi hàm main Ngoài ra, cần tùy chỉnh một số thuộc tính của project để đảm bảo chương trình hoạt động hiệu quả.

To configure OpenCV in your project, navigate to Project -> Properties or press Alt + F7 to open the Properties dialog In the OpenCV Property Pages, select VC++ Directories under Configuration Properties On the right side, locate Include Directories and Library Directories, and set their paths to the corresponding folders of the OpenCV library.

In the "Include Directories" section, customize the path to C:\opencv\build\include For the "Library Directories," set the path to C:\opencv\build\x86\vc10\lib if using a 32-bit operating system, or C:\opencv\build\x64\vc10\lib for a 64-bit operating system.

Tiếp theo, trong hộp thoại opencv Property Pages -> Configuration Properties -

> Linker, chọn Input, tương ứng ở ô bên phải, thêm vào các giá trị cho mục Additional

Dependencies là opencv_core243d.lib, opencv_imgproc243d.lib, opencv_highgui243d.lib

Khi thêm các thư viện vào chương trình, cần chú ý rằng chúng phải tương ứng với các tiêu đề đã khai báo Tùy thuộc vào mục đích sử dụng, bạn có thể thêm các thư viện khác nhau Ví dụ, nếu cần sử dụng các hàm liên quan đến video, bạn sẽ cần thêm vào các tiêu đề tương ứng.

Để sử dụng thư viện OpenCV trong dự án, bạn cần thêm opencv_video243d.lib vào phần Additional Dependencies Ký tự "d" ở cuối tên file chỉ ra rằng bạn đang làm việc trong chế độ debug Ngoài ra, bạn cũng có thể sử dụng các thư viện không có chữ "d" ở cuối nếu không cần chế độ debug.

Opencv_core243.lib… trong chế độ release Tuy nhiên khi đang còn học tập và cần nhiều chỉnh sửa ta nên để ở chế độ debug

Khi hoàn thành việc dịch một chương trình, cần chú ý đến các file *.dll để đảm bảo chương trình có thể chạy Cách đơn giản nhất là sao chép các file *.dll tương ứng như opencv_core243d.dll và opencv_imgproc243d.dll vào thư mục chứa file *.exe Các file này thường nằm trong C:\opencv\build\x86\bin cho hệ 32 bit hoặc C:\opencv\build\x64\bin cho hệ 64 bit Đối với các phiên bản OpenCV cũ hơn, cần sao chép thêm file tbb_debug.dll (trong chế độ debug) hoặc tbb.dll (trong chế độ release) vào thư mục chứa file *.exe, vì tbb.dll là file quan trọng và thiếu nó sẽ gây ra lỗi cho chương trình.

Sau khi hoàn thành việc chỉ dẫn thư mục chứa header, thư viện và liên kết tới các thư viện tương ứng, chúng ta có thể bao gồm các header của OpenCV vào chương trình và sử dụng các hàm của OpenCV một cách hiệu quả.

#include

#include

#include

#include using namespace std; using namespace cv; void main()

Khái niệm về nhận dạng biển số xe

1.2.1 Khái niệm và ứng dụng

Hệ thống nhận dạng biển số xe sử dụng công nghệ phân tích hình ảnh để xác định biển số từ video và hình ảnh ghi lại Hệ thống này không chỉ giúp nhận diện biển số mà còn cung cấp thông tin liên quan như chủ sở hữu xe và tốc độ di chuyển.

Ứng dụng nhận dạng biển số xe có thể được phân loại dựa trên mục đích sử dụng, với hai loại chính: ứng dụng phục vụ cho việc giám sát an ninh và ứng dụng hỗ trợ quản lý giao thông.

Loại 1: Giới hạn vùng nhìn:

Ảnh đầu vào được thu trực tiếp từ các thiết bị ghi nhận ảnh kỹ thuật số, thường chỉ tập trung vào vùng có biển số xe.

Nguyên lý hoạt động của hệ thống ghi nhận biển số xe yêu cầu các phương tiện giao thông di chuyển với tốc độ chậm, giúp máy có thể thu được hình ảnh rõ nét của biển số.

Các ứng dụng nhận dạng biển số xe thường được sử dụng tại các trạm kiểm soát, trạm thu phí, bãi gửi xe tự động và các trạm gác cổng.

Loại 2: Không giới hạn vùng nhìn:

Đầu vào cho quá trình nhận diện biển số xe là những bức ảnh được ghi lại từ các thiết bị tự động, không bị giới hạn bởi góc chụp hay các đối tượng xung quanh Ảnh có thể bao gồm nhiều yếu tố khác như người, cây cối, hay đường phố, miễn là khu vực chứa biển số xe đủ rõ ràng để nhận diện các ký tự.

Nguyên lý hoạt động của hệ thống nhận dạng biển số xe dựa trên khả năng không giới hạn vùng nhìn từ thiết bị ghi hình như camera hay máy ảnh Quy trình bắt đầu bằng việc dò tìm trong ảnh để xác định chính xác vùng biển số xe Sau khi tách vùng, hệ thống tiến hành nhận dạng biển số Cuối cùng, tùy thuộc vào mục đích sử dụng, kết quả nhận dạng sẽ được truyền đi hoặc lưu trữ để phục vụ nhu cầu khác.

Ứng dụng này không phụ thuộc vào hình ảnh thu được, cho phép sử dụng linh hoạt tại nhiều địa điểm như các khu vực điều tiết giao thông và những vị trí nhạy cảm như ngã ba, ngã tư Nó giúp kiểm soát và phát hiện các hành vi vi phạm an toàn giao thông hiệu quả.

Yêu cầu thiết bị cho nghiên cứu bao gồm máy quét, đèn chiếu, bộ phận thu - tách hình ảnh, máy tính và các thiết bị hỗ trợ khác Mục tiêu của ứng dụng trong quá trình xây dựng là phát triển một ứng dụng loại mớ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 phát hiện đƣợc biển số xe từ ảnh chụp

Hình 1.1: Sơ lược về hệ thống nhận dạng biển số xe 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 phát triển để giám sát và kiểm soát phương tiện giao thông Dưới đây là một số ứng dụng phổ biến của hệ thống này, giúp nâng cao hiệu quả quản lý giao thông và đảm bảo an toàn cho người dân.

- 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 là một yếu tố quan trọng trong việc quản lý và phát hiện các phương tiện giao thông vượt biên giới bất hợp pháp Mỗi quốc gia có quy định riêng về biển số xe, và việc lắp đặt hệ thống “Nhận dạng biển số xe” tại các trạm kiểm soát sẽ tăng cường hiệu quả kiểm tra và đảm bảo 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

1.2.2 Phân loại biển số xe

Trước tiên là quy định biển số của 63 tỉnh thành biển trắng chữ đen):

Bảng 1.1: Biển số xe các tỉnh thành trên cả nước (theo Wikipedia)

47- Đắk Lắk 48- Đắk Nông 49- Lâm Đồng

Hồ Chí Minh là một thành phố lớn và phát triển, nằm gần các tỉnh Đồng Nai, Bình Dương, Long An, Tiền Giang, Vĩnh Long, Cần Thơ, Đồng Tháp, An Giang, Kiên Giang, Cà Mau, Tây Ninh, Bến Tre, Bà Rịa - Vũng Tàu, và Quảng Bình Những tỉnh này không chỉ có vị trí địa lý thuận lợi mà còn đóng góp vào sự phát triển kinh tế và văn hóa của khu vực phía Nam Việt Nam.

74- Quảng Trị 75- Huế 76- Quảng Ngãi

77- Bình Định 78- Phú Yên 79- Khánh Hòa 80- Các đợn vịnh kinh tế thuộc TW hàng không) 81- Gia Lai

82- Kon Tum 83- Sóc Trăng 84- Trà Vinh 85- Ninh Thuận 86- Bình Thuận 88- Vĩnh Phúc 89- Hƣng Yên 90- Hà Nam 92- Quảng Nam 93- Bình Phước 94- Bạc Liêu 95- Hậu Giang 97- Bắc Cạn 98- Bắc Giang 99- Bắc Ninh

Những quy định về màu sắc và chữ số đặc biệt:

- Màu xanh chữ trắng là biển xe của cơ quan hành chính sự nghiệp:

 Trực thuộc chính phủ là biển xanh 80

 Các tỉnh thành thì theo số tương ứng

- Màu đỏ chữ trắng là biển xe trong quân đội:

Bảng 1.2: Biển số xe trong quân đội (theo Wikipedia)

AT: Binh đoàn 12 KA: Quân khu 1 QH: Quân chủng Hải quân

AD: Quân đoàn 4, Binh đoàn Cửu Long KB: Quân khu 2 QK, QP: Quân chủng PK - KQ BB: Bộ binh KC: Quân khu 3 TC: Tổng cục Chính trị

BC: Binh chủng Công binh KD: Quân khu 4 TH: Tổng cục Hậu cần

BH: Binh chủng Hóa học KV: Quân khu 5 TK: Tổng cục Công nghiệp

Quốc phòng BP: Bộ Tƣ lệnh biên phòng KP: Quân khu 7 TT: Tổng cục Kỹ thuật

HB: Học viện Lục quân KK: Quân khu 9 TM: Bộ tổng Tham mưu

HH: Học viện Quân y PP : Các quân y viện VT : Tập đoàn Viễn thông quân dội Viettel

- 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ự

- Những xe mang biển 80 gồm có:

Các Ban của Trung ƣơng Đảng

Văn phòng Chính phủ Bộ ngoại giao Đài truyền hình Việt

Văn phòng Chủ tịch nước Bộ Công an Viện kiểm soát nhân dân tối cao Đài tiếng nói Việt Nam

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ủ

Toà án nhân dân tối cao

Thông tấn xã Việt Nam

Báo nhân dân Thanh tra Nhà nước

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ụ: 30A là xe của Công An - Cảnh Sát thành phố Hà Nội

Do các điều kiện hạn chế, chúng tôi chỉ sử dụng ảnh đầu vào là loại biển có nền trắng và chữ đen thông thường, với chỉ một dòng ký tự.

Một số hướng giải quyết bài toán phát hiện biển số xe

1.3.1 Hướng tiếp cận phát triển vùng Ý 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ố

Nhược điểm của phương pháp nhận diện biển số xe là khi ảnh có nhiều đối tượng không liên quan, như cảnh vật xung quanh, điều này làm giảm hiệu quả Tuy nhiên, phương pháp này vẫn rất hiệu quả cho các hệ thống như trạm thu phí, trạm gác cổng và gửi xe tự động.

1.3.2 Hướng tiếp cận dò biên và biến đổi Hough Ý tưởng của cách tiếp cận này là : Biển số xe được bao boc 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

Một nhược điểm của phương pháp này là độ phức tạp trong tính toán khá cao, đặc biệt khi ảnh chứa nhiều đối tượng khác nhau, dẫn đến khối lượng tính toán tăng đáng kể Mục tiêu chính là xác định chính xác vùng con nào chứa biển số xe.

1.3.3 Hướng tiếp cận phát hiện biên và Heuristic: Ý tưởng chính: Áp dụng mặt nạ Sobel để dò tìm cạnh trong ảnh, kết quả là ảnh chứa tập các cạnh, gọi là G x, y) Sau đó, áp dụng một số heuristic về biển số xe nhƣ kích thước, tỉ lệ chiều cao/chiều rộng, hoặc sử dụng một cửa sổ di chuyển trên toàn bộ

G x, y) để tìm ra các vùng có số cạnh thoã điều kiện

* Ƣu điểm: Không lệ thuộc nhiều vào ảnh đầu vào Rất thích hợp cho hệ “Nhận dạng biển số xe” loại 2

Nhược điểm của phương pháp này là chi phí tính toán có thể cao nếu không xử lý tốt giai đoạn tìm kiếm cạnh Hơn nữa, các heuristic được áp dụng cần phải được kiểm chứng qua thực nghiệm hoặc do các chuyên gia cung cấp.

Ngoài ba phương pháp đã nêu, còn nhiều cách khác để xác định chính xác vùng chứa biển số xe, sau đó tiến hành nhận dạng ký tự.

1.4 Hướng giải quyết c a đề tài a) Một số đặc điểm về biển số xe ở Việt Nam

Tiêu chuẩn kích thước biển số xe tại Việt Nam quy định tỷ lệ chiều dài và chiều rộng đồng đều cho từng loại xe Đối với biển số có một hàng ký tự, tỷ lệ chiều dài/ rộng phải nằm trong khoảng 2.6 ≤ W/H ≤ 7 Dựa vào các đặc tính này, có thể xác định các vùng con đáp ứng tiêu chí về tỷ lệ chiều dài/ rộng, từ đó nâng cao khả năng chứa biển số xe.

Hình 1.1: iển số xe t 1 h ng t tại Việt Nam

Biển số xe có quy định về kích thước kí tự, trong đó chiều cao kí tự phải nhỏ hơn 85% và lớn hơn 33% chiều cao của biển số, còn chiều rộng không vượt quá 20% chiều dài của biển số Để phát hiện biển số xe, báo cáo trình bày 4 bước thực hiện cụ thể.

 Bước 1: Ảnh được truyền vào máy tính, gọi ảnh đầu vào là F x,y)

Bước 2: Từ ảnh đầu vào F(x,y), áp dụng phương pháp dò biên và phát triển vùng để xác định các vùng con khả thi chứa biển số xe, được gọi là tập hợp các vùng con S_c.

Bước 3: Để xác định chính xác vùng con chứa biển số xe, cần thực hiện hai thao tác: phân tích tỉ lệ chiều dài và chiều rộng, cùng với việc đếm số kí tự trong biển số Kết quả sẽ là một hoặc nhiều ảnh con chứa biển số xe, được gọi tắt là ảnh biển số xe, kí hiệu là Sbs = {Fbj(x,y)} - tập kết quả Để thực hiện các bước này, nghiên cứu áp dụng thư viện OpenCV, một thư viện mã nguồn mở chuyên dụng cho xử lý ảnh.

Hướng giải quyết của đề tài

2.1 Một số khái niệm cơ bản a) Ảnh v điểm ảnh: Ảnh là mảng số thực 2 chiều I m,n) có kích thước M x N), trong đó mỗi giá trị I( m,n ) tại một điểm ảnh), biểu thị mức xám của ảnh tại vị trí m,n) tương ứng Một ảnh là ảnh nhị phân nếu giá trị I m,n) bằng 0 hoặc 1 b) Mức x m:

Mức xám là cường độ sáng của mỗi điểm ảnh, được biểu diễn bằng giá trị số Các thang mức xám phổ biến bao gồm 8, 16, 32 và 64 Mã hóa 256 mức xám là phương pháp thường được sử dụng nhất do tính kỹ thuật của nó, vì 2^8 = 256, cho phép mỗi pixel được mã hóa bằng 8 bit.

Nếu m,n) là một điểm ảnh, thì 4 láng giềng của nó là các điểm ở ngay bên trên, dưới, trái, phải Ta kí hiệu N4 là tập 4 láng giềng của điểm m,n)

Tương tự ta có tập 8- láng giềng N 8 :

2.2 Biên và các phương pháp phát hiện biên

Biên đóng vai trò quan trọng trong phân tích ảnh, vì các kỹ thuật phân đoạn ảnh chủ yếu dựa vào việc xác định biên Một điểm ảnh được xem là điểm biên khi có sự thay đổi đột ngột về mức xám, tức là giá trị cấp xám của nó khác biệt so với các điểm xung quanh Tập hợp các điểm biên sẽ tạo thành biên hoặc đường bao của ảnh.

2.2.2 Các phương pháp phát hiện biên

Có 2 phương pháp phát hiện biên tổng quát:

Phát hiện biên trực tiếp là một kỹ thuật quan trọng trong phân tích hình ảnh, sử dụng đạo hàm bậc nhất như phương pháp Gradient và phương pháp La bàn, cùng với đạo hàm bậc hai như phương pháp Laplace Các phương pháp này giúp xác định biên giới của các đối tượng trong hình ảnh một cách chính xác và hiệu quả.

- Phát hiện biên gián tiếp: phân chia ảnh thành các vùng, đường ranh giới giữa các vùng chính là đường biên

Khi lấy đạo hàm của ảnh, thực chất chúng ta đang sử dụng các kỹ thuật nhân chập để mô phỏng và xấp xỉ đạo hàm Vì ảnh số là tín hiệu rời rạc, nên quá trình này cần được thực hiện một cách chính xác để đảm bảo chất lượng kết quả.

PHÁT HIỆN VÙNG CHỨA BIỂN SỐ XE

Một số khái niệm cơ bản

Ảnh điểm ảnh là một mảng số thực 2 chiều I(m,n) có kích thước M x N, trong đó mỗi giá trị I(m,n) tại một điểm ảnh biểu thị mức xám của ảnh tại vị trí m,n tương ứng Một ảnh được coi là ảnh nhị phân nếu giá trị I(m,n) chỉ nhận các giá trị 0 hoặc 1.

Mức xám là cường độ sáng của mỗi điểm ảnh, được thể hiện bằng giá trị số, với các thang mức phổ biến như 8, 16, 32 và 64 Mã hóa 256 mức xám là phổ dụng nhất nhờ vào lý do kỹ thuật, vì 2^8 = 256, nghĩa là mỗi pixel được mã hóa bởi 8 bit.

Nếu m,n) là một điểm ảnh, thì 4 láng giềng của nó là các điểm ở ngay bên trên, dưới, trái, phải Ta kí hiệu N4 là tập 4 láng giềng của điểm m,n)

Tương tự ta có tập 8- láng giềng N 8 :

Biên và các phương pháp phát hiện biên

Biên đóng vai trò quan trọng trong phân tích ảnh, vì các kỹ thuật phân đoạn ảnh chủ yếu dựa vào việc xác định biên Điểm ảnh được coi là điểm biên khi có sự thay đổi đột ngột về mức xám, và các điểm biên này có giá trị cấp xám khác biệt so với các điểm lân cận Tập hợp các điểm biên tạo thành biên hoặc đường bao của ảnh.

2.2.2 Các phương pháp phát hiện biên

Có 2 phương pháp phát hiện biên tổng quát:

Phát hiện biên trực tiếp là quá trình sử dụng kỹ thuật đạo hàm để xác định các ranh giới trong dữ liệu Phương pháp đạo hàm bậc nhất, bao gồm phương pháp Gradient và phương pháp La bàn, giúp phát hiện các biên với độ chính xác cao Đồng thời, phương pháp đạo hàm bậc hai, như phương pháp Laplace, cũng đóng vai trò quan trọng trong việc cải thiện khả năng nhận diện biên.

- Phát hiện biên gián tiếp: phân chia ảnh thành các vùng, đường ranh giới giữa các vùng chính là đường biên

Khi thực hiện lấy đạo hàm của ảnh, thực chất là sử dụng các kỹ thuật nhân chập để mô phỏng và xấp xỉ đạo hàm, vì ảnh số là tín hiệu rời rạc nên đạo hàm không tồn tại Một trong những phương pháp phổ biến để thực hiện điều này là phương pháp Gradient.

Kỹ thuật Gradient áp dụng hai mặt nạ H1 và H2 vuông góc, tương ứng với hai hướng x và y Nếu g1 và g2 là gradient theo hai hướng này, biên độ gradient tại điểm (m,n) được tính bằng công thức g.

Chú ý: để giảm tính toán công thức 1) đƣợc tính gần đúng bởi:

Các toán tử đạo hàm đƣợc áp dụng là khá nhiều, ở đây ta chỉ xét một số toán tử tiêu biểu: toán tử Robert, toán tử Sobel,…

Với mỗi điểm ảnh I(x,y) của I, đạo hàm theo x, theo y được ký hiệu tương ứng bởi gx, gy đƣợc tính:

 Điều này tương đương với việc chập ảnh với 2 mặt nạ H 1 và H 2 :

Quá trình tính toán được thực hiện qua 2 bước:

Từ ma trận I x 2 I y 2 chọn ra các cao thứ 2, hoặc thứ 3,… chiếm đa số

Kĩ thuật này sử dụng 2 mặt nạ H1 và H 2 :

Quá trình tính toán thực hiện qua 2 bước:

Tương tự kĩ thuật Sobel, kĩ thuật PreWitt sử dụng 2 ma trận mặt nạ nhân chập là:

Các phương pháp đánh giá Gradient hoạt động hiệu quả trong điều kiện độ sáng thay đổi rõ rệt Tuy nhiên, khi mức xám thay đổi chậm và miền chuyển tiếp mở rộng, phương pháp Laplace (đạo hàm bậc hai) lại tỏ ra hiệu quả hơn.

Toán tử Laplace dùng nhiều kiếu mặt nạ khác nhau để tính xấp xỉ đạo hàm rời rạc bậc 2 Dưới đây là 3 kiểu mặt nạ hay dùng:

Quá trình được thực hiện qua các bước sau:

Phát hiện vùng chứa biển số xe

Được thực hiện qua các bước sau:

 Bước 1: Biến đổi ảnh bằng các phương pháp hình thái học

Bước 3: Áp dụng phương pháp phát triển vùng đê để xác định các vùng con khả năng chứa biển số Ảnh đầu vào là ảnh 256 mức xám đã được resize về kích thước 600 x 800, sau đó được xử lý bằng các phương pháp hình học để loại bỏ nhiễu Tiếp theo, thực hiện nhị phân hóa và tách biên, giúp làm nổi bật vùng bao của biển số xe Sử dụng phương pháp phát hiện biên để thu được các cạnh dọc và ngang, kết quả là ảnh nhị phân chỉ chứa các cạnh này Cuối cùng, thực hiện biến đổi Hough trên các đoạn biên đã lấy, xác định các đoạn thẳng đi qua các điểm biên, từ đó tạo ra các đoạn thẳng ngang và dọc, và giao của chúng sẽ xác định vùng con Ic.

2.3.1 Biến đổi hình thái học

Biển số xe có độ sáng khác biệt so với các vùng khác trong bức ảnh, với sự phân bố mức xám đồng đều, giúp dễ dàng phân biệt khi nhị phân hóa Biến đổi hình thái học được sử dụng để lọc nhiễu ảnh và tăng cường độ sáng cho các vùng chính, hỗ trợ tách biên hiệu quả hơn Các hàm trong thư viện OpenCV, như cvMorphologyEx, đóng vai trò quan trọng trong quá trình này.

IplImage *temp, // ảnh tạm trong quá trình xử lý

IplCovKernel *e, // nhân thực chất là 1 ma trận) int operation // kiểu lọc nhiễu

Hình 2.2: Ảnh sau hi xử lý nhiễu bằng h m cvMorphologyEx cvThreshold(

IplImage *dst, // Ảnh đích double threshold, // ngƣỡng xám double max_value, int threshold_type // kiểu nhị phân hóa

2.3.2 Tìm chính xác vùng chứa biển số a) Lọc c c vùng thỏa mãn

Sau khi nhị phân hóa ảnh, chúng ta thực hiện việc trượt một hình chữ nhật kích thước 8x16 trên toàn bộ ảnh để xác định khu vực có khả năng là biển số Khu vực này được xác định dựa trên mật độ pixel, và chúng ta sẽ lưu lại các khu vực thỏa mãn điều kiện có hơn 15 điểm ảnh trong hình chữ nhật 8x16, đồng thời xóa đi những vùng không thỏa mãn.

Hình 2.4: Ảnh sau hi lọc ra c c vùng thỏa mãn b) Tỉ lệ rộng/d i

Sau khi lọc các vùng thỏa mãn, chúng ta sẽ thực hiện giãn ảnh và làm nhòe để làm nổi bật vùng chứa biển số Tiếp theo, ta sẽ kiểm tra tỉ lệ rộng/dài của các vùng đã xác định trước đó, với các điều kiện cụ thể: nếu tỉ lệ nằm trong khoảng từ 2.6 đến 7, chiều rộng từ 80 đến 250 và chiều cao từ 25 đến 150.

// thực hiện khoanh vùng thỏa mãn

Hình 2.5: Kết quả sau hi tìm d a v o tỉ lệ

Bằng việc xử lý chi tiết hơn, cuối cùng ta cắt ảnh biển số ra từ ảnh gốc bằng cách sau:

IplImage* plate = cvCreateImage(cvSize(rect.width, rect.height), 8, 1);

Hình ảnh biển số, được gọi là plate, có kích thước tương ứng với hình chữ nhật được khoanh màu trắng trong hình 2.5 Để chọn một vùng trên ảnh gốc, ta sử dụng hàm cvSetImageROI với tham số src và rect Sau đó, ảnh này được sao chép vào biến plate bằng hàm cvCopy Cuối cùng, hàm cvResetImageROI được gọi để khôi phục lại ảnh gốc.

To highlight a specific area of a source image, use the cvRectangle function, which takes the original image (IplImage* src), the coordinates of the top-left corner (cvPoint(top_left)), and the coordinates of the bottom-right corner (cvPoint(bottom_right)) This function effectively draws a rectangle around the designated region in the image.

CvScalar color// màu cạnh hình chữ nhật

Hình 2.6: iển số đã được ph t hiện

CHƯƠNG TRÌNH TRÍCH CHỌN VÙNG BIỂN SỐ

Giới thiệu các lớp cơ bản

Chương trình bao gồm 3 lớp chính: PlateFinder và Recognise và Main như sau:

Hình 3.1: Hai lớp PlateFinder v Recognise

 Lớp PlateFinder class LPR_PlateFinder

IplConvKernel* S1; // S1 và S2 là các ma trận mặt nạ nhân tích chập

IplImage *plate; // Ảnh biển số

~LPR_PlateFinder(); void waveletEdge IplImage *src, bool flag = false); // lọc nhiễu và // lọc biên IplImage* findPlate(IplImage *src, bool show = false, int k = 1);

}; thực hiện việc tìm biển số xe qua hàm findPlate:

IplImage* findPlate (IplImage *src, // ảnh đầu vào bool show = false, // hiện ảnh int k = 1 // chọn ảnh để hiển thị

) //trả về ảnh biển số tìm đƣợc

 Lớp Recognise bao gồm các thao tác tìm và cắt kí tự: class Recognise { public:

Recognise(); vector FindCharacter IplImage *plate); // tìm và cắt kí tự

 Lớp Main bao gồm các thao tác cắt ảnh biển số từ ảnh gốc và xoay ảnh

IplImage* LPR_Main::Crop_Plate(IplImage *src, int k)

IplImage *resizeimg = cvCreateImage(cvSize(800, 600), src-> depth, src-

>nChannels); // Ảnh resize cvResize(src, resizeimg, CV_INTER_LINEAR); plate = show_in_find_plate ? pf.findPlate(resizeimg, true) : pf.findPlate(resizeimg, false);

IplImage* grayImg = pf.findPlate(resizeimg, show_in_find_plate, 2); cvReleaseImage(&resizeimg); return (k == 1) ? plate : grayImg;

Giao diện chương trình

Hình 3.2: Giao diện ch nh của chương trình

Các chức năng chính của hệ thống bao gồm nhận dạng biển số, hiển thị các ảnh trung gian trong quá trình tìm kiếm biển số, và cho phép người dùng xem ảnh gốc sau khi đã khoanh vùng biển số.

Hình 3.4: hình ảnh trong qu trình tiền xử lí

Kết quả thực nghiệm

Thử nghiệm chương trình trên 100 bức ảnh có các độ phân giải từ 800x600 đến

3000 x 4000), kết quả thu đƣợc nhƣ sau:

- 80 ảnh phát hiện và cắt biển số và kí tự chính xác:

- 2 ảnh khoanh đƣợc 2 vùng là biển số và cắt biển sô chính xác nhƣng cắt kí tự sai:

- 3 ảnh khoanh đƣợc 3 vùng là biển số và cắt biển số và kí tự chính xác chính xác:

- 11 ảnh phát hiện đƣợc vùng biển số nhƣng cắt sai

- 4 ảnh không phát hiện đƣợc vùng biển số

Qua quan sát, em nhận thấy có một vài lí do sau có thể khiến cho quá trình nhận dạng bị sai lệch:

- Biển chụp có chứa dị vật,vật cản nhƣ đinh,dính bùn…

-Biển chụp bị méo mó,biến dạng:

-Do góc chụp nghiêng nên quá trình nhận dạng kí tự để cắt bị sai lệch:

Ngày đăng: 01/08/2021, 10:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w