( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
1
MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU CHUNG………………………………………………… 5
1.1. Giới thiệu chung về rô bốt…………………………………………………… 6
1.2. Giới thiệu rô bốt bám đối tượng…………………………………………… 6
1.3. Mục tiêu của đồ án………………………………………………………… 9
1.4. Giới hạn của đồ án………………………………………………………… 10
CHƯƠNG 2. TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ VIỆN OPENCV……… 11
2.1. Giới thiệu về xử lý ảnh 12
2.1.1. Định nghĩa xử lý ảnh………………………………………………… 12
2.1.2. Các khái niệm liên quan……………………………………………… 12
2.2. Thế nào là thị giác máy…………………………………………………… 16
2.3. Thư viện OpenCV………………………………………………………… 16
2.3.1. OpenCV là gì? 16
2.3.2. Vì sao lựa chọn OpenCV? 17
2.3.3. Cấu trúc và nội dung OpenCV như thế nào? 18
2.3.4. Các hàm I/O trong OpenCV………………………………………… 19
2.3.5. Các hàm thực hiện xử lý ảnh………………………………………… 21
2.3.6. Các hàm Histograms and Matching………………………………… 22
2.3.7. Hàm Contours………………………………………………………….22
2.3.8. Cơ sở toán học của thuật toán CamShift………………………………22
CHƯƠNG 3. LÝ THUYẾT LIÊN QUAN……………………………………………24
3.1. Cơ bản về Atmega32………………………………………………………….25
3.1.1. Atmega32 là gì? 25
3.1.2. Sơ đồ chân của ATmega32…………………………………………….26
3.1.3. Giới thiệu về Timer/Counter 0 của ATmega32……………………… 30
3.1.4. Bộ truyền nhận dữ liệu USART……………………………………… 32
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
3
6.1.4. Khối điều khiển động cơ……………………………………………………59
6.2. Tập lệnh điều khiển rô bốt……………………………………………………….61
CHƯƠNG 7. KẾT QUẢ THỰC HIỆN………………………………………………….63
7.1. Kết quả thực nghiệm với sự linh động của rô bốt trên một số địa hình 64
7.2. Thực nghiệm với phần xử lý ảnh ứng dụng điều khiển rô bốt 67
7.2.1. Kết quả thử nghiệm với môi trường tĩnh….………………………………………67
7.2.2. Kết quả thử nghiệm với môi môi trường động….……………………………… 69
KẾT LUẬN…………………………………………………………………………… 73
PHỤ LỤC A. CHƯƠNG TRÌNH XỬ LÝ ẢNH……………………………………… 75
PHỤ LỤC B. CHƯƠNG TRÌNH ĐIỀU KHIỂN ROBOT…………………………… 89
PHỤ LỤC C. CHƯƠNG TRÌNH TRUYỀN THÔNG RS232…………………………101
TÀI LIỆU THAM KHẢO…………………………………………………………… 107
DANH SÁCH HÌNH VẼ
Hình 1.1: PANrobot (nguồn: mobilerobot.org)………………………………………… 7
Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)……………………………8
Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)………………………………………… 8
Hình 1.4: Rô bốt thám hiểm sao hoả (nguồn: robotics.youngester.com)……………… 9
Hình 2.1. Lân cận các điểm ảnh của tọa độ (x,y) ……………………………………….14
Hình 2.1. Lân cận các điểm ảnh của tọa độ (x,y)……………………………………… 15
Hình 2.3. Thể hiện sự chuyển đổi……………………………………………………… 16
Hình 2.4: Quá trình phát triển của OpenCV…………………………………………… 17
Hình 2.5: Cấu trúc cơ sở của OpenCV………………………………………………… 18
Hình 3.1: Sơ đồ chân của ATmega32……………………………………………………27
Hình 3.2: Sơ đồ khối của Timer/Counter0………………………………………………30
Hình 3.3. Giản đồ thời gian của chế độ PWM………………………………………… 32
Hình 3.5: Cổng giao tiếp RS232………………………………………… 41
Hình 5.1:Sơ đồ khối tổng quát hệ thống điều khiển rô bốt 47
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
5
Biểu đồ 7: Giá trị toạ độ tâm đối tượng môi trường động (320x240)………………… 71
Biểu đồ 8: Giá trị toạ độ tâm đối tượng môi trường động (640x480)………………… 71
Biểu đồ 9: Giá trị toạ độ tâm đối tượng môi trường động tốc độ không đổi…………….72
CHƯƠNG 1
GIỚI THIỆU CHUNG
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
6
1.1. Giới thiệu chung về rô bốt
Rô bốt hay người máy là một loại máy có thể thực hiện những công việc một cách
tự động bằng sự điều khiển của máy tính.
Rô bốt là một tác nhân cơ khí, nhân tạo, thường là một hệ thống cơ khí-điện tử. Với
sự xuất hiện và chuyển động của mình, rô bốt gây cho người ta cảm giác rằng nó giác
quan giống như con người. Từ "rô bốt" (người máy) thường được hiểu với hai nghĩa: rô
bốt cơ khí và phần mềm tự hoạt động. Về lĩnh vực người máy, Nhật Bản là nước đi đầu
thế giới về lĩnh vực này.
Ngày nay rô bốt đang là tâm điểm của một cuộc cách mạng lớn sau Internet. Rô
bốt ngày càng được sử dụng rộng rãi trong lĩnh vực công nghiệp, y tế, giáo dục đào tạo,
giải trí, an ninh quốc phòng, thám hiểm không gian.
Rô bốt là sản phẩm công nghệ có độ phức tạp cao, chứa hàm lượng tri thức vô
cùng phong phú về tất cả các lĩnh vực của khoa học và công nghệ.
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
7
8
Một thách thức của thị giác máy là việc phân loại đối tượng. Một rô bốt có thể phải
đối mặt với nhiều đối tượng khác nhau, trong khi đó chỉ có một mục tiêu quan tâm, còn
các đối tượng khác thì không.
Để nhận biết được thông tin về vị trí của mục tiêu trong môi trường động, các đặc
trưng của mục tiêu rất quan trọng. Các điểm lỗ, các góc cạnh, các đặc điểm hình học của
mục tiêu được phân tích qua quá trình nhận dạng. Đặc tính về trọng tâm của mục tiêu có
thể tính dễ dàng qua moment bâc nhất trong môi trường tĩnh, nhưng trong môi trường
động việc này rất khó vì chi phí thời gian tính toán lớn.
Bài toán bám mục tiêu di động với quỹ đạo không biết trước yêu cầu phải giữ được
đối tượng ở một vị trí nhất định trên mặt phẳng ảnh. Thuật toán CamShift được sử dụng
để tính toán toạ độ trọng tâm của đối tượng.
Hình 1.1: PANrobot (nguồn: mobilerobot.org
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
9
Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)
Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
10
Hình 1.4: Robot thám hiểm sao hỏa (nguồn: robotics.youngester.com)
1.3. Mục tiêu của đồ án
Mục tiêu nghiên cứu của đồ án có thể chia thành ba phần như sau:
Thứ nhất: Thiết kế và chế tạo rô bốt có kết cấu phù hợp với một số loại địa hình
như: bậc cầu thang, những mặt phẳng nghiêng và có độ dốc lớn….
Thứ hai: Xây dựng phần mềm rô bốt di động bám đối tượng sử dụng OpenCV.
Thuật toán được lựa chọn để sử dụng trong đồ án là thuật toán CamShift.
13
2.1. Giới thiệu về xử lý ảnh
2.1.1. Tổng quan về xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ. Nó là một ngành khoa
học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh,
kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng
cho nó.
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay.
Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác. Đầu tiên
phải kể đến xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín hiệu chung, các
khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn… Thứ
hai, các công cụ toán như đại số tuyến tính, sác xuất, thống kê. Một số kiến thứ cần thiết
như trí tuệ nhân tao, mạng nơ ron nhân tạo cũng được đề cập trong quá trình phân tích và
nhận dạng ảnh.
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh
và phân tích ảnh. Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được
truyền qua cáp từ Luân đôn đến New York từ những năm 1920. Vấn đề nâng cao chất
lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh. Việc nâng cao chất
lượng ảnh được phát triển vào khoảng những năm 1955. Điều này có thể giải thích được
vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh
sô thuận lợi. Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ
mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh. Từ năm
1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển
không ngừng. Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các thuật
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
14
toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi và
thu nhiều kết quả khả quan.
· Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị
số tại điểm đó.
· Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức
phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám:
Mức xám dùng 1 byte biểu diễn: 2^8 =256 mức, tức là từ 0 đến 255).
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
15
· Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám
ở các điểm ảnh có thể khác nhau.
· Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức dùng 1 bit mô tả 2 1 mức
khác nhau. Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1.
· Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo nên thế giới
màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu:
2^(8*3) =2^( 24) ≈ 16,7 triệu màu.
d. Định nghĩa ảnh số :
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh
thật.
e. Quan hệ giữa các điểm ảnh :
Một ảnh số giả sử được biểu diễn bằng hàm f(x, y). Tập con các điểm ảnh là S; cặp
điểm ảnh có quan hệ với nhau ký hiệu là p, q. Chúng ta nêu một số các khái niệm sau.
· Các lân cận của điểm ảnh (Image Neighbors) :
* Giả sử có điểm ảnh p tại toạ độ (x, y). p có 4 điểm lân cận gần nhất theo chiều
đứng và ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc).
{(x-1, y); (x, y-1); (x, y+1); (x+1, y)} = N 4 (p)
trong đó: số 1 là giá trị logic; N 4 (p) tập 4 điểm lân cận của p.
Đông x Tây
Nam
(x -1, y-1) (x, y-1) (x+1, y-1)
Trong xử lý ảnh do số điểm ảnh lớn các tính toán nhiều (độ phức tạp tính toán cao)
đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu. Các phương pháp khoa học kinh
điển áp dụng cho xử lý ảnh hầu hết khó khả thi. Người ta sử dụng các phép toán tương
đương hoặc biến đổi sang miền xử lý khác để dễ tính toán. Sau khi xử lý dễ dàng hơn
được thực hiện, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổi
thường gặp trong xử lý ảnh gồm:
- Biến đổi Fourier, Cosin, Sin
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker (theo xử lý số tín hiệu [3])
- Các biến đổi khác như KL (Karhumen Loeve), Hadamard
Một số các công cụ sác xuất thông kê cũng được sử dụng trong xử lý ảnh. Do khuôn
khổ tài liệu hướng dẫn có hạn, sinh viên đọc thêm các tài liệu [1, 2, 3, 4, 5] để nắm được
các phương pháp biến đổi và một số phương pháp khác được nêu ở đây.
g. Nén ảnh :
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn. Khi mô tả ảnh người ta đã đưa
kỹ thuật nén ảnh vào. Các giai đoạn nén ảnh có thể chia ra thế hệ 1, thế hệ 2. Hiện nay,
các chuẩn MPEG được dùng với ảnh đang phát huy hiệu quả.
h. Không gian màu HSV :
Không gian màu HSV ( Hue , Saturation , Value ) thường được sử dụng bởi những
người cần phải lựa chọn màu sắc ( chẳng hạn để in hoặc vẽ ) từ một đĩa màu vì vậy nó
tương ứng tốt hơn ( kinh nghiệm màu sắc ) không gian màu RGB đem lại . Hàm rgb2hsv
và hsv2rgb chuyển đổi ảnh giữa các không gian màu RGB và HSV .
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
17
Khi giá trị Hue nằm trong khoảng 0 và 1 thì màu tương ứng sẽ biến đổi từ red,
yellow , green , cyan , blue , magenta và black sang red . Vì vậy , giá trị thực của red là từ
0 đến 1 . Cũng vậy , khi saturation biến thiên từ 0 đến 1 , màu tương ứng ( hues ) biến đổi
từ chưa bão hoà đến hoàn toàn bão hoà ( unsaturated to fully saturated ) . Cuối cùng , nếu
value ( hay độ sáng ) biến đổi từ 0 đến 1 , màu tương ứng sẽ càng sáng hơn .
hàm sử dụng trong thị giác máy.
OpenCV là một thư viện mã nguồn mở (open source) http://sourceforge.net/. Thư
viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều hành Linux,
Window và Mac OS X. OpenCV được thiết kế để nâng cao hiệu suất tính toán và nhấn
mạnh đến hệ thống thời gian thực. Một điều tuyệt vời của OpenCV là nó đưa ra một hệ
thống đơn giản, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng trong thị
giác máy, kể cả các hệ thống kiểm tra trong nhà máy, bức ảnh trong lĩnh vực y học, bảo
mật, rô bốt học v v. Nó chứa các lập trình xử lý ảnh rất đơn giản, kể cả thực thi các hàm
bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt, lọc Kalman.
Kể từ khi được giới thiệu vào tháng 1 năm 1999, OpenCV đã được sử dụng trong rất
nhiều ứng dụng, các sản phẩm và các nghiên cứu. Ví dụ trong lĩnh vực hàng không vũ trụ,
bản đồ web, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dò
tìm, theo dõi tự động và hệ thống bảo mật, quản lý hệ thống sản xuất, xử lý camera, ứng
dụng trong quân sự, hệ thống hàng không không người lái, trên mặt đất, các tàu ngầm.
Ngoài ra, nó còn được sử dụng trong nhận dạng âm thanh. OpenCV còn là một chìa khóa
quan trọng trong các rô bốt sử dụng thị giác máy như Stanford, Asimo.
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
20
Hình 2.4: Quá trình phát triển của OpenCV
2.3.2. Vì sao lựa chọn OpenCV ?
- Thị trường thị giác máy đang ngày càng mở rộng và liên tục phát triển.
- Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng
hơn.
- Đặc biết tối ưu khi sử dụng cấu trúc của Intel.
- Tạo ra các mẫu ứng dụng bằng các thư viện được cập nhật thường xuyên và thực
hiện được các thuật toán rất nặng như dò tìm khuôn mặt.
- Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư viện OpenCV
trong ứng dụng của mình (điển hình như Intel, Microsoft, IBM, Siemens, Google v v.) và
ta lựa chọn thuật toán linh động hơn bằng cách cung cấp các hàm tạo thanh trượt slider,
switch v v. Để làm việc với OpenCV trước hết phải học các hàm trong thư viện này.
Thư viện HighGUI có thể chia thành 3 phần: phần cứng, phần file hệ thống và phần
GUI (Graphical User Interface) chúng ta có thể xem xét các phần trong thư viện HighGUI
như sau.
Phần cứng: là phần thiết yếu nhất, liên quan đến hoạt động của Camera, trong phần
lớn hệ điều hành việc tương tác với phần cứng rất khó khăn và thực sự rất khó nhưng
OpenCV cung cấp hàm đơn giản để thực hiện việc tương tác này ví dụ:
cvCaptureFromCAM().
Phần file hệ thống: là khái niệm liên quan đến việc tải và lưu ảnh, một đặc điểm rất
tuyệt vời trong thư viện HighGUI là cho phép chúng ta làm việc với ảnh tương tự khi làm
việc với video. Vì vậy chúng ta có thể nhanh chóng tiếp cận với việc xử lý ảnh mà không
mất nhiều thời gian cho việc tải, lưu ảnh, video.
Phần GUI: là hệ thống cửa sổ (Window), thư viện cung cấp một số hàm đơn giản mà
cho phép chúng ta mở một window hiển thị ảnh trên window này. Ngoài ra nó còn cho
phép chúng ta thực thi các sự kiện nhận được từ chuột và bàn phím.
Một số hàm đơn giản thường xuyên sử dụng trong thư viện HighGUI như sau:
· Đầu tiên chúng ta cần học cách làm thế nào để đọc và viết các files ảnh, chụp
video chuyển đổi giữa các định dạng màu, và truy cập dữ liệu điểm ảnh tất cả qua
giao diện OpenCV.
· Đọc và viết một bức ảnh.
· Bức ảnh vào/ra thì rất dễ dàng trong OpenCV, để đọc một file ảnh, đơn giản gọi
hàm cvLoadImage(tên file). OpenCV hỗ trợ hầu hết các định dạng phổ biến kể cả
JPEG, PNG và BMP. Bạn không cần cung cấp thông tin định dạng.
cvLoadImage() tự động quyết định dạng file thông qua file header này.
· Để viết một bức ảnh đến một file, ta dùng hàm cvSaveImage(). Hàm này cũng tự
quyết định file định dạng, để sử dụng từ tên file mở rộng.
· Cả cvLoadImage và cvSaveImage đều nằm trong module HighGUI .
· Khi sử dụng xong bức ảnh đầu vào nhận được từ cvLoadImage(), loại bỏ nó bằng
hàm cvReleaseImage(). Hàm này đưa ra một địa chỉ của con trỏ giống đầu vào của
· Chúng ta có thể tạo ra rất nhiều hàm truy cập điểm ảnh mà không cần tác động trực
tiếp đến dữ liệu ảnh thô.
( Word to PDF - Unregistered ) http://www.word-to-pdf.abdio.com/
Word to PDF - UnRegistered
http://www.word-to-pdf.abdio.com/
24
Cách dễ nhất để đọc từng điểm ảnh riêng lẻ là sử dụng hàm cvGet2D.
· cvScalar cvGet2D(const *CvArr, int row, int col).
· Hàm này có 3 thuộc tính: một pointer trỏ đến dữ liệu chứa trong CvArr*, một
mảng chỉ rõ vị trí hàng và cột. Hàng topmost của điểm ảnh là row=0, và
bottommost là row=height-1.
2.3.5. Các hàm thực hiện xử lý ảnh
Thư viện HighGUI chỉ cung cấp các hàm thực hiện vào ra bức ảnh tuy nhiên vấn đề
xử lý ảnh mới thực sự là quan trọng và khó khăn. OpenCV cung cấp các hàm thực hiện
xử lý ảnh nằm trong thư viện cv. Một bức ảnh không chỉ đơn giản là một mảng giá trị
màu sắc. khi chúng ta đề cập đến xử lý ảnh thì nó đã bao gồm các hàm xử lý liên quan
đến cấu trúc của bức ảnh.
Một số hàm xử lý ảnh thường xuyên sử dụng như sau:
· Smoothing (làm mịn).
Smoothing hay còn gọi là blurring nó là một thuật toán xử lý ảnh đơn giản và
thường xuyên sử dụng. Có rất nhiều nguyên nhân chúng ta dùng đến smoothing nhưng nó
thường dùng để loại bỏ nhiễu do máy ảnh sinh ra. Smoothing quan trọng khi bạn muốn
giảm độ phân giải của một bức ảnh theo rất nhiều cách khác nhau.
Bằng việc thay thế kiểu smooth và các thông số sẽ có các bức ảnh tương đối khác
nhau tuy theo mục đích sử dụng nhưng thường dùng nhất vẫn là CV_GAUSSIAN.
· Image morphology (hình thái học bức ảnh).
OpenCV cung cấp hàm chuyển đổi morphology nhanh chóng và tiện lợi khi làm
việc với bức ảnh. Cơ bản của morphology là dilation (giãn) và erosion (co) chúng ngày
càng được sử dụng rộng rãi trong việc loại bỏ nhiễu, cô lập những thành phần riêng rẽ, và
liên kết các thành phần với nhau.
2.3.8. Cơ sở toán học của thuật toán CamShift
Camshift viết gọn của “Continuously Adaptive Mean Shift” là cơ sở của thuật toán
theo dõi khuôn mặt trong OpenCV. Nó bao gồm thuật toán cơ sở Mean Shift với thích
ứng các bước thay đổi kích cỡ của vùng. Nhân là một hàm step đơn giản nằm trong một
bản đồ vỏ xác suất (skin-probability). Vỏ xác suất của mỗi một điểm ảnh được tính toán
dựa trên màu sắc bằng cách sử dụng một phương pháp gọi là Histogram backprojection.
Màu sắc được đưa ra như Hue từ mô hình màu HSV.