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

Báo cáo học phần thị giác máy tính nhận diện biển số xe

59 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Báo Cáo Học Phần Thị Giác Máy Tính Nhận Diện Biển Số Xe
Tác giả Hồ Anh Dũng
Người hướng dẫn Th.S. Nguyễn Thị Minh Tâm
Trường học Trường Đại Học Vinh
Chuyên ngành Viện Kỹ Thuật Và Công Nghệ
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Nghệ An
Định dạng
Số trang 59
Dung lượng 8 MB

Cấu trúc

  • I. CÁC THUẬT TOÁN HIỆN NAY (6)
    • 1.1. Các thuật toán (phương pháp) hiện có để giải quyết bài toán (6)
      • 1.2.1. Haar Cascades (6)
      • 1.2.2. HOG (Histogram of Oriented Gradients) (6)
      • 1.1.3. Yolo (You Only Look Once) (6)
      • 1.1.4. CNN (Convolutional Neural Networks) (7)
      • 1.1.5. OCR (Optical Character Recognition) (7)
    • 1.2. Thuật toán (phương pháp) đề tài lựa chọn (7)
    • 1.3. Thuật toán KNN (K – Nearest Neighbor) (8)
  • II. TRIỂN KHAI (13)
    • 2.1. Hướng triển khai (13)
    • 2.2. Chuyển sang ảnh xám (14)
    • 2.3. Tăng độ tương phản (15)
      • 2.3.1. Phép toán hình thái học (15)
      • 2.3.2. Tăng độ tương phản (18)
    • 2.4. Giảm nhiễu bằng bộ lọc Gauss (19)
      • 2.4.1. Nhiễu (19)
      • 2.4.2. Bộ lọc Gauss (Gauss filter) (20)
    • 2.5. Phân ngưỡng nhị phân (Adaptive Threshold) (21)
      • 2.5.1. Ảnh nhị phân (21)
      • 2.5.2. Nhị phân hoá (21)
      • 2.5.3. Nhị phân hoá với ngưỡng động (22)
    • 2.6. Phát hiện cạnh Canny (Canny Edge Detection) (23)
    • 2.7. Lọc biển số với contour (27)
      • 2.7.1. Một số phương pháp tìm contour (27)
    • 2.8. Phân đoạn ký tự (32)
    • 2.9. Xoay biển số (32)
    • 2.10. Tìm vùng đối tượng (34)
    • 2.11. Tìm và tách kí tự (35)
    • 2.12. Nhận dạng ký tự (36)
  • III. KẾT LUẬN (37)
    • 3.1. Kết luận (37)
    • 3.2. Hướng phát triển (38)
  • IV. PHỤ LỤC (39)
    • 4.1. Các bước để chạy chương trình (39)
    • 4.2. Liên kết báo cáo từ Youtube (39)
    • 4.3. Code chương trình (39)
  • Tài liệu tham khảo (0)

Nội dung

Để 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ôngnghệ giám sát tự động đối với các phương tiện giao thông,chính nhờ tính

CÁC THUẬT TOÁN HIỆN NAY

Các thuật toán (phương pháp) hiện có để giải quyết bài toán

- Ưu điểm: Nhanh và hiệu quả

- Nhược điểm: Không hiệu quả với biển số xe có kích thước và góc độ đa dạng

Phương pháp này áp dụng Cascade Classifier để nhận diện các đặc trưng của biển số xe, được đào tạo từ một tập hợp lớn hình ảnh có và không có biển số Cascade Classifier hoạt động bằng cách sử dụng nhiều bộ lọc, mỗi bộ lọc chuyên biệt nhằm nâng cao khả năng phát hiện các đặc trưng cụ thể Nếu một bộ lọc không phát hiện được đặc trưng, nó sẽ loại bỏ phần còn lại của hình ảnh, giúp tối ưu hóa quá trình nhận diện.

1.2.2 HOG (Histogram of Oriented Gradients)

-Ưu điểm: Hiệu quả với các biển số có góc độ và kích thước khác nhau.

-Nhược điểm: Tính toán chậm hơn một số phương pháp khác.

HOG (Histogram of Oriented Gradients) là một phương pháp phân tích hình ảnh dựa trên độ gradient của pixel trong một vùng ảnh, giúp tạo ra biểu diễn đặc trưng cho đối tượng Các ô gradient được chia thành các "cell" và sau đó gộp lại thành các "block" Biểu diễn HOG thường được sử dụng để đào tạo mô hình phân loại, như SVM, nhằm phân biệt biển số xe với các đối tượng khác.

1.1.3 Yolo (You Only Look Once)

- Ưu điểm: Nhanh và chính xác, thích hợp cho thời gian thực.

- Nhược điểm: Yêu cầu phần cứng mạnh mẽ, đặc biệt là trong các ứng dụng di động.

Yolo là một kiến trúc mạng neural tiên tiến, được tối ưu hóa để dự đoán bounding box và phân loại đối tượng chỉ trong một lần xử lý Kiến trúc này chia hình ảnh thành các lưới, từ đó dự đoán bounding box, lớp đối tượng và xác suất cho mỗi ô lưới Đặc biệt, Yolo có khả năng xử lý trực tiếp ảnh đầu vào mà không cần tạo ra các khu vực quan tâm trước, giúp tăng tốc độ và hiệu quả trong nhận diện đối tượng.

- Ưu điểm: Linh hoạt và mạnh mẽ, có thể học được các đặc trưng từ dữ liệu

- Nhược điểm: Đòi hỏi lượng dữ liệu lớn và tài nguyên tính toán cao.

Mạng neural với kiến trúc CNN được sử dụng để nhận diện và học các đặc trưng của biển số xe Để đạt hiệu quả cao, mạng này thường được đào tạo trên một tập dữ liệu lớn, bao gồm cả hình ảnh có và không có biển số CNN có khả năng tự động trích xuất và học hỏi các đặc trưng phức tạp từ dữ liệu, giúp cải thiện độ chính xác trong việc nhận diện biển số xe.

- Ưu điểm: Chính xác trong việc nhận dạng ký tự.

- Nhược điểm: Phụ thuộc vào chất lượng hình ảnh và nền nhiễu.

OCR, hay Nhận diện Ký tự quang học, là một lĩnh vực trong thị giác máy tính chuyên về việc nhận diện và đọc ký tự từ hình ảnh Đối với việc nhận diện biển số xe, sau khi xác định vùng chứa biển số, các thuật toán OCR sẽ được áp dụng để đọc ký tự trong khu vực đó Tùy thuộc vào độ phức tạp của biển số và điều kiện ánh sáng, có thể sử dụng các phương pháp OCR truyền thống hoặc các mô hình học sâu hiện đại để đạt được kết quả chính xác.

Thuật toán (phương pháp) đề tài lựa chọn

Với đề tài “Nhận diện biển số xe” em sử dụng thuật toán KNN (K –Nearest Neighbor)

 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.

Biển số xe ô tô thường gặp khó khăn trong việc nhận diện do sự phản chiếu từ môi trường xung quanh, đặc biệt là ánh sáng chói và hiện tượng di ảnh Điều này càng trở nên nghiêm trọng khi các ký tự trên biển số không rõ ràng, gây cản trở trong việc nhận diện chính xác.

 Cần nhiều thời gian lưu training set và nếu test tăng sẽ tốn rất nhiều thời gian

Để đạt hiệu quả tốt nhất, nên lắp đặt camera cố định trong môi trường ánh sáng đã được cài đặt sẵn Phông nền cần được tối giản để hạn chế chi tiết gây nhiễu Tuy nhiên, phương pháp này vẫn cần sự giám sát của con người và chưa thể hoàn toàn tự động hóa.

Thuật toán KNN (K – Nearest Neighbor)

KNN (K-Nearest Neighbors) là một trong những thuật toán học có giám sát đơn giản và hiệu quả trong Machine Learning, được áp dụng cho cả phân loại và hồi quy Ý tưởng chính của KNN là gán nhãn cho dữ liệu dựa trên sự tương đồng với các mẫu trong tập dữ liệu huấn luyện Chẳng hạn, khi câu cá mà không biết loại cá, ta có thể so sánh các đặc điểm như mắt, mang, và vây với những con cá đã biết để xác định loại cá mình đã câu được.

KNN hoạt động theo quy trình gồm 4 bước chính:

1 Xác định tham số K (số láng giềng gần nhất)

2 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

3 Sắp xếp các khoảng cách đó theo thứ tự tăng dần

4 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.1 Ví dụ về KNN

Việc xác định loại điểm phụ thuộc vào hệ số K và trọng số khoảng cách mà người dùng lựa chọn cho phù hợp với bài toán Ví dụ, với K = 3, điểm sẽ thuộc loại B, trong khi với K = 6, nó thuộc loại A Ngoài ra, người dùng có thể tăng trọng số cho các điểm gần hơn, hoặc sử dụng K = 1 để tối ưu hóa kết quả đầu ra.

Khi tính khoảng cách giữa các điểm, chúng ta thường sử dụng công thức Euclid: d(x, y) = √∑i(xi - yi)² Trong quá trình so sánh, có thể bỏ qua dấu căn bậc hai Tuy nhiên, nếu khoảng cách giữa các biến quá lớn, chẳng hạn như biến x lớn hơn 1.000.000 lần, thì cần thực hiện chuẩn hóa dữ liệu để đảm bảo tính chính xác trong phân tích.

X ¿ = X−min (X) max ( X )−min (X) b, Các bước thực hiện thuật toán KNN

1 Tạo tập dữ liệu để huấn luyện

2 Huấn luyện mô hình KNN

3 Đưa hình ảnh từ bước “Phân đoạn ký tự” vào mô hình KNN đã tạo để đưa ra kết quả

4 In ra kết quả biển số

Trong bước 1 và 2, chúng ta sẽ xây dựng mô hình KNN riêng biệt với mã nguồn chính để dễ dàng nhận diện ký tự mà không cần thực hiện lại các bước từ đầu Đầu tiên, tạo tập dữ liệu hình ảnh các chữ số và ký tự để huấn luyện từ phần mềm Paint Sử dụng phần mềm này, viết các chữ số và ký tự (trừ O, I, J) với phông chữ “Biển số xe Việt Nam” và xoay các ký tự với các góc −5 °, 5 °, −10 °, 10 °.

Hình 1.2 Tập dữ liệu huấn luyện

Để chuẩn hóa kích thước cho các kí tự khác nhau, chúng ta sẽ điều chỉnh hình ảnh về tỷ lệ 30:20 pixels Thay vì đưa từng kí tự vào mô hình nhận diện, chúng ta sẽ gán nhãn cho các kí tự bằng các phím bấm trên máy tính Sau khi hoàn tất việc gán nhãn, hai file sẽ được lưu lại: classifications.txt chứa mã ASCII của các kí tự và flattened_images.txt lưu trữ giá trị điểm ảnh trong hình ảnh kí tự, với mỗi hình 20x30 pixel có tổng cộng 600 điểm ảnh có giá trị 0 hoặc 255.

Bước 3 và 4 là quá trình đưa ảnh vào và tính khoảng cách đến tất cả các điểm trong mẫu, từ đó tạo ra mã ASCII đại diện cho hình ảnh Cuối cùng, biển số xe sẽ được in ra Tại Việt Nam, có hai loại biển số: biển một hàng và biển hai hàng Để phân biệt hai loại này, chúng ta dựa vào vị trí của ký tự; nếu ký tự nằm trong 1/3 chiều cao của biển số, nó sẽ thuộc hàng một, ngược lại sẽ thuộc hàng hai.

Hình 1.3 Biển số trước khi nhận diện

Hình 1.4 Biển số sau khi nhận diện

Hình 1.5 Biển số xe được in ra trên hình gốc

TRIỂN KHAI

Hướng triển khai

Sơ đồ dưới đây sẽ tóm gọn các bước để xác định và tách biển số xe từ ảnh và video.

Để xác định và tách biển số xe từ ảnh và video, trước tiên ta cắt từng frame ảnh để xử lý Ý tưởng chính là nhận diện biển số dựa trên sự thay đổi đột ngột về cường độ ánh sáng giữa biển số và môi trường xung quanh, do đó ta chuyển ảnh sang dạng xám để loại bỏ dữ liệu màu sắc RGB Tiếp theo, ta tăng độ tương phản bằng hai phép toán hình thái học Top Hat và Black Hat, giúp làm nổi bật biển số so với phông nền, hỗ trợ cho quá trình xử lý nhị phân sau này Cuối cùng, ta sử dụng bộ lọc Gauss để giảm nhiễu, loại bỏ các chi tiết không cần thiết có thể ảnh hưởng đến nhận diện và tăng tốc độ xử lý.

Việc áp dụng ngưỡng động (Adaptive Threshold) giúp tách biệt thông tin biển số và nền Sau đó, thuật toán phát hiện cạnh Canny được sử dụng để trích xuất các chi tiết cạnh của biển số Để tránh nhầm lẫn giữa biển số và các chi tiết nhiễu, việc lọc cuối cùng dựa trên tỷ lệ cao/rộng hoặc diện tích của biển số sẽ hỗ trợ xác định chính xác biển số Cuối cùng, vị trí biển số trong ảnh được xác định bằng cách vẽ Contour xung quanh.

Chuyển sang ảnh xám

Ảnh xám (Gray Scale) là hình ảnh chỉ sử dụng các sắc thái của màu xám, với 256 cấp độ từ đen đến trắng, tương ứng với giá trị từ 0 đến 255, sử dụng 8 bits để biểu diễn mỗi pixel Ảnh xám cung cấp ít thông tin hơn so với ảnh màu, chỉ với một trường thông tin cho mỗi pixel, giúp tăng tốc độ xử lý và đơn giản hóa thuật toán Trong bài viết này, chúng ta sẽ chuyển đổi ảnh xám từ không gian màu HSV, bao gồm ba giá trị chính: Vùng màu (Hue), độ bão hòa (Saturation) và cường độ sáng (Value), vì HSV thích nghi tốt hơn với sự thay đổi ánh sáng từ môi trường Quá trình chuyển đổi sẽ tạo ra ma trận các giá trị cường độ sáng tách ra từ hệ màu HSV.

Tăng độ tương phản

2.3.1 Phép toán hình thái học

Hình thái học toán học là lý thuyết và kỹ thuật chuyên sâu để phân tích và xử lý cấu trúc hình học Kết quả hình ảnh được xác định chủ yếu dựa vào các phần tử cấu trúc (kernel), giúp cải thiện chất lượng và độ chính xác trong việc xử lý hình ảnh.

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 đó mở rộng cho ảnh xám, là một trong những kỹ thuật quan trọng trong giai đoạn tiền xử lý Hai phép toán cơ bản thường được sử dụng là phép giãn nở (Dilation) và phép co (Erosion) Từ hai phép toán này, nhiều phép toán khác đã được phát triển, bao gồm phép đóng (Closing), phép mở (Opening), và các phép toán Top Hat, Black Hat.

Phép toán co là công cụ hữu ích trong việc giảm kích thước đối tượng, tách rời các đối tượng gần nhau, tạo thành các mảnh nhỏ và xác định cấu trúc xương của đối tượng Ảnh gốc và ảnh sau khi áp dụng phép co b cho thấy sự thay đổi rõ rệt, đồng thời phép giãn nở cũng mang lại những kết quả đáng chú ý.

Phép giãn nở là một kỹ thuật trong xử lý ảnh giúp tăng kích thước của đối tượng ban đầu, làm cho các lỗ nhỏ trong ảnh được lấp đầy và nối liền các đường biên ảnh ở những đoạn rời nhỏ Ứng dụng của phép giãn nở không chỉ giúp cải thiện hình ảnh mà còn tạo ra những kết quả rõ nét hơn.

Phép co được thực hiện trước, sau đó là phép giãn nở, giúp loại bỏ các phần lồi lõm trên ảnh Ứng dụng của phép toán mở là làm cho đường bao của các đối tượng trong ảnh trở nên mượt mà hơn Ảnh gốc sẽ có sự khác biệt rõ rệt sau khi áp dụng phép mở và phép đóng.

Để tối ưu hóa quá trình xử lý hình ảnh, trước tiên cần thực hiện phép giãn nở, sau đó mới áp dụng phép co Phép toán đóng được sử dụng để làm mịn đường bao của các đối tượng, lấp đầy các khoảng trống biên và loại bỏ những hố nhỏ Việc áp dụng phép Top Hat cũng giúp cải thiện chất lượng hình ảnh.

Phép Top Hat là một kỹ thuật xử lý ảnh, được thực hiện bằng cách trừ ảnh gốc với ảnh đã qua phép mở Kỹ thuật này giúp làm nổi bật các chi tiết sáng trên nền tối, mang lại sự rõ ràng và sắc nét cho các phần quan trọng trong bức ảnh.

Phép Black Hat là kỹ thuật xử lý ảnh, được thực hiện bằng cách trừ ảnh sau khi áp dụng phép đóng với ảnh gốc, nhằm làm nổi bật các chi tiết tối trên nền trắng.

2.3.2 Tăng độ tương phản Để làm tăng độ tương phản của biển số, em 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

Giảm nhiễu bằng bộ lọc Gauss

Nhiễu ảnh là hiện tượng xuất hiện các chấm hạt nhỏ trên hình ảnh, gây ra sự biến dạng và làm giảm chất lượng hình ảnh.

Có ba loại nhiễu chính: nhiễu cộng, nhiễu nhân và nhiễu xung Nhiễu thường liên quan đến tần số cao, vì vậy để xử lý nhiễu hiệu quả, người ta thường sử dụng bộ lọc thông thấp hoặc bộ lọc trung bình nhằm chỉ cho phép tín hiệu có tần số nhất định đi qua.

Hình 2.3 Minh hoạ về nhiễu 2.4.2 Bộ lọc Gauss (Gauss filter)

Bộ lọc Gauss là một trong những bộ lọc hữu ích nhất trong xử lý ảnh, hoạt động bằng cách nhân chập ảnh đầu vào với ma trận lọc Gauss và cộng lại để tạo thành ảnh đầu ra Nguyên tắc chính của bộ lọc này là giá trị mỗi điểm ảnh phụ thuộc nhiều vào các điểm ảnh lân cận hơn là các điểm ảnh xa hơn, với trọng số phụ thuộc được xác định theo hàm Gauss, tương tự như quy luật phân phối chuẩn.

Hình 2.4 Ma trận lọc Gauss

Trong một bức ảnh, điểm ảnh ở trung tâm có trọng số lớn nhất, trong khi các điểm ảnh xa trung tâm sẽ có trọng số giảm dần theo khoảng cách Điều này có nghĩa là các điểm ảnh gần trung tâm sẽ đóng góp nhiều hơn vào giá trị của điểm trung tâm.

Phân ngưỡng nhị phân (Adaptive Threshold)

Là hình ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bằng hai giá trị là 0 (đen) và 255 (trắng)

Là quá trình biến đổi một ảnh xám thành ảnh nhị phân.

- Gọi giá trị cường độ sáng tại một điểm ảnh là‰I(x,y)‰.

- INP(x,y)‰là cường độ sáng của điểm ảnh trên ảnh nhị phân

Để chuyển đổi ảnh xám thành ảnh nhị phân, cần đảm bảo rằng tọa độ điểm ảnh thỏa mãn điều kiện 0 < x < image.width và 0 < y < image.height Quá trình này bao gồm việc so sánh giá trị cường độ sáng của từng điểm ảnh với một ngưỡng nhị phân T.

2.5.3 Nhị phân hoá với ngưỡng động

Nhị phân hóa ảnh bằng ngưỡng toàn cục thường gặp khó khăn trong việc xác định mức ngưỡng phù hợp cho từng bức ảnh Phương pháp nhị phân hóa ảnh ngưỡng động giúp tự động tính toán ngưỡng cho từng ảnh, mang lại lợi ích lớn khi xử lý các bức ảnh có vùng quá chói hoặc quá tối, tránh tình trạng mất hình ảnh tại những khu vực này khi sử dụng ngưỡng toàn cục.

Về ý tưởng chính sẽ theo 3 bước sau:

1 Chia tấm ảnh thành nhiều khu vực, cửa sổ (Region)‰khác nhau

2 Dùng một thuật toán để tìm một giá trị‰ ‰phù hợp vớiT từng cửa sổ.

3 Áp dụng phương pháp nhị phân hóa cho từng khu vực, cửa sổ với ngưỡng‰ ‰phù hợp.T

Có nhiều phương pháp để tìm ngưỡng trong xử lý ảnh Trong bài viết này, tôi sử dụng thuật toán ADAPTIVE_THRESH_GAUSSIAN_C từ thư viện OpenCV, thuật toán này tính toán trung bình các giá trị xung quanh điểm ngưỡng động (x,y) dựa trên phân phối Gaussian.

Gauss rồi trừ đi hằng số C

Hình 2.5 Hình ảnh sau khi áp dụng Gauss

Phát hiện cạnh Canny (Canny Edge Detection)

Trong hình ảnh, các thành phần quan trọng bao gồm vùng trơn, góc/cạnh và nhiễu Cạnh là đặc trưng chính của đối tượng, vì vậy việc phát hiện cạnh là rất cần thiết Có nhiều giải thuật để phát hiện cạnh như toán tử Sobel, Prewitt, và Zero crossing, nhưng tôi chọn giải thuật Canny vì nó ít bị ảnh hưởng bởi nhiễu và có khả năng phát hiện các biên yếu hiệu quả hơn Phương pháp Canny được thực hiện qua 4 bước chính.

2 Tính toán Gradient (Gradient calculation)

3 Loại bỏ những điểm không phải là cực đại (Non- maximum suppression)

4 Lọc ngưỡng (Double threshold) a.Giảm nhiễu

Làm mờ ảnh, giảm nhiễu dùng bộ lọc Gauss kích thước5x5 Kích thước 5x5 thường hoạt động tốt cho giải thuật

Ta dùng 2 bộ lọc Sobel X và Sobel Y (3x3) để tính đạo hàm

Tìm gradient và hướng được làm tròn về 4 hướng: hướng ngang (0 độ), hướng chéo bên phải (45 độ), hướng dọc (90 độ) và hướng chéo trái (135 độ)

Để loại bỏ những điểm không phải là cực đại trong ảnh gradient, ta sử dụng một bộ lọc 3x3 để kiểm tra từng pixel Trong quá trình này, cần xác định xem độ lớn gradient của pixel trung tâm có phải là cực đại so với các pixel xung quanh hay không Nếu pixel trung tâm là cực đại, nó sẽ được giữ lại; ngược lại, nếu không phải, độ lớn gradient của nó sẽ được thiết lập về zero Chỉ so sánh pixel trung tâm với hai pixel lân cận theo hướng gradient.

Khi hướng gradient là 0 độ, ta so sánh pixel trung tâm với pixel bên trái và bên phải Ngược lại, nếu hướng gradient là 45 độ, ta sẽ so sánh với hai pixel hàng xóm ở góc trên bên phải và góc dưới bên trái của pixel trung tâm.

Hình 2.6 Loại bỏ những điểm không phải cực đại d.Lọc ngưỡng

Trong quá trình lọc ngưỡng, chúng ta sẽ xem xét các pixel dương trên mặt nạ nhị phân từ bước trước Nếu giá trị gradient vượt quá ngưỡng tối đa (max_val), pixel đó sẽ được xác định là cạnh Ngược lại, các pixel có độ lớn gradient nhỏ hơn ngưỡng tối thiểu (min_val) sẽ bị loại bỏ Đối với các pixel nằm trong khoảng giữa hai ngưỡng, chúng sẽ được kiểm tra xem có liền kề với các pixel "chắc chắn là cạnh" hay không; nếu có, chúng sẽ được giữ lại, còn nếu không, sẽ bị loại bỏ Cuối cùng, chúng ta có thể thực hiện thêm bước hậu xử lý để loại bỏ nhiễu, nhằm loại bỏ những pixel cạnh rời rạc hoặc ngắn nếu cần thiết.

Hình 2.7 Lọc ngưỡng e.Kết quả

Sau khi áp dụng phát hiện biên Canny, mặc dù đã trích xuất được các chi tiết cạnh của biển số, nhưng vẫn tồn tại nhiều chi tiết thừa trong hình ảnh Do đó, chúng ta cần vẽ contour và sử dụng các đặc điểm nhận dạng của biển số để lọc ra biển số chính xác hơn.

Hình 2.8 Hỉnh ảnh sau khi sử dụng phương pháp Canny

Lọc biển số với contour

2.7.1 Một số phương pháp tìm contour

Contour là tập hợp các điểm tạo thành đường cong kín bao quanh một đối tượng, thường được sử dụng để xác định vị trí và đặc điểm của đối tượng đó Có bốn thuật toán Contour Tracing phổ biến, trong đó thuật toán Square Tracing và Moore-Neighbor Tracing dễ thực hiện và thường được sử dụng để dò tìm contour của mẫu Thư viện OpenCV áp dụng thuật toán Suzuki’s Contour Tracing để thực hiện các tác vụ này.

3 phương pháp trên: a Thuật toán Square Tracing

Bắt đầu từ pixel ngoài cùng bên trái phía dưới, di chuyển lên trên cho đến khi gặp pixel có giá trị bằng 255, được gọi là pixel start, và sau đó thực hiện các bước di chuyển theo quy tắc đã định.

- Nếu gặp Pixel có giá trị bằng 255 thì rẽ trái.

- Nếu gặp Pixel có giá trị bằng 0 thì rẽ phải.

- Di chuyển cho tới khi quay lại pixel start thì dừng lại. Hình sau mô tả cách hoạt động của thuật toán:

Hình 2.9 Thuật toán Square Tracing

Thuật toán sẽ hoàn thành chính xác khi di chuyển vào pixel bắt đầu lần thứ hai sau khi đã đi qua n pixel khác và theo đúng hướng như lần đầu tiên Ngược lại, thuật toán sẽ sai nếu di chuyển vào pixel bắt đầu mà không theo hướng ban đầu Do đó, thuật toán này chỉ hoạt động chính xác trên đối tượng 4-kết nối.

Thuật toán Square Tracing chạy sai

Thuật toán Suzuki's Tracing, được sử dụng trong thư viện OpenCV, không chỉ xác định biên của vật thể mà còn phân biệt rõ giữa đường biên ngoài (Outer) và đường biên trong (Hole) của vật thể.

Hàm trong OpenCV được biểu diễn như sau: findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())

Các tham số quan trọng trong quá trình tìm biên hình ảnh bao gồm: hình ảnh nhị phân (image‰), nơi chứa hình ảnh cần tìm biên; contours‰, lưu trữ các đường biên dưới dạng vector các điểm; và hierarchy‰, cung cấp thông tin về số lượng và xếp hạng các đường viền theo kích thước và vị trí.

CV_RETR_EXTERNAL : khi sử dựng cờ này nó chỉ lấy ra những đường biên bên ngoài, nhưng biên bên trong của vật thể bị loại bỏ.

CV_RETR_LIST : Khi sử dụng cờ này nó lấy ra tất cả các đường viền tìm được.

Cờ CV_RETR_CCOMP cho phép lấy tất cả các đường biên và phân chia chúng thành hai cấp độ: đường biên bên ngoài và bên trong đối tượng Trong khi đó, cờ CV_RETR_TREE tạo ra một hệ thống phân cấp hoàn chỉnh cho các đường biên lồng nhau.

CV_CHAIN_APPROX_NONE : sử dụng cờ này sẽ lưu trữ tất cả các điểm của đường viền

CV_CHAIN_APPROX_SIMPLE : Ví dụ : một hình chữ nhật sẽ được mã hoá bằng toạ độ của 4 đỉnh.

CV_CHAIN_APPROX_TC89_L1 or

CV_CHAIN_APPROX_TC89_KCOS : ‰Áp dụng thuật toán xấp xỉ Tech-Chin.

Hình 2.10 Vẽ Contour với OpenCV

Trong quá trình phân tích hình ảnh, các đường màu hồng biểu thị contour bao quanh các vật thể, nhưng để lọc ra biển số chính xác, chúng ta sẽ áp dụng các đặc trưng về tỉ lệ cao/rộng và diện tích trong khung hình cố định Đầu tiên, chúng ta xấp xỉ contour thành các hình đa giác và chỉ giữ lại những đa giác có 4 cạnh Điều này có nghĩa là bộ nhớ sẽ chỉ ghi lại vị trí các đỉnh của đa giác dưới dạng một mảng, trong đó số cạnh của đa giác tương ứng với số đỉnh và chiều dài của mảng.

Contour chưa xấp xỉ đa giác

Contour đã xấp xỉ đa giác

Tiếp theo, chúng ta sẽ tính toán tỷ lệ chiều cao và chiều rộng, cũng như diện tích của biển số phù hợp Sau đó, tất cả các biển số trong hình sẽ được lưu dưới dạng tọa độ các đỉnh.

Chúng ta sẽ cắt hình ảnh biển số từ các tọa độ đã biết để phục vụ cho việc "Tách các kí tự trong biển số" Việc cắt từ ảnh nhị phân giúp máy tính xử lý nhanh chóng và tiết kiệm thời gian hơn.

Phân đoạn ký tự

Trong giai đoạn này, các bước chính bao gồm: xoay biển số để nâng cao khả năng nhận diện, tìm kiếm tất cả các vùng chứa ký tự và lọc ra những ký tự chính xác Sau đó, tách riêng hình ảnh của những ký tự đó và đưa vào bộ nhận diện.

Hình 2.11 Các bước chính trong phân đoạn ký tự

Xoay biển số

Khi chụp ảnh biển số, góc chụp có thể không chính diện, dẫn đến việc ảnh bị méo hoặc nghiêng Nếu sử dụng ảnh biển số đã cắt mà không điều chỉnh góc độ, các ký tự có thể bị nhận diện sai, ví dụ như nhầm lẫn giữa số 1 và số 7, số 2 và chữ Z, hoặc chữ B và số 8.

Hình 2.12 Ảnh biển số chưa xoay

Phương pháp xoay ảnh em sử dụng ở đây là:

Để xác định các cạnh của tam giác ABC, trước tiên, chúng ta cần xác định tọa độ của hai đỉnh A và B nằm ở dưới cùng của biển số Với tọa độ A(x1, y1) và B(x2, y2), chúng ta có thể dễ dàng tính toán được cạnh đối và cạnh kề của tam giác này.

3.Ta tính được góc quay ^ BAC= tan −1 ( cạnh đối cạnh kề ) = tan −1 ( BC AC )

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.13 Ảnh biển số đã xoay

Tìm vùng đối tượng

Bắt đầu từ ảnh nhị phân, chúng ta tiến hành xác định contour cho các ký tự màu trắng, sau đó vẽ các hình chữ nhật bao quanh những ký tự này Tuy nhiên, quá trình tìm contour có thể bị nhiễu, dẫn đến việc máy xử lý sai và phát hiện 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.15 Tìm vùng đối tượng

Trong hình 4.3 - 2, các đường màu vàng biểu thị đường contour, và khi so sánh với hình ảnh nhị phân 4.3 - 1, ta nhận thấy có nhiều đường nhiễu như viền biển số, dấu gạch và dấu chấm Sau khi áp dụng các điều kiện, các hình chữ nhật màu xanh sẽ được vẽ xung quanh các ký tự.

Tìm và tách kí tự

Sau khi xác định được từng ký tự qua hình chữ nhật và có tọa độ bốn đỉnh của hình đó, chúng ta có thể tiến hành cắt hình ảnh ký tự để phục vụ cho giai đoạn "Nhận diện ký tự" Cần lưu ý rằng quá trình cắt ảnh diễn ra trên ảnh nhị phân, không phải từ ảnh gốc.

Nhận dạng ký tự

Quá trình nhận diện ký tự là việc chuyển đổi hình ảnh thành thông tin khác, cụ thể là mã ASCII, nhằm giao tiếp hiệu quả với người dùng Để hiểu rõ hơn về nhận diện ký tự, cần xem xét mối liên hệ với ngành khoa học trí tuệ nhân tạo (AI).

Ngày đăng: 13/01/2025, 13:59

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Ví dụ về KNN - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 1.1. Ví dụ về KNN (Trang 9)
Hình 1.2. Tập dữ liệu huấn luyện - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 1.2. Tập dữ liệu huấn luyện (Trang 11)
Hình 1.4. Biển số sau khi nhận - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 1.4. Biển số sau khi nhận (Trang 12)
Hình 2.3. Minh hoạ về nhiễu 2.4.2. Bộ lọc Gauss (Gauss filter) - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.3. Minh hoạ về nhiễu 2.4.2. Bộ lọc Gauss (Gauss filter) (Trang 20)
Hình 2.4. Ma trận lọc Gauss - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.4. Ma trận lọc Gauss (Trang 20)
Hình 2.5. Hình ảnh sau khi áp dụng Gauss - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.5. Hình ảnh sau khi áp dụng Gauss (Trang 23)
Hình 2.6. Loại bỏ những điểm không phải cực đại - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.6. Loại bỏ những điểm không phải cực đại (Trang 25)
Hình 2.7. Lọc ngưỡng - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.7. Lọc ngưỡng (Trang 26)
Hình 2.8. Hỉnh ảnh sau khi sử dụng phương pháp Canny - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.8. Hỉnh ảnh sau khi sử dụng phương pháp Canny (Trang 27)
Hình 2.9. Thuật toán Square Tracing - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.9. Thuật toán Square Tracing (Trang 28)
Hình 2.10. Vẽ Contour với OpenCV - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.10. Vẽ Contour với OpenCV (Trang 30)
Hình 2.12. Ảnh biển số chưa xoay - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.12. Ảnh biển số chưa xoay (Trang 33)
Hình 2.13. Ảnh biển số đã xoay - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.13. Ảnh biển số đã xoay (Trang 33)
Hình 2.14. Ảnh nhị phân - Báo cáo học phần thị giác máy tính nhận diện biển số xe
Hình 2.14. Ảnh nhị phân (Trang 34)

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

TÀI LIỆU LIÊN QUAN

w