Top Ad unit 728 × 90

Latest news

recent

So khớp mẫu (Template Matching)

Template Matching là một nhóm kỉ thuật nhằm phân loại đối tượng dựa vào mức độ tương tự giữa những đối tượng xem xét với mẫu (template hay sample) cho trước. Trong bài viết này tôi mong muốn đề cập tới một trong những hướng đi đơn giản nhất của Template Matching, được ứng dụng để giải quyết yêu cầu rất cụ thể như sau: cho trước một mẫu (sample) và một hình bất kì (source image) đa mức xám (grayscale) lớn hơn mẫu, xác định xem đối tượng mẫu có xuất hiện trong hình hay không, nếu có thì khoanh vùng khu vực tương ứng đó, nếu không thì báo là không tồn tại đối tượng.
Bài toán này cũng chính là bài toán sử dụng mẫu để nhận dạng các đối tượng trong hình được cho.
Lưu ý rằng phương pháp giới thiệu ở đây chỉ có thể được áp dụng khi đối tượng cần nhận diện có độ sai lệch không quá lớn so với mẫu. Và các mẫu thường được dùng là các hình chỉ định các đối tượng rất đơn giản như số, kí tự in.
Quá trình matching sẽ được tiến hành bằng cách quét hình mẫu lần lượt từ trái sang phải, từ trên xuống dưới sao cho tâm của nó di chuyển qua tất cả các vị trí có thể trong hình được xem xét và tính giá trị của tham số phân loại tại mỗi vị trí đó, tham số này sẽ nói lên mức độ khớp của mẫu với đối tượng xuất hiện tại vị trí tương ứng đang tính toán trong hình được cho. Đảm bảo rằng hình mẫu luôn nằm lọt trong hình xem xét. Như vậy quá trình matching được hoàn tất dựa trên cơ sở xem xét với tọa độ từng điểm ảnh một.


Vấn đề lớn nhất ở đây là làm sao biết khi nào thì đối tượng trên hình khớp với mẫu. Việc này dựa vào giá trị mà tôi gọi là tham số phân loại ở trên. Từ giá trị tham số phân loại của từng vị trí (pixel) chúng ta sẽ thực hiện so sánh với một giá trị ngưỡng K (threshold) (chọn dựa vào kinh nghiệm và yêu cầu) để quyết định vị trí đó có tồn tại một đối tượng với mức độ tương tự có thể chấp nhận với mẫu hay không.
Trong bài viết này tôi giới thiệu hai công thức đơn giản để tính tham số phân loại. Thứ nhất là dựa vào khoảng cách Euclidean (Euclidean distance).


Thứ hai là dựa vào độ tương tự (Correlation).


Giá trị của cor nằm giữa -1 và +1, càng lớn thể hiện mức độ tương đồng với mẫu của vị trí đang tính toán càng cao. Dưới đây là một kết quả thực nghiệm với K = 0.8

Bài viết chỉ nhằm giới thiệu cho người đọc có sự hình dung thế nào là template matching chứ phương pháp trình bày ở trên không phải là giải pháp tốt cho việc giải quyết các vấn đề thực tiễn bởi nó hoàn toàn không thể thu được kết quả trong trường hợp đối tượng là mẫu đã bị co giản tỉ lệ hoặc xoay, đổi chiều.


Binh Nguyen - Bioz
So khớp mẫu (Template Matching) Reviewed by Bioz on 8:08:00 PM Rating: 5

14 comments:

  1. Em chào anh Binh Nguyen - Bioz, em đã đọc bài của anh em thấy hay và nó gần sát với đề tài mà em cũng đang nghiên cứu.
    Hiện nay em đang làm đề tài tốt nghiệp là tìm hiểu một số phương pháp xác định khuôn mặt trong ảnh. Trong đó em đi sâu vào phương pháp sử dụng so khớp mẫu. Em muốn hỏi là anh có tài liệu thêm về mảng này thì anh cho em xin được không ạ.

    ReplyDelete
  2. đề tài mà em đang làm có lẽ là: các phương pháp face detection. Hiện nay có rất nhiều phương pháp hỗ trợ. Tuy nhiên em nên phân biệt cho rõ một số khái niệm quan trọng như sau:

    1. Features: để hiểu thêm em hãy đọc bài viết về khái niệm này trong ieev của anh. để nhận diện được khuôn mặt trong ảnh em cần xác định đâu là những dữ liệu mà em dựa vào. Với trường hợp bài viết này thì feature là cả một ảnh mẫu, vậy nếu em dùng kỉ thuật này có nghĩa là em phải có một ảnh mẫu khuôn mặt cụ thể và dùng nó làm căn cứ để tìm. Tuy nhiên thông thường yêu cầu đặt ra là tìm một khuôn mặt bất kì nào đó có trong ảnh :). Một số feature nổi tiếng hiện nay thường được dùng như HOG, Haar, edge ...

    2.Nền tảng, hay phương pháp dùng phân lọai:
    là kỉ thuật em dùng đề input feature vào và chạy. Nó có thể là các thuật tóan thuộc dòng boosting như adaboost, Neuron, SVM, ... hay la corr matching như ở trên. Các phương pháp này có thể là tuyến tính, hay phi tuyến, thông kê hay phi thống kê, nhận diện full mặt người hay nhận dạng vùng nhỏ rồi kết hợp lại ...

    Để có một luận văn tốt em cần khảo sát các loại feature khác nhau và các bộ nền tảng khác nhau, điều này cần đọc nhiều tài liệu và paper. Trong blog này có sẵn một số bài về adaboost cũng như những tài liệu rất hay về computer vision trong mục chia sẽ sách hay, em có thể tham khảo.

    ReplyDelete
  3. a bioz ơi, anh có thể nói cho em biết cách thức tạo mẫu từ source createsample.cpp trong OpenCV không anh . Cụ thể là làm sao mình tạo được mẫu từ các hình ảnh mẫu cho trước, khi tạo xong thì nó được lưu ở đâu ? nó đọc từng ảnh rồi tạo mẫu hay sao ạ ? em là dân mới vào nghề .. còn nhiều bỡ ngỡ .. rất mong các anh em chỉ bảo. Thanks all.

    ReplyDelete
  4. http://note.sonots.com/SciSoftware/haartraining.html

    em vui lòng xem kỉ hướng dẫn ở blog này, đây là nơi hướng dẫn đầy đủ nhất hiện nay. Trên Net cũng có vài video hướng dẫn trực quan quá trình này, hiện anh ko nhớ ở đâu, em có thể kiếm nếu có thì share link lên đây cho mọi người.

    ReplyDelete
  5. http://www.mediafire.com/?dv2n25yzc3qs7tc
    em mới kiếm được cái này, làm theo nó chạy được rồi .. hì hì .. thank a Bioz nhiều ..

    ReplyDelete
  6. Trước tiên anh rất trân trọng tinh thần chia sẻ của em. Anh chỉ muốn góp ý 2 vấn đề:
    1. Anh nghĩ em nên đọc kĩ phần link anh gởi ở trên vì đó là tài liệu chuẩn, tốt và xúc tích nhất hiện nay, nó rất dễ hiểu, đừng ngại đọc tiếng anh. Cái tài liệu em gởi nó ko chuẩn và nhiều chổ chưa đúng, đồng thời nó không nói rỏ được vấn đề. Cụ thể là nó ko nói rỏ được 3 tập dữ liệu: positive, nagative, test set. positive có 2 loại chuẩn hóa (1 hình 1 object), chưa chuẩn hóa (1 hình nhiều object). Trong quá trình tạo mẫu thì cũng có nhiều setting khác nhau cho positive chuẩn, ko chuẩn. Cho 1 hay nhiều positive, 1 hay nhiều nagative ... Tài liệu tiếng việc này không hệ thống hóa được vấn đề, nó sẽ làm em lạc lối và hiểu sai.
    2. cuối tài liệu có phần hướng dẫn cài đặt OPENCV, mà khá nhiều thông tin được copy từ IEEV mà không reference. Anh ko có ý kiến gì tuy nhiên vì những bài viết trên IEEV liên tục được update và chuẩn hóa do đó mà tốt hơn em nên đọc phiên bản gốc.

    http://www.ieev.org/2009/06/cai-at-thu-vien-opencv.html

    http://www.ieev.org/2010/01/cai-at-thu-vien-opencv-2x.html

    ReplyDelete
  7. Em đang làm đồ án về phát hiện biển báo giao thông trong ảnh. em dùng Template_mtching ảnh biên thì kết quả lại sai? anh có thể giải đáp giúp em được không ạ?

    ReplyDelete
  8. đây là một câu hỏi mà anh nghĩ ko ai trả lời nổi :) anh có biết anh làm gì đâu mà hiểu tại sao nó sai. Tuy nhiên thì em hay đọc câu kết luận của bài viết, nó cho thấy phương pháp trên dường như không thích hợp với việc nhận diện các đối tượng ở ngoài môi trường outdoor, với góc tiếp cận phức tạp như của em.

    ReplyDelete
  9. Chào bạn Binh Nguyen - Bioz, mình đã đọc rất nhiều bài viết của bạn và thấy rất thú vị, mình đang tìm hiểu về lĩnh vực xử lý ảnh, đặc biệt là về object tracking - theo dõi vật thể di động nhưng cảm thấy không có nhiều tài liệu nói về điều này, mong bạn có nhiều bài viết hơn nữa về lĩnh vực này, và nếu có tài liệu thì share cho mình với, thanks bạn nhiều!

    ReplyDelete
  10. Em chào anh!
    E đang làm đề tài về nội dung "Tìm kiếm ảnh theo nội dung". E dùng giải thuật SIFT để tìm ra được các đặc trưng rùi, giờ phải lưu trữ các đặc trưng đó để làm cơ sở dữ liệu cho việc tìm kiếm. E có đọc về cách xây dựng chỉ mục kdtree và tìm kiếm theo k láng giềng gần nhất nhưng vẫn còn lơ mơ, e chưa hình dung được cách thực hiện thế nào :-s. A có tài liệu nào hướng dẫn về nội dung này, a share cho e vs. E mới tìm hiểu nên còn kém lắm ạ. hic.
    Mong nhận được sự trợ giúp của a! Cảm ơn a nhiều nhiều!:)
    (K biết e hỏi câu hỏi này có đúng vs chủ đề của mục này k nữa? chắc là k sao :D)

    ReplyDelete
  11. Cảm ơn bạn nhiều!

    ReplyDelete
  12. em đang làm bài tập về các thuật toán so khớp mẫu (template matching)các anh chị ạ. nhưng em chưa tìm được tài liệu nào tốt cả. ai có cho em xin link với. tiếng anh cũng đc a.

    ReplyDelete
  13. chào anh,cho em hỏi
    thực hiện những yêu cầu này như thế nào ạ
    Lay tung frame, thuc hien background subtraction, neu khac nhau thi tuc la co nguoi di qua
    So sanh voi template --> dem

    ReplyDelete
  14. Anh ơi, em đang nghiên cứu là một hệ thống kiểm tra sản phẩm theo dây chuyền, mình sẽ cho một sản phẩm mẫu trước, các sản phẩm kia chạy qua dây chuyền, có một máy kiểm tra xem thử sản phẩm đó có giống sản phẩm mẫu không, ví dụ giống 90% thì đạt chuẩn, ko đủ điều kiện thì máy sẽ lấy sản phẩm đó vứt ra ngoài. Vậy anh có thể xem bài toán em sẽ dùng thuật toán gì là được ạ, mong nhận phản hồi

    ReplyDelete

chia sẻ cho chúng tôi ý tưởng hay khó khăn của bạn ...

All Rights Reserved by IEEV © 2009 - 2016
Powered By Blogger, Designed by Sweetheme

Contact Form

Name

Email *

Message *

Powered by Blogger.