Tìm đối tượng bằng template matching

Để tìm đối tượng trong ảnh thì có nhiều cách, nổi tiếng nhất là Haar Cascade, tuy nhiên lại tốn thời gian để train. (Chưa kể đến train bị fail khá nhiều) Tìm đối tượng bằng Template matching phù hợp với đối tượng đơn giản, ít thay đổi. Cách này cũng rất phù hợp để đếm vật thể giống nhau, như là đếm hàng hóa trên kệ.

Ví dụ đơn giản là tìm logo hoặc vật thể đã biết trong ảnh, hoặc là biển báo giao thông. Phần implement thì opencv đã thực hiện hoàn chỉnh, bài này chỉ giới thiệu cách ứng dụng vào đếm hàng hóa.

Một ví dụ khác về tìm vật thể 2D (không sử dụng template matching): Tìm đồng xu trong ảnh

So sánh với Haar cascade

Ưu điểm:

  1. Tốc độ tìm kiếm nhanh
  2. Không tốn thời gian training
  3. Cách sử dụng đơn giản

Nhược điểm:

  1. Không chứa được nhiều đặc trưng như Haar Cascade

Cách sử dụng

Template matching có tất cả 6 phương pháp để tìm, tuy nhiên qua thử nghiệm thì phương pháp CV_TM_CCORR_NORMED chính xác nhất. Các bạn nên kiểm tra lại vì có thể mình chưa thử đủ hết các trường hợp.

Để sử dụng ta cần có 3 tham số: ảnh cần tìm đối tượng, mẫu và phương pháp tìm. Bên dưới là ảnh về kệ hàng Coca-Cola và mẫu dùng để tìm. Các bạn dùng chính ảnh bên dưới để thử nghiệm code

coca2

stock

Code c++

Kết quả

Tìm được 29 đối tượng (chai nước ngọt) trong ảnh

detected

Tham khảo

Opencv docs

9 thoughts on “Tìm đối tượng bằng template matching

    1. mình cần video quay thực tế mới trả lời được vì còn ảnh hưởng bởi chất lượng camera

    2. camera 640×480 pixels là thoải mái ad ạ. Em sd webcam làm bài tập xử lý ảnh thấy hơi giật. Quan trọng ở videocaputure sử dụng lấy bao nhiêu frame/s ấy. với lúc nó thay đổi góc xoay của ảnh mẫu thì nó ko bắt dc nữa

  1. anh ơi, cho em hỏi phương pháp này tìm cái hình có chữ coca cola chính diện như ảnh mẫu được không anh. Ví dụ này tìm ra 29 ảnh nhưng có vài ảnh cái chữ xoay hướng khác.
    Mình cần điều chỉnh tham số gì ạ? Ý em là tìm hình giống 90-99% luôn ấy, áp dụng cho bài toán phát hiện lỗi, thường là lỗi giống mẫu 95%

    1. Hi bạn, hiện nay cách này đã lỗi thời. Có nhiều mô hình mới hơn như YOLO sẽ giúp bạn được tìm được vị trí của vật thể và tìm tỉ lệ giống nhau chính xác hơn rất nhiều

Leave a Reply