CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
3.1. Phân tích và thiết kế
3.1.1. Đặc trưng của biển báo
Vì tính phức tạm của các biển báo, trong phạm vi của bài toán chỉ nhận dạng biển báo cấm biển báo nguy hiểm và biển báo hiệu lệnh.
Dựa vào đặc điểm nhận dạng của các biển báo, nhận thấy điểm chung giữa các biển báo là có viền đỏ hoặc xanh lam. Đây là một đặc trưng quan trọng vì nó được dùng để phát hiện biển báo và định vị vị trí của nó trong hình ảnh.
Một số biển báo không thuộc đặc điểm chung đó sẽ được bỏ qua.
3.1.2. Quy trình phát hiện và nhận dạng biển báo
Việc phát hiện và nhận dạng biển báo trong video có thể được đơn giản hoá bằng việc phát hiện và nhận dạng biển báo trong một hình ảnh, vì bản chất của video là sự kết hợp của nhiều hình ảnh lại với nhau.
Để phát hiện và nhận dạng được biển báo thì cần phải phân tích, xử lý và trích xuất các thông tin cần thiết trong hình ảnh để phát hiện được có “sự xuất hiện” của biển báo, sau đó mới tiến hành nhận dạng biển báo đó từ tập dữ liệu chứa các thông tin về biển báo.
Do các biển báo giao thông là đối tượng biết trước, không đổi – là tập tất cả các biển báo có được vẽ bằng các phần mềm. Do đó, tôi đề xuất sử dụng phương pháp:
• Phát hiện vùng biển báo dựa trên viền của biển báo cáo màu đỏ hoặc xanh dương
• Nhận dạng biển báo dựa trên giải thuật so khớp bằng cách:
◦ Tìm các keypoints và trích xuất các keypoint descriptors của vùng biển báo được phát hiện ở bước trên (query) và của tập dữ liệu biển báo mẫu (train)
◦ Lần lượt so khớp query với train và chọn kết quả có số lượng keypoints khớp nhiều nhất
Hình 3.1: Một số biển báo có hình thù cá biệt
3.1.3. Yếu tố ảnh hưởng đến màu sắc
Ở bước phát hiện biển báo dựa trên màu sắc, dùng phương pháp threshold áp dụng ngưỡng cho 2 dãy màu gồm màu đỏ và xanh dương.
Không gian màu BGR (Blue Green Red)
Mặc định các hình ảnh màu được đọc bởi OpenCV được thể hiện ở không gian màu BGR.
Các hình ảnh được chụp, video được quay có thể ở các điều kiện ánh sáng khác khác nhau là yếu tố khó khăn cho việc trích xuất các đặc trưng, vì ở điều kiện ánh sáng (luminance) khác nhau, một màu có thể biến đổi thành màu khác ở chế độ màu này, ánh sáng ảnh hưởng bởi cường độ (intensity) của điểm ảnh, được chia sẽ với 3 kênh màu:
Intensiy=11%B+59%G+30%R Do đó rất khó để trích xuất biển báo ở chế độ màu này.
Không gian màu HSV (Hue – Saturation – Value)
Với không gian màu này Hue giữ giá trị của màu sắc (giá trị từ 0 đến 360); Saturation giữ giá trị của độ kinh khiết hay bảo hoà của Hue (giá trị từ 0 đến 100), giá trị càng lớn thì Hue càng đậm và Value giữ giá trị độ sáng của hình ảnh (giá trị từ 0 đến 100), giá trị càng lớn thì Hue càng sáng.
Hình 3.2: Quy trình phát hiện và nhận dạng biển báo Video/
Camera
Phát hiện biển báo
Nhận dạng biển báo
Biển báo đã nhận dạng
Biển báo mẫu Vùng biển báo
So khớp Hình ảnh
Hình 3.3: Không gian màu HSV
Saturation
Hue
Value
3.1.4. Phát hiện biển báo
Từ lý do trên sau khi đọc xong hình ảnh, chuyển ảnh từ không gian màu BRG sang không gian màu HSV để không bị ảnh hưởng bởi anh sáng, với chế độ màu HSV toàn bộ cường độ sáng (intensity/luminance) được chuyển về kênh V, từ đó chỉ cần xử lý ở 2 kênh màu còn lại là H và S mà không cần quan tâm đến V.
HSV trên OpenCV cài đặt khác so với các phần mềm sửa ảnh: Hue có giá trị từ 0 – 179 (mã hoá 7-bit), Saturation có giá trị từ 0 – 255 (mã hoá 8-bit) và Value có giá trị từ 0 – 255 (mã hoá 8-bit).
Dựa vào hình trên, giá trị màu:
• Màu đỏ thuộc khoảng: 0 <= Hue <= 10 và 170 <= Hue <= 180
• Màu xanh dương thuộc khoảng: 100 <= Hue <= 130
Threshold (áp dụng ngưỡng) với 2 khoảng màu đỏ và xanh lam để xác định được viền của biển báo.
Để xác định để xác định biên của biển báo, áp dụng phương pháp tìm Contours để cho ra tập các candidates (vùng ảnh có khả năng là biển báo).
3.1.5. Nhận dạng biển báo
Sau khi có tập contours mỗi contours là một vùng biển báo (sign candidates), tách từng candidates và loại bỏ những candidates có diện tích nhỏ sau đó đem đi nhận dạng:
• Tìm keypoints và descriptors của từng candidates biển báo
• Tìm keypoints và descriptor của train images
• Tiến hành so khớp với từng ảnh trong tập train, tìm ảnh có số lượng keypoints match nhiều nhất, loại bỏ các ảnh có số lượng match ít (threshold apply)
Hình 3.4: Giá trị Hue của OpenCV
0 30 60 90 120 150 180
Hình 3.5: Quy trình phát hiện biển báo
Hình ảnh HSV
Tìm contours
Vùng phát hiện biển báo Áp dụng ngưỡng
vùng màu đỏ
Áp dụng ngưỡng màu xanh dương
Phát hiện biển báo
Canny edges
Loại bỏ kết quả sai