- vừa được xem lúc

Template Matching giải quyết bài toán Object Detection đơn giản

0 0 23

Người đăng: Ánh Dương

Theo Viblo Asia

Template Matching

Hàm cv2.matchTemplate là một kỹ thuật tìm kiếm các vùng của hình ảnh khớp (tương tự) với hình ảnh mẫu (patch) nói cách khác là khớp một mảnh ghép vào hình ảnh thực tế bằng cách “trượt” mảnh ghép đó lên hình ảnh đầu vào (như tích chập 2D) và so sánh mẫu và mảnh ghép dựa trên một số phép chuẩn hóa (Hình 1). Nó trả về một hình ảnh thang độ xám, trong đó mỗi pixel biểu thị mức độ lân cận của pixel đó khớp với mẫu.

Nếu hình ảnh đầu vào có kích thước (WxH) và hình ảnh mẫu có kích thước (wxh), hình ảnh đầu ra sẽ có kích thước là (W-w+1,H-h+1). Sau khi nhận được kết quả, bạn có thể sử dụng hàm cv2.minMaxLoc() để tìm giá trị tối đa/tối thiểu ở đâu. Lấy nó làm góc trên cùng bên trái của hình chữ nhật và lấy (w,h) làm chiều rộng và chiều cao của hình chữ nhật. Hình chữ nhật đó sẽ là vùng mẫu cần tìm.

image.png

Hình 1: cv2.matchTemplate quét một mảnh ghép trên một hình ảnh khác để tìm đối tượng đó trong ảnh. Kích thước template thường tương ứng với kích thước của vật thể trong ảnh tìm kiếm

image.png

Hình 2 Một số phép chuẩn hóa

Trong đó: I biểu thị ảnh đầu vào, T là mẫu, R là hình ảnh kết quả.

Square Difference Matching Method(cv2.TM_SQDIFF)

Phương pháp "cv2.TM_SQDIFF" dựa trên hình ảnh sự khác biệt bình phương (squared difference) giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu. Thuật toán sẽ tìm kiếm vị trí có sự khác biệt bình phương nhỏ nhất và coi đó là vị trí tương tự nhất.

Normalized Square Difference Matching Method (cv2.TM_SQDIFF_NORMED)

Phương pháp "cv2.TM_SQDIFF_NORMED" cũng dựa trên hình ảnh sự khác biệt bình phương (squared difference) giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu, nhưng kết quả được chuẩn hóa để nằm trong khoảng từ 0 đến 1. Các giá trị càng nhỏ, cho thấy sự khớp tốt hơn giữa template và vị trí ứng viên.

Correlation Matching Method (cv2.TM_CCORR)

"cv2.TM_CCORR" là một hằng số được sử dụng để xác định phương pháp tìm kiếm sự tương tự bằng tích chập chuẩn (cross-correlation) trong các thuật toán so khớp hình ảnh.

Phương pháp "cv2.TM_CCORR" dựa trên tích chập chuẩn giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu. Giá trị tương tự càng cao, cho thấy sự khớp tốt hơn giữa template và vị trí ứng viên.

Normalized Cross- Correlation Matching Method(cv2.TM_CCORR_NORMED)

"cv2.TM_CCORR_NORMED" là một hằng số được sử dụng để xác định phương pháp tìm kiếm sự tương tự chuẩn hóa bằng tích chập chuẩn (normalized cross-correlation) trong các thuật toán so khớp hình ảnh.

Phương pháp "cv2.TM_CCORR_NORMED" dựa trên tích chập chuẩn giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu, với kết quả được chuẩn hóa để nằm trong khoảng từ 0 đến 1. Các giá trị càng gần 1, cho thấy sự khớp tốt hơn giữa template và vị trí ứng viên.

Correlation Coefficient Matching Method (cv2.TM_CCOEFF)

"cv2.TM_CCOEFF" là một hằng số được sử dụng để xác định phương pháp tìm kiếm sự tương tự bằng hệ số tương quan (cross-correlation coefficient) trong các thuật toán so khớp hình ảnh.

Phương pháp "cv2.TM_CCOEFF" dựa trên hệ số tương quan giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu. Giá trị tương tự càng cao, cho thấy sự khớp tốt hơn giữa template và vị trí ứng viên.

Normalized Correlation Coefficient Matching Method (cv2.TM_CCOEFF_ NORMED)

"cv2.TM_CCOEFF_NORMED" là một hằng số được sử dụng để xác định phương pháp tìm kiếm sự tương tự chuẩn hóa bằng hệ số tương quan (normalized cross-correlation coefficient) trong các thuật toán so khớp hình ảnh.

Phương pháp "cv2.TM_CCOEFF_NORMED" dựa trên hệ số tương quan chuẩn hóa giữa cửa sổ mẫu (template window) và các vị trí ứng viên trên hình ảnh mục tiêu, với kết quả được chuẩn hóa để nằm trong khoảng từ -1 đến 1. Các giá trị càng gần 1, cho thấy sự khớp tốt hơn giữa template và vị trí ứng viên.

image.png

Hình 3: Kết quả khớp của sáu phương pháp so khớp cho tìm kiếm mẫu được mô tả trong Hình 1

Kết quả khớp tốt nhất cho chênh lệch bình phương là 0 và đối với các phương pháp khác, đó là điểm tối đa; do đó, các kết quả trùng khớp được biểu thị bằng các vùng tối ở cột bên trái và bằng các điểm sáng ở hai cột còn lại.

Tham khảo code: https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html

[Tài liệu tham khảo] https://books.google.com.au/books?id=SKy3DQAAQBAJ&lpg=PT607&ots=XGg5zrJXPp&dq=TM_CCOEFF&pg=PT606#v=onepage&q=TM_CCOEFF&f=false

https://theailearner.com/tag/cv2-matchtemplate/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Các thuật toán cơ bản trong AI - Phân biệt Best First Search và Uniform Cost Search (UCS)

Nếu bạn từng đọc các thuật toán trong AI (Artificial Intelligence - Trí tuệ nhân tạo), rất có thể bạn từng nghe qua về các thuật toán tìm kiếm cơ bản: UCS (thuộc chiến lược tìm kiếm mù) và Best First Search (thuộc chiến lược tìm kiếm kinh nghiệm). Khác nhau rõ từ khâu phân loại rồi, thế nhưng hai th

0 0 169

- vừa được xem lúc

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 157

- vừa được xem lúc

[ChatterBot] Thư viện chatbot hay ho dành cho Python| phần 3

Trong bài trước mình đã trình bày về Training data cho chatbot và tiền xử lý dữ liệu. Trong phần này sẽ trình bày với các bạn về logic adapter.

0 0 62

- vừa được xem lúc

[Deep Learning] Kỹ thuật Dropout (Bỏ học) trong Deep Learning

. Trong bài viết này, mình xin phép giới thiệu về Dropout (Bỏ học) trong mạng Neural, sau đó là mình sẽ có 1 số đoạn code để xem Dropout ảnh hưởng thế nào đến hiệu suất của mạng Neural. 1.1. Dropout trong mạng Neural là gì.

0 0 63

- vừa được xem lúc

Kỹ thuật Dropout (Bỏ học) trong Deep Learning

Trong bài viết này, mình xin phép giới thiệu về Dropout (Bỏ học) trong mạng Neural, sau đó là mình sẽ có 1 số đoạn code để xem Dropout ảnh hưởng thế nào đến hiệu suất của mạng Neural. 1.

0 1 80

- vừa được xem lúc

Blockchain dưới con mắt làng Vũ Đại 4.0

Mở bài. Hey nhô các bạn, lại là mình đây .

0 0 50