Tải bản đầy đủ (.docx) (22 trang)

Nhận diện khuôn mặt với 2 thuật toán viola jones, camshift

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (471.96 KB, 22 trang )

Contents

1


Lời mở đầu
Theo dõi các đối tượng tự động là một phương pháp của xử lý ảnh số, nó bao
gồm việc tìm kiếm và theo dõi các đối tượng khác nhau di chuyển qua các khung hình
kế tiếp nhau theo trình tự của một video. Chức năng này của computer vision được mở
rộng và sử dụng trong các giao diện người dùng, robot, các thiết bị y tế, thiết bị giám
sát… Và được quan tâm nhất là hệ thống theo dõi tự động được nhúng trong các nền
tảng khác nhau. Các công việc dưới đây mô tả một trong các triển khai như vậy. Việc tạo
ra hệ thống theo dõi được nhúng trong các nền tảng gồm 2 vấn đề: một là chọn nền tảng
thích hợp, hai là chọn thuật toán theo dõi tương ứng có độ tin cậy và tốc đô chấp nhận
được.
Hầu hết các thuật toán được phát triển gần đây đều dựa trên nguyên tắc sau: phương
pháp tương quan, lưu lượng quang học, trừ nền, lọc hạt, phương pháp đánh giá mật độ
xác suất,…Phương pháp tương quan và lưu lượng quang học được phân biệt với những
tính toán phức tạp làm chúng khó phù hợp với những ứng dụng thời gian thực. Việc trừ
nền thì kém hiệu quả khi có tiếng ồn và không thể làm việc khi camera đang chuyển
động. Việc lọc hạt thì lại đánh đổi độ tin cậy với tốc độ. Do đó trong bài tập lần này
chúng em chọn sử dụng phương pháp tiếp cận dựa trên thuật toán ước lượng mật độ xác
suất gọi là Camshift. Kĩ thuật này có chi phí tính toán thấp và có thể dùng trong các ứng
dụng thời gian thực. Camshift có đủ độ tin cậy, có thể theo dõi các đối tượng không
cứng nhắc khi máy quay di chuyển, cho thấy độ nhạy thấp với tiếng ồn.
Phần sau đây của báo cáo, chúng em sẽ trình bày về thuật toán Camshift và mô hình thực
hiện nó trên Matlab Simulink.

2



Thuật toán Viola-Jones
1. Đặc trưng Haar-like
Do Viola và Jones công bố, gồm 4 đặc trưng cơ bản để xác định khuôn mặt người.
Mỗi đặc trưng Haar–like là sự kết hợp của hai hay ba hình chữ nhật "trắng" hay
"đen" như trong hình sau:

Hình 1: 4 đặt trưng Haar-like cơ
bản

Để sử dụng các đặt trưng này vào việc xác định khuôn mặt người, 4 đặt trưng
Haarlike cơ bản được mở rộng ra, và được chia làm 3 tập đặc trưng như sau:
-

Đặc trưng cạnh (edge features):

-

Đặc trưng đường (line features):

-

Đặc trưng xung quanh tâm (center-surround features):

Hình 2: Các đặc trưng mở rộng của các đặc trưng Haar-like cơ
sở
3


Dùng các đặc trưng trên, ta có thể tính được giá trị của đặc trưng Haar-like là sự
chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như trong

công thức sau:
f(x) = Tổng
của pixel)

vùng đen

(các mức xám của pixel) - Tổng

(các mức xám

vùng trắng

Sử dụng giá trị này, so sánh với các giá trị của các giá trị pixel thô, các

đặc trưng
Haar-like có thể tăng/giảm sự thay đổi in-class/out-of-class (bên trong hay bên ngoài
lớp khuôn mặt người), do đó sẽ làm cho bộ phân loại dễ hơn.

-

Nói đơn giản là: nó sẽ chèn đặc trưng Haarlike lên toàn bộ bức hình của bạn.
Khu vực nào giống thì nó sẽ nhận diện ở đó là mặt của bạn. Cho nên có rất
nhiều khu vực trong hình nó sẽ nhận là mặt của bạn. Sau đó nó sẽ dùng các
ảnh ko giống để loại trừ các vùng này. Cho nên trong quá trình training một
bộ nhận dạng của Adaboost, số lượng ảnh sai luôn phải tuơng đối nhiều để
nó loại trừ.

-

Mean shift là thuật toán tracking. Tức là sau khi nó phát hiện được đối tượng

nằm đâu nó chỉ theo dõi chuyển động của đối tượng đó. Ở đây là khuôn mặt,
sau khi xác đinh khuôn mặt, nếu khuôn mặt có lắc lư thì nó cũng sẽ theo dõi,
chứ không cần dùng lại thuật toán để nhận dạng.

4


5


2. Integral Image

Như vậy ta có thể thấy rằng, để tính các giá trị của đặc trưng Haar-like, ta phải
tính
tổng của các vùng pixel trên ảnh. Nhưng để tính toán các giá trị của các đặc trưng
Haar-like cho tất cả các vị trí trên ảnh đòi hỏi chi phí tính toán khá lớn, không đáp
ứng được cho các ứng dụng đòi hỏi tính run-time. Do đó Viola và Jones đưa ra một
khái niệm gọi là Integral Image, là một mảng 2 chiều với kích thước bằng với kích
của ảnh cần tính các đặc trưng Haar-like, với mỗi phần tử của mảng này được tính
bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó. Bắt
đầu từ vị trí trên, bên trái đến vị trí dưới, phải của ảnh, việc tính toán này đơn thuần
chỉ đựa trên phép cộng số nguyên đơn giản, do đó tốc độ thực hiện rất nhanh.

Hình 3: Cách tính Integral Image của ảnh
Sau khi đã tính được Integral Image, việc tính tổng các giá trị mức xám của một
vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản theo cách sau:
6


Giả sử ta cần tính tổng các giá trị mức xám của vùng D như trong hình 4, ta có

thể tính như sau:
D = A + B + C + D – (A+B) – (A+C) + A
Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự như
vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3, và A là giá trị tại điểm P1.
Vậy ta có thể viết lại biểu thức tính D ở trên như sau:

Hình 4: Ví dụ cách tính nhanh các giá trị mức xám của vùng D trên ảnh.

7


Tiếp theo, để chọn các đặc trưng Haar-like dùng cho việc thiết lập ngưỡng, Viola
và Jones sử dụng một phương pháp máy học được gọi là AdaBoost. AdaBoost sẽ kết
hợp các bộ phân loại yếu để tạo thành một bộ phân loại mạnh. Với bộ phân loại yếu
chỉ cho ra câu trả lời chính xác chỉ hơn viện đoán một cách ngẫn nhiên một chút,
còn bộ phân loại mạnh có thể đưa ra câu trả lời chính xác trên 60%.
3. AdaBoost
AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận
boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost cũng hoạt động
trên nguyên tắc kết hợp tuyến tính các weak classifiers để hình thành một strong
classifier.
Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng số
(weight) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi
weak classifiers được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để
chuẩn bị cho việc xây dựng weak classifier kế tiếp: tăng trọng số của các mẫu bị
nhận dạng sai và giảm trọng số của các mẫu được nhận dạng đúng bởi weak
classifier vừa xây dựng. Bằng cách này weak classifer sau có thể tập trung vào các
mẫu mà các weak classifiers trước nó làm chưa tốt. Sau cùng, các weak classifers sẽ
được kết hợp tùy theo mức độ tốt của chúng để tạo nên strong classifier.
Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc trưng

Haar-like theo mô hình phân tầng (cascade) như sau:

Hình 5: Mô hình phân tần kết hợp các bộ phân loại yếu để xác định khôn mặt
8


Trong đó hk là bộ phận loại yếu, được biểu diễn như sau:

x: cửa sổ con cần xét
O : ngưỡng (O = teta)
k

fk: giá trị của đặc trưng Haar-like
p : hệ số quyết định chiều của phương trình
k

AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau:
H(x) = sign(a1h1(x) +a2h2(x) + ... + anhn(x)) (a = alpha)
Với: a >= 0 là hệ số chuẩn hoá cho các bộ phân loại yếu
t

Hình 6: Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh
4. Hệ thống xác định vị trí khuôn mặt người

9


Hình 7: Hệ thống xác định vị trí khuôn mặt người (Face detection system)
Như trong hình trên, từ ảnh gốc ban đầu, ta sẽ được tính Integral Image, là mảng
2 chiều với phần tử (x, y) sẽ được tính bằng tổng của các phần tử (x', y') với x' < x

và y' < y, mục đích là để tính nhanh tổng của các giá trị mức xám của một vùng
hình chữ nhật bất kỳ trên ảnh gốc. Các vùng ảnh con này sẽ được đưa qua các hàm
Haar cơ bản để ước lượng đặc trưng, kết quả ước lượng sẽ được đưa qua bộ điều
chỉnh AdaBoost để loại bỏ nhanh các đặc trưng không có khả năng là đặc trưng của
khuôn mặt người. Chỉ có một tập nhỏ các đặc trưng mà bộ điều chỉnh AdaBoost
cho là có khả năng là đặc trưng của khuôn mặt người mới được chuyển sang cho bộ
quyết định kết quả (là tập các bộ phân loại yếu có cấu trúc như trong hình 5). Bộ
quyết định sẽ tổng hợp kết quả là khuôn mặt người nếu kết quả của các bộ phân loại
yếu trả về là khuôn mặt người.
Mỗi bộ phân loại yếu sẽ quyết định kết quả cho một đặc trưng Haar-like, được
xác định ngưỡng đủ nhỏ sao cho có thể vượt được tất cả các bộ dữ liệu mẫu trong
tập dữ liệu huấn luyện (số lượng ảnh khuôn mặt trong tập huấn luyện có thể rất lớn).
Trong quá trình xác định khuôn mặt người, mỗi vùng ảnh con sẽ được kiểm tra với
các đặc trưng trong chuỗi các đặc trưng Haar-like, nếu có một đặc trưng Haar-like
nào cho ra kết quả là khuôn mặt người thì các đặc trưng khác không cần xét nữa.
Thứ tự xét các đặc trưng trong chuỗi các đặc trưng Haar-like sẽ được dựa vào trọng
số (weight) của đặc trưng đó do AdaBoost quyết định dựa vào số lần và thứ tự xuất
hiện của các đặc trưng Haar-like.

10


Thuật toán Camshift
Giải thuật Camshift (Continuously Adaptive Mean Shift) dựa trên nền tảng là giải thuật Mean
Shift và được hiệu chỉnh để đạt mục đích theo vết động. Sự cải tiến của Camshift so với
Meanshift được minh họa ở bảng sau:
Thông số
Trạng thái đối
tượng
Kích thước

đôi tượng
Dữ liệu phân
tích

MeanShift
Tĩnh, chỉ tịnh
tiến
Cố định

Camshift
Động, có thể
xoay
Thay đổi

Phân bố màu
tĩnh, chỉ cập
nhật khi có sự
thay đổi lớn

Kích thước
cửa sổ tìm
kiếm
Kích thước
vùng tính
Tìm vector di
chuyển

Cố định

Phân bố màu

liên tục cập
nhật liên tục
frame by
frame
Thay đổi

Cố định

Thay đổi

Dựa trên
khoảng cách
trọng tâm thay
đổi

Dựa trên
moment cấp 2
để tìm và dự
đoán vector dị
chuyển

So sánh MeanShift và Camshift
Thuật toán Camshift được phát triển cho việc theo dõi hiệu quả khuôn mặt và đầu trong
các giao diện người dùng tri giác. Phần chính của nó là một phương pháp phi tham số mạnh mẽ
cho phép việc tăng dần các xác suất nhằm tìm ra đỉnh của mật độ xác suất. Thuật toán này còn
được gọi là mean-shift. Thuật toán Camshift ban đầu sử dụng thuật toán Histogram một chiều
như là mô hình các đối tượng bắt được. Các biểu đồ bao gồm các kênh màu (H) trong không gian
màu HSV. Việc tìm kiếm được thực hiện thông qua việc tìm kiếm các phân bố xác suất lớn nhất
thu được từ các biểu đồ trình chiếu lại (back projection). Để giảm lượng tính toán, các phân bố
xác suất không quét trên toàn bộ không gian ảnh, thay vào đó là chỉ tính toán trên một không

gian nhỏ xung quanh cửa sổ tìm kiếm hiện tại.
Thuật toán Camshift gồm 3 phần:
1. Back projection
2. Meanshift
3. Track
Page 11


Chi tiết về các phần trong Camshift:
1. Back projection
Back projection là phương pháp xử dụng các biểu đồ histogram của hình ảnh để hiển thị
các xác suất xuất hiện của các màu trong mỗi điểm ảnh. Bước đầu tiên của thuật toán này là
chuyển đổi các không gian hình ảnh sang không gian HSV ( hoặc bất kì không gian ảnh nào bao
gồm kênh H, đặc trưng cho màu sắc của mỗi điểm ảnh ). Sau đó chia kênh H ra, như một ảnh
xám duy nhất, lấy histogram và bình thường hóa nó. Bước cuối là sử dụng hàm tính toán back
project của ảnh. Bức ảnh back projection thu được thể hiện xác suất 1 điểm ảnh có thuộc đối
tượng hay không
Ảnh đầu vào:

Chuyển sang không gian HSV và đây là kênh H:

Page 12


Histogram của ảnh kênh H:

Page 13


Tính toán lại trọng lượng của từng màu sắc trong toàn bộ bức ảnh histogram và thay đổi

giá trị mỗi điểm ảnh với trọng lượng màu sắc của nó trong toàn bộ bức ảnh. Đây là hình ảnh sau
khi thực hiện back projection.

2. Meanshift

Meanshift là thuật toán thực hiện trên một tập dữ liệu nhằm tìm ra các đại diện, sử dụng hàm mật
độ xác suất cơ bản PDF trên không gian RxN. Đây là kĩ thuật phân nhóm không tham số, không
đòi hỏi hiểu biết về các cluster, và cũng không hạn chế hình dạng các cluster.
Thuật toán Meanshift là thuật toán theo dõi được phát triển từ phương pháp Gauss dùng ước
lượng đối tượng trên một cửa sổ cố định, chia ảnh của đối tượng thành các ma trận điểm ảnh, sau
đó thực hiện ước lượng các điểm ảnh này bằng phương pháp Gauss, tính trung bình các pixel đó
trên khung ảnh cố định của đối tượng. Quá trình lặp lại cho đến khi hội tụ.
Đầu vào của thuật toán là bức ảnh xám hay back projection.
Đầu tiên nó sẽ tính toán centroid của tất cả các điểm ảnh trong ảnh. Nếu các centroid này là “
weighted” thì các điểm ảnh sáng sẽ được gán một trọng lượng lớn hơn, các điểm ảnh màu đen thì
sẽ không có gì.
Để dễ hiểu, hãy tưởng tượng chúng ta đang trong không gian d chiều ( d>2), và có rất nhiều điểm
trong không gian này. Mục đích của thuật toán meanshift trong trường hợp này là phân nhóm các
điểm này. Bây giờ chúng ta tạo ra một hình cầu mà tâm là một trong các điểm này, bán kinh h. Vì
chúng ta đang trong không gian high-demensional nên hình cầu chúng ta tạo ra cũng là highdemensional. Khi đó, mỗi điểm chính là một vector , và tổng các vector này gọi là meanshift.
Với vector meanshift này, chúng ta sẽ có được khối lượng của vector trung tâm hiện tại.

Page 14


Phần trên là phần lõi của thuật toán meanshift, sau đây sẽ là toàn bộ thuật toán:
• Khởi tạo hình cầu, bao gồm tâm và bán kính.
• Tính toán các giá trị mass của tâm hiện tại.
• Chuyển tâm hình cầu tới tâm mass.


Page 15




Lặp lại bước 2,3 cho đến khi đạt giá trị hội tụ, là mass trung tâm hiện tại
sau khi tính toán, cũng là tâm của hình cầu.

Quá trình này sẽ được lặp lại trong các khung hình của video.
Điểm mạnh : thuật toán Meanshift theo dõi đối tượng hiệu quả hơn trong việc tìm kiếm
đối tượng trong lân cận nơi chúng đã từng xuất hiện trong frame trước.
Điểm yếu của Meanshift : là về kích thước cửa sổ tìm kiếm có kích thước không đổi nên
điều này làm cho nó chỉ theo dõi được một phần của đối tượng, đưa ra một kết quả ước tính
không chính xác về vị trí của nó.
3. Track

Đây là bước cuối cùng trong tracking, khi chúng ta có sẵn một video hoặc các frame bắt
được bởi camera, chúng ta sẽ áp dụng thuật toán meanshift lên từng frame ảnh, và khởi tạo cửa
sổ ban đầu cho mỗi khung là cửa sổ đầu ra của khung trước.
Thuật toán Camshift giảm theo trình tự các bước sau đây:
Thiết lập khu vực tính toán xác suất bằng nhau cho toàn bộ frame.
Chọn vị trí ban đầu cho cửa sổ tìm kiếm trung bình 2 chiều.
Tính phân phối màu sắc cho khu vực trung tâm 2D của cửa sổ tìm kiếm trong vùng lớn
hơn kích cỡ cửa sổ tìm kiếm trung bình.
o Thực hiện các tìm kiếm mật độ xác suất tối đa sử dụng các tham số dịch chuyển trung
bình để hội tụ hoặc để thiết lập số lần lặp lại. Lưu trữ các thời điểm không( vị trí hoặc
kích cỡ) và các vị trí trung bình.
o Trong những khung hình tiếp theo, đặt các cửa sổ tìm kiếm ở các vị trí trung bình cố
đinh tìm được ở bước 4 và thiết lập cửa sổ về thời điểm gần nhất. Trở lại bước 3.
o

o
o

Page 16


Như đã đề cập, ở bước 2 , các phân bố xác suất được tính dựa vào thủ tục trình chiếu lại.
Hoạt động ở mức thấp này đặt các giá trị điểm ảnh vào các bin Histogram đích tương
ứng. Đối với phân bố xác suất 2D rời rạc, giá trị trung bình( trọng tâm) trong cửa sổ tìm
kiếm( bước 3,4) có thể được xác định như sau:

Với (x,y) là giá trị phân phối xác suất rời rạc tại điểm (x,y) trong hình ảnh sao lại, các giá
trị x,y thay đổi trong một cửa sổ tìm kiếm.

- thời điểm không,



là các thời

điểm đầu tiên.
là vị trí của một cửa sổ tìm kiếm (trọng tâm). Tính toán vị trí trung
bình là việc lặp đi lặp lại các thay đổi cho đến khi đạt được sự thay đổi nhỏ nhất của điểm
ảnh theo và . Giá trị lớn nhất của số lần lặp được đưa ra thường là từ 10 đến 20.
Quy mô và hình dạng của phân phối (quy mô và hình dạng của đối tượng) đều được tính
toán bằng cách sử dụng phương trình sau:

Hai giá trị riêng đầu tiên (chiều rộng và chiều dài) của phân bố xác suất (tương ứng với
đối tượng) được bắt bởi Camshift có thể tính được với công thức gần giống với công thức
tính tại thời điểm trung tâm:


Các giới hạn của các bán trục w và l được tính theo công thức sau:

Page 17


Định hướng đối tượng (chủ yếu theo trục nghiêng) có thể được tính theo công thức sau:

Nếu biểu đồ Histogram đích có chứa một số lượng đáng kể các đặc điểm thuộc về hình
nền hoặc các đối tượng lân cận, khi đó vị trí và quy mô mục tiêu khó có thể được xác
định chính xác. Để đối phó với vấn đề này, chúng ta có thể áp dụng một kĩ thuật đơn
giản: giảm khối lượng các bin của Histogram đích thuộc đồng thời cả Histogram của nền.
Nói cách khác là sử dụng tỉ lệ giữa các bin của Histogram đích với các bin Histogram của
nền tương ứng (nền tương ứng với bên ngoài cửa sổ tìm kiếm ban đầu) – gọi là biểu đồ
trọng lượng. Biểu đồ trọng lượng có thể viết như sau:

Với

là khối lượng Histogram (tỉ lệ biểu đồ),

Page 18

là Histogram đích,

là Histogram nền.


Tại sao lại Là Matlab?

o

o
o
o
o
o

o
o
o
o
o
o
o

Matlab là ngôn ngữ lập trình thực hành bậc cao, dùng để giải các bài toán về kĩ
thuật. Matlab tích hợp được việc tính toán, thể hiện kết quả, cho phép lập trình, giao diện
người dùng dễ làm việc. Dữ liệu cùng với thư viện được lập trình sẵn cho phép người sử
dụng có thể thực hiện nhiều ứng dụng trong thực tế trong điều khiển, viễn thông, xử lý
âm thanh, hình ảnh, video…và những ứng dụng sau đây:
Sử dụng các hàm có sẵn trong thư viện, các phép tính toán thông thường.
Cho phép lập trình tạo ra những ứng dụng mới.
Cho phép mô phỏng các mô hình thực tế.
Phân tích, khảo sát và hiển thị dữ liệu.
Với phần mềm đồ họa cực nhanh.
Cho phép phát triển, giao tiếp với một số phần mềm khác như : C++, Fortan.
Tổng quan cấu trúc dữ liệu trong Matlab, các ứng dụng:
Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (không đòi hỏi về
kích thước) . Chúng cho phép giải quyết các vấn đề liên quan đến lập trình bằng máy
tính, đặc biệt sử dụng các phép tính về ma trận hay vector và có thể sử dụng ngôn ngữ C
hoặc Fortan lập trình rồi thực hiện ứng dụng lập trình đó bằng các câu lệnh gọi từ Matlab.

Matlab được viết tắt từ “ Matrix Laboratory” – thư viện về ma trận, từ đó phần mềm
Matlab được viết nhằm cung cấp cho việc truy cập vào các phần mềm ma trận một cách
dễ dàng, phần mềm ma trận này được phát triển bởi các công trình Linpack hoặc Eispack.
Ngày nay Matlab được phát triển bởi Lapack và Artpack tạo nên một nghệ thuật phần
mềm cho ma trận.
Dữ liệu trong Matlab:
Dữ liệu trong Matlab được thể hiện dưới dạng ma trận (hoặc mảng – tổng quát ) , và có
các kiểu dữ liệu được liệt kê sau đây:
Kiểu đơn single, kiểu này có lợi về bộ nhớ, vì nó đòi hỏi dữ liệu ít byte nhớ hơn, kiểu dữ
liệu này ít được sử dụng trong tính toán vì độ chính xác kém hơn.
Kiểu double, kiểu này là thông dụng nhất trong Matlab.
Kiểu Spare
Kiểu uint8, uint16, uint64…
Kiểu char.
Kiểu cell.
Kiểu structure.
Trong Matlab kiểu double là được mặc định sử dụng trong các phép tính số học.
Toolbox là một công cụ quan trọng trong Matlab:

Page 19


Công cụ này được Matlab cung cấp cho phép bạn ứng dụng các kĩ thuật để phân tích,
thiết kế, mô phỏng các mô hình.
Ta có thể tìm thấy các toolbox ở trong môi trường làm việc của:
o Mạng noron
o Logic mờ
o Simulink
Do thế mạnh về ma trận nên Matlab là một công cụ xử lý ảnh đơn giản với người dùng
mà không kém phần mạnh mẽ.


Trình tự thực hiện tracking face với Matlab:
Page 20


Bước 1. Thực hiện detect.
Sử dụng vision.CascadeObjectDetector để thực hiện dectect vị trí mặt trong từng frame
ảnh. Cascade object detector sử dụng thuật toán của Viola- Jones và một mô hình phân
loại được đào tạo để phát hiện. Theo mặc định, nó dùng để phát hiện khuôn mặt, tuy
nhiên có thể cấu hình để phát hiện các đối tượng khác nhau.
Khởi tạo đối tượng CascadeObjectDetector:
faceDetector = vision.CascadeObjectDetector();

Bước 2: Xác định đặc trưng khuôn mặt để theo dõi:
Khi đã xác định được khuôn mặt năm trong đoạn video, bước tiếp theo là xác định đặc
trưng để giúp theo dõi khuôn mặt. Ví dụ có thể sử dụng hình dạng, kết cấu, hoặc màu
sắc…Chọn một đặc trưng là duy nhất cho đối tượng và bất biển ngay cả khi đối tượng di
chuyển.
Trong chương trình này chúng em sử dụng đối tượng là tông màu da. Tông màu da cung
cấp một lượng tương phản giữa mặt và nền, và không thay đổi kể cả khi xoay mặt hoặc di
chuyển.
Chuyển ảnh từ hệ màu RGB sang hệ màu HSV để lấy được tông màu :
[hueChannel,~,~] = rgb2hsv(videoFrame);

Bước 3: Với tông màu da được chọn như tính năng theo dõi , bây giờ chúng em
sử dụng vision.HistogramBasedTracker để theo dõi. Các theo dõi biểu đồ trên sử dụng thuật toán
Camshift, cung cấp khả năng theo dõi một đối tượng dựa trên histogram của các điểm ảnh.

Tài liệu tham khảo:
/> />Page 21



Page 22



×