ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN NGUYỄN DUY NGHĨA - 0012612 NGHIÊN CỨU KĨ THUẬT XỬ LÍ VIDEO SỐ, ỨNG DỤNG VÀO THEO
VẾT VÀ PHÂN LOẠI ĐỐI TƯỢNG
LUẬN VĂN CỬ NHÂN TIN HỌC
GIÁO VIÊN H ƯỚNG DẪN
TH.S NGUY ỄN TRI TUẤN
NIÊN KHÓA 2000 - 2004
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
LỜI CẢM ƠN
Trước tiên tôi xin cảm ơn thầy Nguyễn Tri Tuấn người đã hướng dẫn tôi
thực hiện đề tài này. Nhờ có sự tin tưởng, chỉ bảo tận tình của thầy tôi luận văn
này đã hoàn thành.
Con xin gửi tất cả lòng biết ơn, quý trọng đến ông bà, cha mẹ và các người
thân trong gia đình đã hết lòng nuôi con ăn học và luôn luôn ở bên cạnh con
động viên con khi con gặp khó khăn
Em xin cảm ơn tất cả các thầy cô trong trong trường Khoa Học Tự Nhiên
và đặc biệt là các thầy cô trong Khoa Công Nghệ Thông tin đã nhiệt tình giảng
dạy và truyền đạt nhiều kiến thức quý báu cho em.
Tôi xin chân thành cảm ơn bàn bè trong lớp cũng như các anh chị khóa
trước đã cho giúp đỡ chỉ bảo tận tình, đặc biệt là anh Trương Thiên Đỉnh đã giúp
đỡ tôi nhiều mặt về thiết bị cũng như tài liệu
Đây là một hướng nghiên cứu mới và rất khó, với thời gian tiếp cận khá
ngắn trong vòng 6 tháng và năng lực của người làm đề tài cho nên đề tài chắc
chắn còn nhiều thiếu sót. Huy vọng sẽ nhận được nhiều lời đóng góp để đề tài
này hoàn thiện hơn
Tp HCM tháng 7 n ăm 2004
Sinh viên th ực hiện
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
Nguy ễn Duy Nghĩa
CHƯƠNG 1_____________________________________________ 1
MỞ ĐẦU_________________________________________________ 1
1.1 Tổng quan____________________________________________ 1
1.2 Yêu cầu bài toán ______________________________________ 2
1.3 Bố cục luận văn _______________________________________ 2
CHƯƠNG 2_____________________________________________ 4
TỔNG QUAN VỀ VIDEO VÀ CÁC KĨ
THUẬT XỬ LÍ VIDEO CƠ BẢN____________ 4
2.1 Khái niệm về video ______________________________________ 5
2.2 Khái niệm về video tuần tự ____________________________ 5
2.2.1 Tín hiệu video tuần tự _________________________________ 5
2.2.2 Các chuẩn video tương tự ______________________________ 8
2.2.3 Các thiết bị video tương tự _____________________________ 8
2.3 Khái niệm về video số _________________________________ 9
2.3.1 Tín hiệu Video số _____________________________________ 9
2.3.2 Các chuẩn video số ____________________________________ 9
2.3.3 Nhược điểm của video số ______________________________11
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
2.3.4 Ưu điểm của video số _________________________________11
2.3.5 Các phương pháp xử lý trên video số ____________________12
2.3.5.1 Phát hiện chuyển động ______________________________12
2.3.5.2 Ước lượng chuyển động _____________________________19
CHƯƠNG 3____________________________________________25
THEO VẾT VÀ PHÂN LOẠI ĐỐI TƯỢNG 25
3.1 Bài toán theo vết và phân loại đối tượng_______________26
3.2 Mô hình xử lí bài toán________________________________27
3.3 Tiền xử lí ____________________________________________28
3.4 Phát hiện chuyển động _______________________________28
3.5 Theo vết đối tượng ___________________________________37
3.5.1 Dự đoán vị trí của đối tượng trong tương lai ______________38
3.5.2 So khớp đối tượng____________________________________38
3.5.3 Theo vết đối tượng ___________________________________41
3.5.4 Cập nhật đối tượng___________________________________45
3.6 Phân loại đối tượng __________________________________45
CHƯƠNG 4____________________________________________48
CÀI ĐẶT CHƯƠNG TRÌNH ____________________48
4.1 Môi trường cài đặt ___________________________________49
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
4.2 Cấu trúc chương trình _______________________________49
4.2.1 Cấu trúc dữ liệu _____________________________________49
4.2.2 Cấu trúc chương trình ________________________________51
CHƯƠNG 5____________________________________________52
KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN_______52
5.1 Kết quả đạt được ____________________________________53
5.1.1 Dữ liệu thử nghiệm ___________________________________53
5.1.2 Kết quả đạt được ____________________________________53
5.2 Hướng phát triển ____________________________________54
TÀI LIỆU THAM KHẢO _________________________55
PHỤ LỤC 1____________________________________________56
MỘT VÀI HÌNH ẢNH VỀ KẾT QUẢ ĐẠT
ĐƯỢC ___________________________________________________56
1. Một vài mặt nạ chuyển động____________________________56
2. Kết quả theo vết đối tượng _____________________________63
3. Kết quả theo vết đối tượng là người _____________________66
PHỤ LỤC 2____________________________________________69
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
VÀI NÉT VỀ THƯ VIỆN INTEL OPENCV 69
1. OpenCV là gì? _________________________________________69
2. Các chức năng của thư viện OpenCV ___________________69
2.1 Các kiểu dữ liệu cơ bản _______________________________69
2.2 Các hàm xử lí trong OpenCV __________________________71
2.2.1 Các hàm xử lí các kiểu dữ liệu cơ bản_____________________71
2.2.2 Các hàm về xử lí ảnh__________________________________72
2.2.3 Các hàm về phân tích vận động và theo vết đối tượng_________73
2.2.4 Các hàm về nhận dạng đối tượng_________________________73
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
2.2.5 Các hàm về giao diện và thu nhận video___________________73
CHƯƠNG 1
MỞ ĐẦU
1.1 Tổng quan
Hiện nay phần lớn lượng thông tin con người thu vào là dưới dạng hình
ảnh. Thông tin dưới dạng hình ảnh là thông tin trực quan nên con người dễ dàng
tiếp nhận nó. Với sự ra đời của nhiều máy móc kỹ thuật hiện đại như là máy ảnh
số, máy quay số, các máy thu hình, máy vi tính ... thì lượng thông tin con người
thu được ngày càng nhiều. Con người không chỉ muốn tiếp thu thông tin một
cách thụ động mà phải biết xử lí nó, làm cho nó hữu ích hơn. Do đó con người
đã tiến hành nghiên cứu các phương pháp xử lí trên thông tin trực quan này để
chúng ta có thể tiếp nhận tối đa lượng thông tin trực quan này. Việc xử lý ảnh số
đã ra đời vào những năm 1960 với nhiều hướng khác nhau như là nén ảnh, nhận
dạng ..., trong khi đó việc xử lý video chỉ xuất hiện vào các thập kỷ gần đây cùng
với sự ra đời của nhiều trang thiết bị kỹ thuật mới và hiện đại. Ngày nay trên thế
giới việc nghiên cứu về ảnh số và video số đã phát triển rộng rải. Các trường đại
học đều có một ngành riêng để nghiên cứu vấn đề này gọi là ngành thị giác máy
tính( computer vision ). Tuy vậy vấn đề này vẫn còn mới ở Việt Nam vì thiếu
các thiết bị hỗ trợ và tài liệu, và đây là một hướng phát triển mở nhiều hứa hẹn
và cũng nhiều thách thức. Hiện nay ở Việt Nam các hệ thống giám sát ở Việt
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
1
Nam chưa phát triển lắm và chủ yếu vẫn dựa vào con người. Tuy nhiên trong vài
năm nữa khi kinh tế và khoa học kỹ thuật phát triển thì các hệ thống giám sát này
cũng sẽ phát triển theo. Việc nghiên cứu về xử lí video số ở trong khoa được tiến
hành cách đây một năm với các đề tài về giám sát giao thông và theo vết đối
tượng bằng lưới... Với mong muốn tham gia vào hướng nghiên cứu còn mới này
và giúp các hệ thống giám sát đạt hiệu quả cao hơn và giảm được chi phí con
người chúng tôi thực hiện đề tài “nghiên cứu các kĩ thuật xử lí trên video số
ứng dụng vào theo vết và phân loại đối tượng” .
1.2 Yêu c ầu bài toán
Bài toán “theo vết và phân loại đối tượng” được chia thành hai phần. Ở
đây chúng tôi tập trung vào nghiên cứu phần một đó là phần theo vết đối tượng.
Về theo vết đối tượng ta cần phải thực hiện các phần sau:
• Rút trích đối tượng chuyển động. Trong phần này ta phải tách các
đối tượng chuyển động ra khỏi khung cảnh.
• Theo vết đối tượng. Với từng đối tượng ta phải lưu lại được quỹ đạo
của chúng khi chúng vào vùng quan sát của ta
Về phân loại đối tượng, chúng ta phải phân biệt được các loại đối tượng
trong khung cảnh quan sát của chúng ta. Ở đây là phân loại đối tượng là người đi
bộ và các đối tượng khác như là xe...
1.3 Bố cục luận văn
Dựa vào các yêu cầu trên chúng tôi chia luận văn thành 5 chương
Chương 1: Mở đầu
Chương 2: Tổng quan về video và các kĩ thuật xử lí video số: nhằm giúp
chúng ta hiểu rõ hơn về video số và các kĩ thuật cơ bản nhất trong xử lí video số.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
2
Ch ương 3: Ứng dụng vào bài toán theo vết và phân loại đối tượng:
trong phần này ta sẽ áp dụng các kĩ kiến thức đã nghiên cứu được vào giải một
bài toán trong xử lí video dó là theo vết đối tượng.
Chương 4: Cài đặt thử nghiệm
Ch ương 5: Các kết quả đạt được và hướng phát triển: chương này trình
bày các kết quả đạt được trong việc giải quyết bài toán trên và hướng phát triển
trong tương lai.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
3
CHƯƠNG 2
TỔNG QUAN VỀ VIDEO VÀ CÁC KĨ
THUẬT XỬ LÍ VIDEO CƠ BẢN
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
4
2.1 Khái niệm về video
Video hay còn gọi là chuỗi ảnh( image sequence ) tượng trưng cho
thông tin hình ảnh. Đó là một chuỗi các hình ảnh truyền liên tục theo thời
gian
S = f(x,y,t)
trong đó :
˛ x,y R: là tọa độ của điểm ảnh (thông tin về không
gian)
˛ t R: thông tin về thời gian
Dựa trên công thức trên ta thấy ảnh tĩnh là một trường hợp đặc biệt của
Video. Khi đó nó là một chuỗi các ảnh không thay đổi theo thời gian.
" f(x,y,t1) = f(x,y,t2); i,j ˛ R, " x,y ˛ R
Video thường được thu, lưu trữ, và chuyển đổi ở dạng tuần tự (analog)
nên chúng ta sẽ bắt đầu từ video tuần tự.
2.2 Khái niệm về video tuần tự
2.2.1 Tín hi ệu video tuần tự
Tín hiệu video tuần tự được xem như là tín hiệu điện 1 chiều theo thời
gian f(t) và được lấy mẫu theo chiều dọc.
Việc lấy mẫu theo chu kỳ này được gọi là quét( scanning ). Các
phương pháp quét thường được sử dụng nhất là quét liên tục (progressive
scanning) và quét xen kẽ (interlace scanning)
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
5
Quét liên tục(progressive scanning)
thế cho đến D rồi quay trở lại D
H1: Quét liên tục. Các dòng quét bắt đầu từ A đến B, tiếp tục đến C và cứ
o Mỗi ảnh hay còn được gọi là frame là dữ liệu được lấy mẫu
theo thời gian.
o Mỗi ảnh này được quét liên tục từng dòng ngang và từ trên
xuống dưới với tốc độ là D t giây.
o Phương pháp quét này thường được dùng trong công nghiệp
máy tính với tốc độ D t = 1/72 giây.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
6
Quét xen kẽ
H2: Quét xen kẻ. Dòng quét bắt đầu từ A đến B, chuyển qua C và tiếp tục cho đến khi tới D sẽ trở về E và tiếp tục quét đến F
Vì mắt người phát hiện ra hình ảnh chớp khi tần số quét dưới
50Hz nên tần số quét của máy bao giờ cũng phải lớn hơn 50Hz. Tuy nhiên
khi áp dụng trong các nghành công nghiệp khác như là nghành truyền thông
thì gặp khó khăn về vấn đề băng thông do kích thước quá lớn. Từ đó xuất
hiện phương pháp quét xen kẽ. Phương pháp này chia dòng quét thành dòng chẳn và dòng lẻ ( gọi là field ) và quét các dòng chẳn trong khoảng D t rồi
chuyển qua quét các dòng lẻ. Vì thế tần số quét sẽ giảm đi một nữa.
Một vài thông số quan trọng của tín hiệu video là :
o Độ phân giải theo chiều dọc ( vertical resolution ): thông số
này có liên quan đến số dòng quét trên 1 frame.
o Tỉ lệ co ( aspect ratio ): tỉ lệ giữa chiều rộng và chiều cao của
frame.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
7
2.2.2 Các chu ẩn video tương tự
• Component Analog Video: chuẩn video này sử dụng các thành phần
màu RGB hoặc là YCrCb( YIQ hoặc là YUV )
• Composite Video:
o NTSC ( National Television Standards Committee ): xuất
hiện vào năm 1952, hiện tại được sử dụng ở Bắc Mỹ và Nhật.
Có 262.5 dòng trên 1 field hay là 525 dòng trên 1 frame, 60
field trên 1 giây và có tỉ lệ co là 4:3
o PAL ( Phase Alternating Line ) và SECAM ( SEquential
Color And Memory ): được phát triển vào những năm 1960
và ngày nay thường được sử dụng ở Châu Âu. Ở Việt Nam
cũng dùng chuẩn này. Các thông số kỹ thuật: 625 line trên 1
frame, 50 field trên 1 giây.
2.2.3 Các thi ết bị video tương tự
Các thiết bị video tương tự có thể được chia làm 3 loại. Loại dành cho
truyền thông. Loại có chất lượng chuyên nghiệp. Loại dành cho người tiêu
dùng.
Video được quay bởi máy quay thông thường và được lưu trong băng
hoặc được quay bởi các máy quay dùng trong phim trường và tạo thành
phim ( 24 frame/giây ).
Hầu hết tín hiệu video tương tự được lưu dựa trên kỹ thuật từ ngoại trừ
đĩa laser là dùng kỹ thuật quang.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
8
2.3 Khái niệm về video số
2.3.1 Tín hi ệu Video số
Tín hiệu video số được lưu trữ dưới dạng số. Do đó chúng được lấy
mẫu và lượng tử hóa. Tín hiệu video số là một thông tin 3 chiều gồm 2 chiều
không gian và 1 chiều thời gian hay còn được gọi là chuỗi ảnh số với mỗi ảnh
chiều thời gian
chiều dọc
chiều ngang
H3: chu
ỗi ảnh
số là một ảnh được lấy mẫu và lượng tử hóa.
2.3.2 Các chu ẩn video số
Việc trao đổi giữa các ứng dụng và các sản phẩm video số đã đưa ra
các chuẩn video số. Các chuẩn này bao gồm :
• Chuẩn nén: dùng để trao đổi thông tin trong dạng nén của
video
• Chuẩn các độ phân giải hiển thị: được dùng trong công
nghiệp máy tính.
• Chuẩn studio số: được dùng trong ngành công nghiệp ti vi • Chuẩn về giao tiếp mạng được dùng trong công nghiệp
truyền thông
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
9
H4: các chuẩn về studio số
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
10
H5: Các chuẩn về ảnh và video số nén
2.3.3 Nh ược điểm của video số
Nhược điểm của video số đó là nó đòi hỏi khối lượng lưu trữ lớn và băng
thông rộng để truyền tải. Chúng ta hãy thử làm một phép tính. Với tín hiệu TV
chất lượng tốt ta cần 1440 điểm ảnh trên một dòng, 1050 dòng cho một frame độ
sáng, 720 điểm trên một dòng và 525 dòng trên một frame sắc màu. Bởi vì mỗi
giây có 30 frame và 8 bit/ pixel nên kết quả cuối cùng là xấp xĩ 545 Mps. Đây là
một yêu cấu quá lớn. Do đó hiện nay người ta đang nghiên cứu các phương pháp
nén video để giảm kích thước khi truyền tải.
2.3.4 Ưu điểm của video số
Tuy có nhược điểm về yêu cầu bộ nhớ lớn nhưng video số lại có nhiều ưu
điểm quan trọng. Video tuần tự cung cấp cho chúng ta một số rất giới hạn các
hoạt động tương tác như là : chọn kênh, chỉnh tới lui hay là quay chậm trên băng
video. Ngoài ra để hiển thị tín hiệu theo chuẩn này ví dụ NTSC trên một hệ máy
dùng chuẩn khác ví dụ PAL ta cần có một bộ chuyển đổi tín hiệu đắt tiền. Với tín
hiệu số ta không cần phải chuyển đổi các tín hiệu này. Ngoài ra ta còn có thể
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
11
chỉnh sửa, tạo các hiệu ứng đẹp trên tín hiệu video số. Video số không chỉ có vai
trò giải trí mà nó còn cung cấp cho chúng ta nhiều thông tin quan trọng trong
nhiều lĩnh vực như là các ảnh giám sát quân sự, điều khiển giao thông, và rút
trích thông tin từ các dữ liệu ảnh và video.
2.3.5 Các phương pháp xử lý trên video số
Video số có nhiều thông tin trực quan hơn là ảnh số. Lý do chính là do
video số có chứa thông tin về chuyển động trong khi ảnh số chỉ là ảnh chụp một
cảnh tĩnh. Các chuỗi ảnh động luôn hàm chứa các thông tin về chuyển động, các
chuyển động này là một tín hiệu nhạy cảm đối với thị giác con người. Con người
có thể dễ dàng nhận biết được các đối tượng ngay khi chúng chuyển động thậm
chí chúng rất khó thấy khi đứng yên. Vì thế các phương pháp xử lí video số cũng
khác so với các phương pháp xử lí ảnh số. Vận động là thông tin quan trọng
trong xử lí video số bởi vì vận động mang rất nhiều thông tin về mối quan hệ
không gian và thời gian giữa các đối tượng trong ảnh. Các phương pháp cơ bản
trong xử lí video số là phát hiện chuyển động và ước lượng chuyển động. Phát
hiện chuyển động thường được áp dụng trong các hệ quan sát( phát hiện đối
tượng di chuyển hoặc là đứng yên ), còn ước lượng chuyển động thường được áp
dụng trong nén video số. Ngoài ra còn có các phương pháp xử lí khác được áp
dùng vào mức tiền xử lí như là lọc nhiễu... các phương pháp này áp dụng trên
từng frame giống như trong xử lí ảnh số.
2.3.5.1 Phát hi ện chuyển động
a. S ơ nét về chuyển động
Chuyển động theo các khái niệm trong vật lý là sự thay đổi vị trí
giữa vật này và vật kia. Tức là khi xét tới sự chuyển động thì ta phải xét là nó
chuyển động so với cái gì. Khi xét tới chuyển động ta thường đặt nó vào một hệ
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
12
quy chiếu quán tính. Một vật có thề đứng yên trên hệ quy chiếu này nhưng lại
chuyển động khi xét nó với hệ quy chiếu khác. Ví dụ khi ta đứng yên thì có thể
coi là ta đứng yên so với hệ quy chiếu gắn với trái đất, nhưng khi đưa vào hệ
quy chiếu gắn với mặt trời thì ta lại chuyển động. Điều này có ý nghĩa rất quan
trọng khi ứng dụng vào camera động. Chuyển động trong thực tế là chuyển
động 3D nhưng khi con người tiếp nhận thì nó trở thành chuyển động 2D. Nói
chung hình ảnh mà mắt người nhận được đều là 2D hết. Và phép toán chuyển đổi
z
P1
P2
O
Tâm chiếu
y
mặt phẳng chiếu
x
H6 Phép chiếu phối cảnh của một đoạn thẳng
ảnh 3D thành ảnh 2D mà mắt con người cảm nhận được là phép chiểu phối cảnh.
Chuy ển động trong thế giới thực 3D qua phép chiếu phối cảnh sẽ
biến thành chuyển động trong mặt phẳng 2D. Tuy nhiên con người nhận biết
chuyển động qua sự thay đổi độ sáng của điểm ảnh. Do đó có những chuyển
động mà con người không có cảm nhận được như là chuyển động của quả cầu
đồng màu. Từ đó ta có phương pháp phát hiện chuyển động đầu tiên đó là so
sánh sự khác biệt theo thời gian.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
13
b. Phương pháp so sánh sự khác biệt
Chúng ta xác định độ sai khác Dk,k-1 giữa frame thứ k và thứ k-1 như
sau :
D k,,k-1 = Fk – Fk-1
trong đó: Fk là frame tại thời điểm k
N ếu camera tĩnh, sự thay đổi ánh sáng rất nhỏ và nhiễu không đáng
kể thì một điểm được coi là chuyển động nếu độ khác biệt của nó lớn hơn 0 và
ngược lại sẽ đứng yên.
Tuy nhiên trong th ực tế các điều kiện trên khó có thể xảy ra. Do đó
để loại bỏ các điểm mà chúng ta phát hiện sai do nhiễu gây ra, ta có thể dùng
>
một ngưỡng T thích hợp.
1
neu
|
1(-k,Dk,
x,
| )y
T
0
Nguoc
lai
(cid:236) (cid:237) M k,k-1( x, y ) = (cid:238)
V ới Mk,k+1 được gọi là mặt nạ chuyển động ở thời điểm k, nếu bằng
1 thì điểm đó được coi là chuyển động và bằng 0 thì điểm đó là đứng yên. T
là ngưỡng thích hợp có thể là một giá trị cụ thể được xác định trong quá trình
thực nghiệm hoặc dựa trên các thuật toán. Độc giả có thể tham khảo một
frame thứ k
frame thứ k-1
mặt nạ chuyển động
thuật toán xác định ngưỡng ở phụ lục B của [1].
H7: Kết quả của phương pháp so sánh sự khác biệt
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
14
Ưu điểm của phương pháp này là đơn giản và dễ cài đặt do đó tốc
độ sẽ nhanh. Tuy nhiên nhược điểm của nó là những vùng thật sự chuyển động
nhưng do đồng màu nên sẽ được hiểu là đứng yên và nhưng vùng thật sự đứng
yên thì lại cho là chuyển động.
Để khắc phục nhược điểm trên ta có một thuật toán so sánh khác
biệt cải tiến:
Bước 1: Tạo một cấu trúc Pyramid Gaussian trong đó mổi frame
được đặc trưng bởi nhiều độ phân giải khác nhau. Bắt đầu xử lí ở mức phân giải
thấp nhất.
Bước 2: Với mỗi điểm ở mức phân giải hiện tại, tính toán độ khác
biệt chuẩn hóa:
kyxf ,( ),
ryxf ,( ),
ryxf ,(
,
yx ,
k,r( x, y ) =
2
+
c
ryxf ,(
,
yx ,
(cid:209) - (cid:229) N ˛ FDN (cid:209) (cid:229) N ˛
trong đó:
N: là các điểm trong lân cận của x
ryxf ), ,(
kyxf ,( ),
(cid:209) : là gradient của mật độ ảnh tại điểm (x, y)
: là frame ở thời điểm k
c: là h ằng số
Nếu độ khác biệt chuẩn hóa này cao hơn độ khác biệt ở độ phân giải
trước thì thay thế độ khác biệt trước đó bằng độ khác biệt ở mức hiện tại. Nếu
không thì vẫn giữ nguyên giá trị trước đó.
Bước 3 : Lặp lại bước 2 cho tất cả độ phân giải
Bước 4 : Lấy ngưỡng với sự khác biệt chuẩn hóa ở mức phân giải
cao nhất.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
15
c. Phương pháp trừ nền
Phương pháp trên cũng dựa trên sự so sánh giữa 2 ảnh, nhưng
không phải là 2 ảnh liên tiếp trong chuỗi ảnh mà là giữa các ảnh trong chuỗi ảnh
với một ảnh tham chiếu gọi là ảnh nền. Ảnh nền là cảnh thu được khi không có
đối tượng chuyển động nào hết. Gọi B là ảnh nền thu được, ta có độ khác biệt
giữa ảnh nền và ảnh thứ k trong chuỗi ảnh
Dk= Fk – B
N ếu nhiễu ít và không có sự thay đổi của ánh sáng thì điểm có tọa
độ ( x, y ) được xem là tĩnh nếu Dk( x, y ) = 0 và ngược lại. Tuy nhiên trong thực
tế luôn có nhiễu vì vậy ta phải dùng ngưỡng để hạn chế nhiễu
1 N ếu Dk( x, y ) > T
M k( x, y ) =
0 ng ược lại
Với Mk là mặt nạ chuyển động, điểm ( x, y ) được xem là chuyển
động khi Mk( x, y ) = 1 và đứng yên khi Mk( x, y ) = 0.
Trong th ực tế ảnh nền luôn luôn biến đổi do sự thay đổi độ sáng do
gió, các đám mây bay qua vì thế ta phải luôn cập nhập nền lại. Gọi Bk là nền ở
thời điểm k. Ta có nền ở thời điểm k + 1 được cập nhật như sau:
a *Bk( x, y ) + ( 1 - a ) Fk( x, y ) nếu Mk( x, y ) = 0
Bk+1( x, y ) =
Bk( x, y ) nếu Mk( x, y ) = 1
là một hằng số được gọi là tỉ lệ học phản ánh mức độ cập nhật nền Với a
nhanh hay chậm.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
16
bóng ma
ảnh nền ảnh thứ k
H8 : bóng ma trong phương pháp trừ nền
mặt nạ chuyển động
Phương pháp trừ nền cho kết quả tốt hơn phương pháp so sánh sự
khác biệt khi xử lí các đối tượng đồng màu, tuy nhiên nó có một nhược điểm khi
ảnh nền chứa một đối tượng đứng yên, sau đó đối tượng này chuyển động thì
phương pháp trên sẽ phát hiện ra 2 đối tượng chuyển động chứ không phải là 1.
Đối tượng bị phát hiện sai này được gọi là bóng ma. Để giải quyết vấn đề trên
người ta phải sử dụng ảnh nền không có đối tượng chuyển động nào trong đó hết
hoặc có thể dựa vào các thuật toán tạo ảnh nền.
Ngoài ra còn một hướng tiếp cận mới trong phương pháp trừ nền đó
là dựa trên mô hình xác suất thống kê. Ý tưởng chính ở đây là đưa ra một mô
hình thống kê cho nền. Thường có hai mô hình thống kê chính đó là đơn phương
thức ( unimodal ) và đa phương thức ( multimodal ). Trong mô hình đơn phương
thức mỗi điểm được mô hình với phân phối xác suất đơn thường là phân phối Gaussian h ( x, y, m k, S k ), trong đó m k là giá trị trung bình và S k là ma trận hiệp
phương sai của phân phối ở frame t. Những điểm mà màu quan sát được đủ gần
( hay còn gọi là khớp ) với phân phối nền thì được phân thành điểm nền hay là
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
17
điểm đứng yên và ngược lại là điểm chuyển động. Vì nền luôn luôn thay đổi nên
ta phải cập nhập lại mô hình nền như sau:
m )*m
T
t+1 = ( 1 - a t+1 = ( 1 - a
t + a *dt t + a *dt*dt
S )*S
Với a là hằng số chỉ mức độ điều chỉnh mô hình nền nhanh hay
chậm.
Đối với mô hình nền đa phương thức ( multimodal ), chúng ta cần
đến nhiều phân phối xác suất độc lập với nhau để mô hình mỗi điểm ảnh. Mỗi
phân phối được gán với một trọng số đặc trưng cho mức độ ưu tiên của chúng.
Chỉ một vài phân phối đầu tiên với trọng số lớn mới được dùng để mô hình cho
nền. Một phân phối mới của sự quan sát sẽ được cập nhập vào mô hình nền nếu
như nó không khớp bất cứ phân phối nào đặc trưng cho mô hình nền, ngược lại
nó trọng số của các phân phối sẽ được cập nhập lại như sau:
b ( 1 - i = m ) wt+1,i + b
t+1,i =
w
„ b m ( 1 - i )wt+1,i
Với m là chỉ số của phân phối khớp với phân phối mới của sự quan sát, b
được gọi là tỉ lệ học trọng số
d. Phương pháp dựa trên Optical Flow
Đây là một phương pháp phức tạp và đòi hỏi các phần cứng đắt tiền
để chạy real-time nên chúng ta chỉ nói khái quát về nó.
Các chuy ển động của đối tượng trong 3D được gây ra chuyển động
2D trong mặt phẳng ảnh được gọi là Optical Flow. Optical Flow tương ứng với
sự cảm nhận chuyển động của mắt người.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
18
H9: Hình ảnh các xe và Optical Flow của chúng
Optical Flow được ứng dụng nhiều trong nhận dạng hoạt động. Khi đó mỗi
vận động được mô hình hóa bằng mô hình chuyển động là tổ hợp tuyến tính của
các vận động cơ bản. Các vận động cơ bản này là các Optical Flow được học
trong quá trình huấn luyện.
2.3.5.2 Ước lượng chuyển động
Nh ư đã nói, thông tin về chuyển động rất quan trọng trong xử lí và
nén video. Nén ảnh là các phương pháp nhằm làm giảm số bit cần thiết để đặc
trưng video. Trong khi đó các kỹ thuật xử lí video là các phương pháp biến đổi
trên chuỗi ảnh như là nâng cao chất lượng chuỗi ảnh. Việc phân lớp như trên có
ý quan trọng trong việc đưa ra đích của việc ước lượng chuyển động tức là liên
quan đến việc chọn mô hình xử lí sao cho phù hợp. Ví dụ như trong nén video
thì các tham số chuyển động được ước lượng đều dẫn đến một việc là đạt được
tỉ lệ nén cao nhất. Do đó các chuyển động được tính toán không cần phải giống
với các chuyển động thật của điểm ảnh miễn là ta đạt được một tỉ lệ bit tối thiểu.
Tuy nhiên, trong xử lí video thì các chuyển động thật của các điểm ảnh lại là
điều ta quan tâm. Để phát triển một thuật toán ước lượng chuyển động thì theo
Janusz Konrad ta cần có 3 yếu tố sau: Mô hình, tiêu chuẩn và chiến thuật tìm
kiếm.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
19
a. Các mô hình chuy ển động
Có 2 mô hình cần thiết trong ước lượng chuyển động: mô
hình chuyển động ( là cách để đặc trưng vận động trong một chuỗi ảnh ) và mô
hình quan sát ( là mô hình mà có sự liên quan của các tham số chuyển động với
mật độ ảnh ). Trong mô hình chuyển động ta lại có mô hình chuyển động theo
không gian và theo thời gian.
• Mô hình chuyển động theo không gian
Hầu hết các chuyển động đểu là sự kết hợp của phép chiếu
các chuyển động của đối tượng trong cảnh 3D và chuyển động của camera.
Trong khi chuyển động của camera ảnh hưởng đến chuyển động của toàn bộ hay
hầu hết các điểm ảnh thì chuyển động của đối tượng chỉ ảnh hưởng tới các điểm
tương ứng với hình chiếu của đối tượng. Trong luận văn này chúng tôi nghiên
cứu trên camera tĩnh vì thế chúng tôi sẽ không nghiên cứu chuyển động của
camera. Nói chung chuyển động phụ thuộc rất nhiều yếu tố như là các phép
chiếu, mô hình của đối tượng 3D... Ta xét trường hợp đơng giản nhất là chuyển
động tịnh tiến của đối tượng 3D. Khi đó vector vận tốc tức thời của điểm x trong
mặt phẳng ảnh sẽ là
b 1
b
2
(cid:246) (cid:230) (cid:247) (cid:231) v(x) = (cid:247) (cid:231) ł Ł
Trong đó các tham số b = (b1, b2)T = (v1,v2)T phụ thuộc vào
góc quay của camera và các tham số trong chuyển động tịnh tiến 3D. Mô hình
tịnh tiến 2D này ứng dụng rất nhiều trong thực tế đặc biệt là trong nén video vì
nó đưa ra một xấp xỉ gần đúng với hầu hết ảnh trong tự nhiên. Khi chuyển động
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
20
của vật thể 3D có thêm các chuyển động affine thì ta có mô hình chuyển động
affine với 6 tham số
b 1
b
b
3
4
x
b
2
b
b
5
6
(cid:246) (cid:230) (cid:246) (cid:230) (cid:247) (cid:231) (cid:247) (cid:231) v(x) = + (cid:247) (cid:231) (cid:247) (cid:231) ł Ł ł Ł
Rõ ràng mô hình chuyển động tịnh tiến là trường hợp đặc biệt
của mô hình chuyển động affine. Hầu hết các mô hình chuyển động phức tạp đều
đưa ra rất tốt nhưng tùy vào từng ứng dụng. Không phải lúc nào chúng cũng cải
thiện được sự chính xác trong ước lượng chuyển động. Nói chung, số tham số
càng nhiều thì việc mô tả chuyển động càng chính xác hơn. • Mô hình chuyển động theo thời gian
Quỹ đạo của một điểm ảnh riêng biệt được vẽ trong không
gian (x, y, t) của một chuỗi ảnh có thể được xem như là tùy ý bởi vì chúng phụ
thuộc vào vận động của đối tượng. Trong trường hợp đơn giản nhất, quỹ đạo
của chúng là tuyến tính. Giả sử chúng ta có vận tốc vt(x) giữa thời gian t = tk-1 và thời gian t (t > t ) là một hằng số, một quỹ đạo tuyến tính có thể được trình bày
như sau:
x(t ) = x(t) + vt(x)( t - t ) = x(t) + dt,t (x) Trong đó dt,t (x) = vt(x)( t - t ) là một vector dịch chuyển được
đo theo hướng thời gian. Cho nên đối với chuyển động tuyến tính, nhiệm vụ của
chúng ta là tìm 2 thành phần của vector vận tốc v hay vector dịch chuyển d của
mỗi điểm x.
Một sự mở rộng trong tự nhiên của mô hình quỹ đạo tuyến
tính là mô hình đường cong bậc 2. Khi đó ta có thêm một đại lượng mới là gia
tốc của một điểm.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
21
1 at(x)( t - t )2 2
x(t ) = x(t) + vt(x)( t - t ) +
Trong đó gia tốc at là đạo hàm của vận tốc vt. Các mô hình
trên đòi hỏi 2 ( đối với tuyến tính ) hoặc 4 ( đối với bậc 2 ) tại mỗi điểm x. Để
giảm gánh nặng tính toán, mô hình tham số theo không gian có thể kết hợp với
các mô hình trên.
• Vùng hỗ trợ
Tập điểm x mà trong đó các mô hình không gian và thời gian
áp dụng được gọi là vùng hỗ trợ. Sự lựa chọn của một mô hình và vùng hỗ trợ là
một trong các yếu tố quyết định đến tính chính xác của ước lượng các tham số
chuyển động. Thông thường khi cho một mô hình chuyển động, vùng hỗ trợ
càng nhỏ thì việc xấp xỉ càng tốt hơn, bởi vì với vùng hỗ trợ lớn thì chuyển động
có thể phức tạp và do đó ta phải có mô hình chuyển động phức tạp hơn. Thông thường vùng hỗ trợ (´ ) có thể thuộc 1 trong 4 loại sau:
1. ´ là toàn bộ ảnh: Một mô hình chuyển động
được áp dụng cho toàn bộ ảnh. Mô hình này
thích hợp cho việc ước lượng chuyển động
của camera.
2. ´ là một điểm ảnh: Mô hình này áp dụng cho
một điểm ảnh. Trong trường hợp này ta
thường sử dụng mô hình không gian tịnh tiến
kết hợp với mô hình tuyến tính hoặc bậc 2.
3. ´ là một khối điểm hình chữ nhật: Các mô
hình vận động sẽ được áp dụng trên một khối
điểm ảnh hình chữ nhật. Trong trường hợp
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
22
đơn giản nhất, các khối này không phủ lên
nhau và hợp của chúng sẽ bao phủ toàn bộ
ảnh. Trong trường hợp này mô hình chuyển
động không gian tịnh tiến kết hợp với mô
hình chuyển động thời gian tuyến tính được
xem là mô hình hiệu quả nhất và đã được áp
dụng trong các chuẩn nén video như là
MPEG-1, MPEG-2...
4. ´ là một vùng bất kì: Các mô hình vận động
sẽ áp dụng trên các điểm thuộc vào ´ . Ở đây
vùng ´ sẽ tương ứng với các đối tượng. Kĩ
thuật này đã được áp dụng trong chuẩn nén
MPEG-4.
• Mô hình quan sát
Khi chuyển động được ước lượng ( và được quan sát bằng
mắt người ) dựa trên sự thay đổi của cường độ sáng, màu hoặc cả hai, các mối
quan hệ giả định giữa các tham số chuyển động và mật độ ảnh đòng một vai trò
rất quan trọng. Giả thuyết hợp lý và thường thấy là cường độ sáng vẫn không
đổi theo quỹ đạo chuyển động (đối tượng không thay đổi độ sáng khi di chuyển).
Đối với các ảnh được lấy mẫu theo thời gian điều này có nghĩa là
Ik(x(tk)) = Ik-1(x(tk-1))
Sử dụng công thức trong mô hình chuyển động theo thời gian với t = tk-1, t = tk
và giả thuyết rằng chúng ta lấy mẫu ảnh theo không gian, ta có:
k(n) = Ik-1(n-d).
I
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
23
Tuy nhiên chúng ta không thể sử dụng công thức trên để tìm d trong thực tế vì
nhiễu q. Công thức trên được viết lại như sau:
k(n) = Ik-1(n-d) + q(n)
I
Do đó d được tính bằng cách tối thiểu hàm lỗi giữa Ik(n) và Ik-1(n-d).
b. Tiêu chu ẩn ước lượng
Có rất nhiều tiêu chuẩn ước lượng tùy thuộc vào yêu cầu của bài
toán. Trong nén ảnh thì lỗi dự đoán của bộ ước lượng là rất quan trọng. Còn
trong phép nội suy bù đắp chuyển động thì lỗi nội suy cực đại lại là mối quan
tâm. Ngoài ra tùy thuộc vào khả năng xử lí mà việc ước lượng chuyển động thực
hiện trên đó. Nói chung các tiêu chuẩn ước lượng đều có mục đích chung là cực
tiểu hóa hàm lỗi:
" n˛ L e k(n) = Ik(n) – Ĩk(n)
Trong đó Ĩk(n) = Ik-1(n – d(n) ) được gọi là ước lượng bù đắp chuyển động của
Ik(n).
c. Chi ến thuật tìm kiếm
Một khi mô hình chuyển động đã được xác định và kết hợp với
một tiêu chuẩn ước lượng, bước cuối cùng là phát triển một chiến lược hiệu quả
cả về tính phức tạp và chất lượng lời giải để ước lượng các tham số chuyển động.
Đối với một số ít các tham số vận động yêu cầu không gian trạng thái nhỏ thì
chiến lược thường dùng nhất khi tối thiểu hàm lỗi là so khớp. Trong hướng này,
các ước lượng bù đắp chuyển động Ik-1( n – d(n) ) cho các ứng viên chuyển động
d được so sánh với ảnh gốc Ik(n) trong vùng hổ trợ của mô hình vận động. Ứng
viên nào khớp nhất đối với tiêu chuẩn đã đưa sẽ được chọn để ước lượng. Ngoài
ra ta còn có nhiều phương pháp ước lượng nữa mà chúng ta sẽ không nói tới: kỹ
thuật dựa trên gradient, thuật toán độ tin cậy cao nhất được chọn đầu tiên...
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
24
CHƯƠNG 3
Trong chương này chúng ta sẽ áp dụng các thuật toán xử lí video
đã được nghiên cứu ở phần trên vào bài toán theo vết và phân loại
đối tượng.
THEO VẾT VÀ PHÂN LOẠI ĐỐI TƯỢNG
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
25
3.1 Bài toán theo v ết và phân loại đối tượng
Việc theo vết và phân loại đối tượng đang được nghiên cứu trong những
năm gần đây. Trong ứng dụng theo vết và phân loại đối tượng chúng ta phải
phân loại được đối tượng và chỉ theo vết đối tượng chúng ta quan tâm. Theo vết
đối tượng là chúng ta lưu lại được đường đi của các đối tượng đang vào vùng
quan sát của camera. Ta có thể ứng dụng vào các hệ quan sát để giảm được chi
phí lưu trữ các dữ liệu thư được từ các camera quan sát. Hình ảnh từ camera
truyền vào máy tính, sau đó máy tính xử lí. Nếu trong đó có các đối tượng mà
chúng ta quan tâm thì máy tính sẽ lưu đoạn phim này lại để sau này chúng ta xử
lí. Như đã đề cập trong chương I, kích thước của dữ liệu video là rất lớn vì thế
việc lưu trữ có chọn lọc này sẽ giảm được chi phí cho việc lưu trữ rất nhiều.
Trong bài toán này chúng tôi sẽ theo vết những đối tượng nào là người. Thông
thường khi theo vết đối tượng người ta thường dùng 4 phương pháp sau:
Phương pháp 1: Theo vết đối tượng dựa theo các đặc điểm riêng của đối
tượng. Phương pháp này cho kết quả khá tốt và có thể áp dụng được đối với
camera động nhưng đòi hỏi chúng ta phải có tri thức về đối tượng cần theo dõi,
tức là chúng ta phải có được các danh sách các đặc điểm riêng của đối tượng.
Phương pháp 2: Phương pháp này sử dụng phân bố màu của đối tượng để
theo vết. Tiêu biểu của phương pháp này là MeanShift và CamShift. Phương
pháp này thường được ứng dụng trong tracking người dựa vào sự phân bố màu
da.
Phương pháp 3: Phương pháp này xem các đối tượng chuyển động như là
các vùng liên thông và theo vết các đối tượng bằng cách so khớp các vùng liên
thông để tìm vùng khớp nhất.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
26
Phương pháp 4: Phương pháp này theo vết đối tượng dựa vào đường biên
của chúng. Phương pháp này tương tự với phương pháp 3 và chúng ta theo vết
bằng cách cập nhập đường biên của đối tượng.
3.2 Mô hình x ử lí bài toán
Trong bài toán trên, d ữ liệu mà chúng tôi xử lí sẽ là đoạn video được quay
từ camera và ghi lại với chuẩn AVI. Mô hình xử lí bài toán có thể được trình bày
như sau:
Dữ liệu thu được từ camera được đặt cố định sẽ được truyền vào máy tính.
Dữ liệu này qua một bộ tiền xữ lí để lọc nhiễu.... Sau đó nó sẽ qua bộ phát hiện
chuyển động. Bộ phát hiện chuyển động sẽ phát hiện điểm nào là điểm tỉnh (
điểm nền ) và điểm nào là chuyển động. Từ đó ta dùng phép phân tích connected
component để rút trích các đối tượng chuyển động và truyền danh sách các đối
tượng rút trích được qua bộ ước lượng chuyển động. Bộ ước lượng chuyển động
sẽ ước lượng chuyển động của các đối tượng có trong danh sách đối tượng và so
khớp với các đối tượng mới . Tùy vào các trường hợp mà ta sẽ cập nhập lại vị trí
của đối tượng, loại bỏ đối tượng ra khỏi danh sách đối tượng hay là thêm một đối
tượng vào danh sách đối tượng. Sau đó các đối tượng này sẽ được chuyển qua bộ
phân loại để chọn lọc các đối tượng là người và theo vết Việc theo vết là lưu lại
vị trí của các đối tượng đang trong vùng quan sát và cuối cùng ta sẽ được quỹ
đạo chuyển động của đối tượng. Trong phần này để biểu diễn việc theo vết đối
tượng chúng tôi sẽ vẽ khung bao quanh đối tượng. Sau đây là sơ đồ tóm tắc quá
trình theo vết và phân loại đối tượng của chúng tôi.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
27
capture
Tiền xử lí
Phát hiện chuyển động
Theo vết đối tượng
Phân loại đối tượng
H10: Sơ đồ xử lí bài toán
3.3 Ti ền xử lí
Dữ liệu từ máy camera lưu vào máy tính dưới dạng file AVI. Trong chuẩn
file này hệ màu mà nó dùng là RGB với phân bố màu là BGR. Sau khi khảo sát
các hệ màu RGB, HSV, YUV chúng tôi chọn thành phần Y của hệ màu YUV.
Do đó các frame ảnh từ file AVI phải được chuyển sang hệ màu YUV và lấy
thành phần Y để xử lí. Sau đó frame ảnh này sẽ qua bộ lọc để lọc nhiễu. Bộ lọc
thường dùng là Median và Gaussian. Với các bộ lọc này chúng ta sẽ giảm bớt
các chuyển động không cần thiết như là các chuyển động của lá cây...
3.4 Phát hi ện chuyển động
Ở bộ phát hiện chuyển động, đầu vào là ảnh đã qua bộ tiền xử lí, và vì thế
chúng ta chỉ sử dụng thành phần Y để xử lí. Đây là bước cơ bản nhưng cũng là
bước quan trọng nhất. Nếu ta xử lí không tôt bước này thì kết quả ở các bước sau
sẽ không cao. Ở trong phần này dữ liệu vào là các frame của đoạn video thu
được từ camera tĩnh đã qua giai đoạn tiền xử lí, và chúng ta sẽ tách các đối tượng
chuyển động. Các đối tượng chuyển động có hình dạng, màu sắc khác nhau
nhưng có cùng chung đặc điểm là chuyển động. Để lợi dụng tính chất trùng lắp
thông tin giữa các frame nên phương pháp chủ yếu trong phần này là trừ ảnh.
Như đã trình bày trong chương I, hai phương pháp được sử dụng chủ yếu trong
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
28
phát hiện chuyển động là so sánh sự khác biệt và trừ nền. Nhược điểm của
phương pháp trừ nền là nhạy cảm với nền và nhược điểm của phương pháp so
sánh sự khác biệt là không phát hiện được chuyển động của phần bên trong các
đối tượng đồng màu. [3] đã đề ra một phương pháp rất hay, đó là kết hợp giữa 2
phương pháp trên. Trong khi phương pháp so sánh sự khác biệt của 3 frame liên
tiếp được thực hiện để xác định các vùng chuyển động hợp lí thì phương pháp
trừ nền được thực hiện tiếp sau đó sẽ lấp đầy các phần còn lại mà phương pháp
so sánh sự khác biệt đã không phát hiện ra. Xem xét chuỗi ảnh được truyền vào
từ camera tĩnh. Gọi In(x) đặt trưng cường độ tại vị trí x và ở thời gian t = n.
Nguyên lý trong so sánh 3 frame khác biệt là : Một điểm được coi là chuyển
động nếu cường độ của nó thay đổi đáng kể giữa frame hiện tại và frame trước
nó , giữa frame hiện tại và frame trước đó nữa. Tức là điểm x là chuyển động
nếu:
n(x) – In-1(x) | > Tn(x) ) và ( | In(x) – In-2(x) | > Tn(x) ).
( | I
Trong đó Tn(x) là ngưỡng mô tả sự thay đổi cường độ đáng kể ở vị trí x. Vấn đề
chính của phương pháp so sánh sự khác biệt là những điểm nằm bên trong đối
tượng đồng màu thì không nằm trong tập các điểm chuyển động. Tuy nhiên, sau
khi phân các điểm chuyển động thành các vùng chuyển động thì các điểm nằm
bên trong có thể được lắp đầy bằng cách áp dụng phương pháp trừ nền lấy ra tất
cả các điểm chuyển động nằm bên trong hộp R bao quang vùng chuyển động.
Gọi Bn(x) đặc trưng cho cường độ nền hiện tại ở điểm x. Vùng bn có thể được
lấp đầy bằng các điểm nằm trong R mà có cường độ khác biệt đáng kể so với
nền.
R } bn = { x: | In(x) – Bn(x) | > Tn(x), x ˛
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
29
Tuy nhiên ph ương pháp này có một nhược điểm là phần kết quả cuối cùng
bao giờ cũng phụ thuộc vào lượng thông tin mà phương pháp trừ nền có được.
Khi áp dụng phương pháp này vào theo vết đối tượng là người sẽ gặp một khó
khăn đó là phương pháp trừ nền sẽ cho ra kết quả không tốt thường là có sự ngăn
cách giữa đầu người và thân người và vì thế sẽ cho ra hai đối tượng chứ không
phải là một đối tượng. Mặc khác khi chúng tôi áp dụng phương pháp trên thì gặp
một lỗi nhỏ mà chúng tôi nghĩ là do bộ thư viện OpenCV gây ra. Khi sử dụng bộ
thư viện OpenCV để captrure đoạn video và lấy từng frame ảnh ra, thì cứ sau 5
frame chúng ta lại có một frame trùng với frame trước. Do đó phương pháp so
sánh 3 frame liên tiếp sẽ cho kết quả sai. Cuối cùng chúng tôi chọn phương
pháp trừ nền. Phương pháp này nhạy cảm với nền và cho kết quả không tốt lắm
vì thế chúng tôi sử dụng các bộ lọc tuyến tính và bộ lọc morphology để khử
nhiễu và lấp đầy khoảng trống giữa đầu người và thân người.
Gọi B(x) là ảnh nền, I(x) là ảnh hiện tại, D(x) là độ khác biệt giữa ảnh nền
và ảnh hiện tại
D(x) = | B(x) – I(x) |
Khi đó ta có mặt nạ chuyển động là
0 n ếu D(x) < T(x)
M(x) =
1 ng ược lại
Trong đó T(x) là ma trận ngưỡng chỉ độ sai khác đáng kể giữa ảnh hiện tại
và ảnh nền. Cả hai ảnh nền Bn và ngưỡng Tn đều là thuộc tính thống kê
của cường độ điểm ảnh được quan sát từ chuỗi ảnh Ik (k < n ). B0(x) là ảnh
đầu tiên trong chuỗi ảnh, B0(x) = I0(x) và T0(x) được cho một giá trị mặt
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
30
định khác không. B(x) và T(x) được cập nhập theo thời gian theo công
thức sau.
a n ếu x đứng yên Bn(x) + ( 1 - a )In(x)
Bn+1(x) =
B nếu x động
n(x) Tn(x) + ( 1 - a
a )(5*|In(x) – Bn(x)|) nếu x đứng yên
Tn+1(x) =
n(x)
nếu x động
T Trong đó a là giá trị chỉ mức độ đáp ứng của nền đối với sự thay đổi của
môi trường. a có thể là 1 hằng số được chọn theo kinh nghiệm hoặc có thể được
cập nhật như sau: Gọi Q là tập hợp các điểm được chọn ngẫu nhiên và không
thuộc vào phần chuyển động ở frame trước. Chúng ta tính toán một tỉ số thay đổi độ sáng l (t) tương ứng với các điểm trong Q.
1
)( qI qB )(
- l (t)= (cid:229) ˛
Với I(q) là cường độ của điểm q tại frame hiện tại, và B(q) là cường độ
của điểm q tại ảnh nền.
Trong trường hợp tỉ số thay đổi độ sáng này lớn hơn ngưỡng cho trước thì
chúng ta sẽ điều chỉnh lại tham số cập nhập nền như sau:
t)(l c
a n ếu l (t) > t = 0.01 +
Với c là một hằng số cho trước, c được xác định bằng thực nghiệm.
Sau đây là sơ đồ toàn bộ quá trình trong bộ phát hiện chuyển động.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
31
Ảnh nền
frame k
Ngưỡng
Trừ nền
Cập nhật nền
Cập nhật ngưỡng
H11 : Sơ đồ xử lí trong bộ phát hiện chuyển động
Rút trích đối tượng chuyển động
Bây giờ chúng ta sẽ đi chi tiết một số thuật giải trong sơ đồ trên. Đó là
thuật giải trừ nền, thuật giải cập nhập nền, thuật giải cập nhập ngưỡng và
thuật giải rút trích đối tượng chuyển động.
a. Thu ật giải trừ nền
input: ảnh nền B, ảnh hiện tại I và ma trận ngưỡng T
output: ảnh M là mặt nạ chuyển động
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
32
m := getHeight(M);
n := getWidth(M);
for x := 1 to m do
for y := 1 to n do
if | B[x,y] – I[x,y] | > T[x,y] then
M[x,y] := 255;
else
M[x,y] := 0;
Ở đây chúng tôi sử dụng ảnh độ xám để làm mặt nạ chuyển động thay
vì dùng ảnh nhị phân do đó M[x,y] sẽ nhận một trong hai giá trị là 255 chỉ
màu trắng( điểm chuyển động ) và 0 chỉ màu đen ( điểm đứng yên )
b. Thu ật giải cập nhật nền
input: nền B, ảnh hiện tại I và mặt nạ chuyển động M
output: nền B được cập nhật lại
m := getHeight(B);
n := getWidth(B);
for x := 1 to m do
for y := 1 to n do
if M[x,y] = 0 then
B[x,y] := a *B[x,y] + ( 1 - a )*B[x,y];
c. Th ủ tục cập nhật ngưỡng
input: ma trận ngưỡng T, nền B, ảnh hiện tại I, mặt nạ chuyển động M
output: ma trận ngưỡng đã được cập nhật.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
33
m := getHeight( B );
n := getWidth( B );
for x := 1 to m do
for y := 1 to n do
if M[x,y] = 0 then
T[x,y] := a *T[x,y] +
( 1 - a )*(5*| I[x,y] – B[x,y] |;
d. Th ủ tục rút trích đối tượng chuyển động
Sau khi ta áp dụng phương pháp trừ nền ta có được một mặt nạ chuyển
động. Tuy nhiên mặt nạ chuyển động này có kết quả không tốt lắm và còn có
nhiễu. Trước hết ta áp dụng bộ lọc tuyến tính Median để khử bớt nhiễu. Bộ lọc
Median có thể sẽ không lọc hết nhiễu nếu nhiễu nhiều quá, thì nhiễu này sẽ được
loại bỏ ở công đoạn sau. Sau đó ta dùng phép biến đổi morphology đóng để lấp
đầy khoảng trắng giữa đầu và thân. Sau đó ta dùng phép phân tích các vùng liên
thông để trích lấy các đối tượng chuyển động. Tuy nhiên, trong các đối tượng
chuyển động này có nhiều đối tượng là nhiễu và nhiều đối tượng chuyển động
mà ta không cần quan tâm tới. Các đối tượng nhiễu thường có kích thước nhỏ và
các đối tượng ta không quan tâm cũng thế. Vì thế ta chỉ lưu các đối tượng
chuyển động vào danh sách các đối tượng chuyển động khi kích thước của chúng
đủ lớn. Sau đây là chi tiết giải thuật.
• Thuật giải trích lấy các thành phần liên thông
Input: Mặt nạ chuyển động M
Output: L danh sách các thành phần liên thông
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
34
Median( M, temp );
Close( temp, M );
L := getConnectedComponent( M );
• Thuật giải trích lấy đối tượng chuyển động
Input: L danh sách các thành phần liên thông
Output: A danh sách các đối tượng chuyển động
j := 1;
For i:= 1 to getSize(L) do
If getObjectSize( L[i] ) > c then
Begin
InitialObject( A[j], L[i] );
j := j +1;
End
Sau đây chúng ta xem kết quả thực hiện của giải thuật rút trích các
frame hiện tại
đối tượng chuyển động.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
35
Mặt nạ chuyển động khi dùng phương pháp tr ừ
nền. Vẫn còn nhiễu và có sự phân cách nhỏ giữa
xe máy, thân mình và đầu
Mặt nạ chuyển động khi cải tiến phương pháp trừ
nền. Các phần nhiễu đã được lọc bỏ và các phần
xe máy, thân mình và đầu đã được liên kết với
nhau
Khi thử nghiệm phương pháp phát hiện chuyển động trên chúng tôi thu
được kết quả sau:
• Tổng số frame thử nghiệm là 2010
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
36
• Thời gian xử lí là 145 giây • Tốc độ xử lí trung bình là 13.6 giây • Các đối tượng chuyển động đều được phát hiện
3.5 Theo v ết đối tượng
Sau khi các đối tượng đã được phát hiện, chúng ta sẽ tiến hành theo vết
đối tượng. Hầu hết các hệ thống hiện nay đều theo vết đối tượng dựa vào bộ lọc
Kalman. Ở đây chúng tôi cũng sử dụng bộ lọc Kalman nhưng có một số sửa đổi.
Như đã biết theo vết đối tượng có nghĩa là chúng ta phải phân tích và ghi lại quỹ
đạo của đối tượng. Để có thể theo vết tốt chúng ta phải ước lượng được chuyển
động của đối tượng. Mỗi đối tượng sẽ được đặc trưng bởi một số tham số sau:
1. p = V ị trí trong tọa độ ảnh. Tọa độ của trọng tâm của đối tượng
sẽ chính là tọa độ của đối tượng.
2. d p = là độ không chắc chắn của vị trí. Không bao giờ chúng ta
có thể ước lượng chính xác được vì thế độ không chắc chắn này
>-
chính là độ sai số trong ước lượng.
v = t ốc độ của đối tượng. Ở đây chúng ta sẽ dùng độ dịch
3.
chuyển thay cho tốc độ vì chúng ta đang xét là các điểm rời rạc
>-
chứ không phải là các điểm liên tục.
v = độ không chắc chắn của vận tốc.
4. d
5. ´ = hình chữ nhật bao quanh đối tượng.
6. d : là m ột số chỉ độ tin cậy của đối tượng. Độ tin cậy này sẽ dùng
để quyết định loại bỏ hay theo vết đối tượng.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
37
3.5.1 Dự đoán vị trí của đối tượng trong tương lai
Việc ước lượng vị trí của đối tượng trong mỗi frame là rất quan
trọng. Nó giúp cho việc tính toán đơn giản hơn và việc theo vết sẽ chính xác hơn.
Vị trí ước lượng sẽ được sử dụng để lựa chọn số các đối tượng cần phải xem xét
trong quá trình theo vết. Việc ước lượng sẽ giảm được rất nhiều thời gian vì với
mỗi đối tượng chúng ta không cần phải xem xét trên toàn bộ ảnh mà chỉ xét trong vùng được dự đoán mà thôi. Gọi D t là thời gian giữa 2 frame, theo mô hình
t chuyển động tuyến tính thì ta có pn+1 = pn + v*D
Và độ không chắc chắn được cho là bằng độ không chắc chắn của vị trí hiện tại
cộng với độ không chắc chắc của vận tốc nhân cho thời gian.
t d pn+1 = d pn + d vn*D
Những vị trí này sẽ được chọn để ước lượng vị trí mới của đối tượng trong frame
tiếp theo. Mỗi đối tượng trong frame hiện tại sẽ được dự đoán vị trí mới bằng cách cộng hình chữ nhật bao quanh đối tượng một khoảng là vn*D t sau đó mở rộng ra một khoảng d pn+1. Do dó nếu có vùng chuyển động mới nào thuộc vào
vùng dự đoán này thì ta sẽ tiến hành so khớp.
3.5.2 So kh ớp đối tượng
Cho một vùng đối ở frame hiện tại, chúng ta tìm vùng khớp với
vùng này ở frame tiếp theo bằng phương pháp so khớp tương quan ảnh. Hàm tương quan giữa vùng ´ ở frame hiện tại với vùng ứng viên ở frame tiếp theo và
cách vùng này một khoảng d là:
),( jiW
)( x
n
+ ( ) dx + 1 n
-
I
C(d) = (cid:229) ˛
I W
Rx
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
38
Trong đó: In là mật độ điểm ảnh tại frame hiện tại, In+1 là mật độ điểm ảnh tại
=
W
)( xW
frame tiếp theo. W là hàm trọng số và ||W|| được tính bằng công thức sau:
Rx
(cid:229) ˛
Ở đây W(x) là hàm trọng số thể hiện mức độ ưu tiên của điểm x. Các đối tượng
mà chúng ta quan sát được có thể di chuyển từ xa tới hoặc đi ra xa. Khi đó kích
thước của chúng ở frame tiếp theo sẽ lớn hơn hoặc nhỏ hơn. Vì thế hàm trọng số
này phải được tính làm sao để các điểm ở gần tâm của đối tượng sẽ có độ ưu tiên
cao hơn. Và để giảm chi phí tính toán thì hàm trọng số này chỉ áp dụng đối với
các điểm ảnh nào được xem là chuyển động, do đó các điểm được xem là đứng
yên sẽ có hàm trọng số bằng 0. Nếu x là điểm chuyển động ta có:
)( xW
1
1 += 2
1 2
max
)( xr r
(cid:230) (cid:246) (cid:231) (cid:247) - (cid:231) (cid:247) Ł ł
Trong đó r(x) là khoảng cách bán kính từ x tới tâm của vùng ´ , và rmax là khoảng
cách bán kính lớn nhất trong ´ . Để giảm chi phí tính toán ta có thể ước lượng
tâm của đối tượng chính là tâm của hình chữ nhật bao quanh đối tượng và khoảng cách lớn nhất trong vùng ´ bằng một nữa đường chéo của hình chữ nhật
bao quanh đối tượng. Khi so khớp vùng đối tượng có kích thước m*n thì chi phí tính toán sẽ là O(m2n2). Nếu kích thước của vùng đối tượng lớn thì chi phí sẽ
tăng lên rất lớn khó mà kiểm soát được. Vì thế chúng tôi đã cố định một ngưỡng
mà chi tính toán sẽ không vượt qua ngưỡng đó. Ở đây chúng tôi chọn ngưỡng là
25 điểm ảnh. Kích thước của vùng ảnh theo mỗi chiều sẽ bị giảm đi một nửa nếu
nó lớn hơn 25 và chúng tôi sẽ đếm số lần giảm kích thước để lựa chọn các điểm
khi so khớp. Ví dụ như một vùng có kích thước 80*45 thì kích thước sẽ giảm đi
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
39
2 lần theo chiều x và 1lần theo chiều y. Do đó trong quá trình so khớp, theo
chiều x cứ 4 điểm thì sẽ chọn một điểm để so khớp và cứ 2 điểm theo chiều y thì
sẽ chọn 1 điểm. Với cách xử lí như trên thì độ phức tạp của thuật toán không bao giờ quá O(254). Sau đây là thuật giải so khớp đối tượng
Input: đối tượng ở frame hiện tại currentObject, đối tượng ở frame tiếp
theo targetObject, 2 frame ảnh In và In+1.
Ouput: C(d)
x1 := currentObject.objectRect.x;
y1 := currentObject.objectRect.y;
x2 := currentObject.objectRect.x +
currentObject.objectRect.width;
y2 := currentObject.objectRect.y +
currentObject.objectRect.height;
xStep := 1;
yStep := 1;
while( m > 25 )
yStep := yStep + 1;
while( n > 25 )
xStep := xStep + 1;
Cd := 0;
for y := y1 to y2 do
for x := x1 to x2 do
begin
if M[x,y] > 0 then
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
40
begin
)
(
+
1
max
r x r
1 2
1 2
+
+
+
Wx
ydx ,
dy ]
- ; Wx :=
x [ + 1 n
I ].[* yx n
I
; Cd := Cd +
end
x := x + xStep;
y := y + yStep;
end
3.5.3 Theo v ết đối tượng
Theo v ết đối tượng thì rộng lớn hơn là so khớp đối tượng. Chúng ta
phải lưu vết được quỹ đạo chuyển động của đối tượng.Ý chính ở đây là so
khớp đối tượng có được với các đối tượng mà ta thu được ở frame tiếp
theo. Các đối tượng ở frame tiếp theo sau khi qua bộ phát hiệu chuyển
động sẽ rút trích ra được các vùng chuyển động. Chúng ta sẽ tạo một
danh sách các vùng chuyển động để thuận tiện cho việc theo vết. Sau đó
chúng ta ước lượng vị trí mới của các đối tượng ở frame hiện tại. Khi đó
việc so khớp sẽ dễ dàng hơn. Chúng ta chỉ so khớp các đối tượng với vùng
chuyển động mới mà vị trí ước lượng của các đối tượng này thuộc vào
vùng chuyển động mới đó. Tùy trường hợp so khớp mà chúng ta có các
quyết định theo vết khác nhau. Sau đây là sơ đồ thuật giải theo vết đối
tượng.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
41
Frame j Các đối tượng đang lưu trữ
Rút trích các vùng chuyển động
A’ Dự đoán vị trí mới của các đối tượng fi Danh sách các vùng fi Bi
Y
i = 1
i ˛ Bi N
Duyệt A’ để tìm các đối tượng j khớp với vùng chuyển động i
Stop
H12: Sơ đồ theo vết đối tượng
i = i + 1 Tìm đối tượng trong j khớp với i
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
42
Khi so khớp các đối tượng trong j với đối tượng i sẽ xảy ra các trường hợp
sau:
1. Không có đối tượng nào khớp với vùng chuyển động hết. Ở đây
ta có 2 trường hợp xảy ra: một là vùng chuyển động này mới vào
vùng quan sát. Khi đó ta tạo một đối tượng mới thiết lập các
tham số ban đầu như là vị trí, vận tốc , .... và cho độ tin cậy ở
mức thấp nhất. Trường hợp hai là ta dự đoán sai. Khi này ta có
thể mở rộng vùng tìm kiếm và so khớp các đối tượng.
2. Ch ỉ có một đối tượng khớp với vùng chuyển động. Đây là trường
hợp tốt nhất trong theo vết. Lúc này ta sẽ cập nhật đối tượng theo
vùng chuyển động mới này.
3. Một đối tượng khớp với nhiều vùng chuyển động. Điều này có
thể do đối tượng tách ra thành nhiều đối tượng. Ở đây ta sẽ cập
nhật đối tượng hiện tại theo đối tượng khớp nhất. Các đối tượng
còn lại sẽ tương ứng với đối tượng mới và chúng ta thiết lập các
tham số ban đầu cho các đối tượng.
4. Tr ường hợp nhiều đối tượng cùng khớp với một vùng chuyển
động. Trường hợp này là do các đối tượng giao nhau. Ở đây
chúng tôi chỉ xét 2 đối tượng giao nhau thôi. Khi 2 đối tượng
giao nhau chúng tôi sẽ xét vị trí của 2 đối tượng này với vị trí
của đối tượng mà cập nhật lại vị trí mới của các đối tượng. Ở đây
mỗi đối tượng sẽ được có một hình chữ nhật bao quanh đối
tượng. Chúng tôi sẽ so sánh góc trái trên và góc phải dưới của
các hình chữ nhật bao quanh đối tượng để đưa ra các quyết định
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
43
cập nhật lại vị trí hình chữ nhật bao này theo góc trái trên hay
Frame I
Frame In
n+1
H13: ví dụ thuật toán so cập nhập vị trí khi 2 đối tượng giao nhau
góc phải dưới của vùng mới. Ví dụ
Ở ví dụ trên ta thấy x21 < x11 do đó x21 = x1 còn x12 > x22 nên
x12 = x2, do đó độ dịch chuyển theo phương x của đối tượng 1 là D x1 = x2 – x12 còn của đối tượng 2 là D x2 = x1 – x12. Thành phần
theo phương y được tính tương tự.
5. Tr ường hợp các đối tượng không khớp với vùng chuyển động
nào hết. Trường hợp này có thể do đối tượng ra khỏi vùng quan
sát hoặc là đối tượng này đã bị đối tượng khác che khuất, vì thế
trong trường hợp này độ tin cậy của đối tượng sẽ giảm xuống.
Khi độ tin cậy giảm xuống dưới ngưỡng cho phép thì ta sẽ loại
bỏ đối tượng này ra khỏi danh sách.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
44
3.5.4 Cập nhật đối tượng
Các tham số của đối tượng sẽ được cập nhật theo các tham số của
đối tượng mới. Gọi d là độ dịch chuyển của đối tượng giữa 2 frame In và frame
In+1. ta có
p
p
+1
n
n
t
- d = D
Với pn+1 là vị trí mới của đối tượng.
=
*
d
( -+ 1
a
+ n 1
n
Khi đó ta có vận tốc của đối tượng được cập nhập như sau:
v
) v * a
=
và độ không chắc chắn của vận tốc được cập nhập như sau:
*
( -+ 1
d
a
a
+ 1
n
+ 1
n
n
v
v
) v *
d
-
3.6 Phân lo ại đối tượng
Phân loại đối tượng là một công việc rất khó và tốn rất nhiều thời gian. Để
phân loại đối tượng chúng ta cần phải biết các đặc trưng riêng của đối tượng. Đó
là các đặc trưng riêng của đối tượng mà đối tượng khác không có. Có rất nhiều
phương pháp để tìm đặc trưng và phân loại đối tượng, tuy nhiên có hai phương
pháp chung, phổ biến thường được sử dụng là:
1. Sử dụng Heuristics. Phương pháp này đưa ra các đặc trưng của đối
tượng mà từ kinh nghiệm hoặc các phân tích lý thuyết về đối tượng
đó. Tức là ta dựa vào cấu trúc, hình dáng, màu sắc của đối tượng ...
Phương pháp này có ưu điểm là cho kết quả tốt và nhanh, tuy nhiên
nó dựa vào trực giác của con người nên nhiều lúc kết quả lại không
tốt lắm, và có nhiều bài toán khi sử dụng phương pháp này sẽ làm
phức tạp thêm.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
45
2. Phương pháp thống kê. Phương pháp này tìm các đặc trưng của đối
tượng dựa trên kết quả quan sát được của một tập mẫu. Từ kết quả
quan sát này chúng ta sẽ rút ra được các đặc điểm chung, các quy
luật chung của tập mẫu. Phương pháp này thường cho kết quả khá
tốt vì chúng dựa trên các quan sát thực tế. Tuy nhiên phương pháp
có nhược điểm là đòi hỏi tập mẫu quan sát phải lớn và công việc thu
thập tập mẫu rất khó khăn và tốn thời gian. Nếu chúng ta thu thập dữ
liệu cho tập mẫu không tốt thì kết quả sẽ không tốt. Một trường hợp
điển hình của phương pháp này là mạng neuron. Hiện nay với sự
phát triển của tốc độ máy tính ngày càng nhanh thì phương pháp này
đang được sử dụng rộng rãi.
Ở đây vì thời gian có hạn và không có đủ điều kiện để thực hiện phương
pháp thống kê cho nên chúng tôi chọn phương pháp Heuristics. Ở đây
chúng tôi sẽ phân loại người đi bộ với các đối tượng khác như là xe, người
đi xe máy ... Việc phân loại này dựa vào hình chữ nhật bao đối tượng. Đối
với người đi bộ thì chiều rộng của hình chữ nhật rất ngắn còn chiều cao thì
dài hơn còn đối với các phương đối tượng khác ví dụ như xe ôtô thì chiều
rộng thường dài hơn chiều dài. Vì thế chúng tôi chọn tỉ lệ giữa chiều rộng
vào chiều dài làm một đặc trưng để phân loại.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
46
0 =
< tg
)30(
ta có:
3 3
width height
thì đối tượng đó được xem là người n ếu
chuyển động. Trong đó width là chiều rộng của khung bao đối tượng còn height
là chiều cao. Thuộc tính hình chữ nhật bao quanh đối tượng chưa sử dụng đến
hình dạng của đối tượng do đó ta có một hướng khác để phân loại đối tượng.
p =
N width
D
D p ‡ T Đối tượng chuyển động là người
D p < T Đối tượng chuyển động không phải là người
Trong đó N là số điểm chuyển động trong hình bao đối tượng, width là
chiều rộng của đường bao.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
47
CHƯƠNG 4
CÀI ĐẶT CHƯƠNG TRÌNH
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
48
4.1 Môi tr ường cài đặt
Chúng tôi cài đặt thử nghiệm chương trình bằng ngôn ngữ C++ và triển
khai trên môi trường Window bằng bộ công cụ Visual Studio 6.0. Chúng tôi sử
dụng thêm thư viện Intel OpenCV để hỗ trợ xử lí. Đây là một thư viện mã nguồn
mở của Intel về xử lí thị giác máy tính.
4.2 Cấu trúc chương trình
4.2.1
Cấu trúc dữ liệu Ngoài các dữ liệu cơ bản trong C++ chúng tôi còn sử dụng các cấu
trúc của thư viện Intel OpenCV như là IplImage để lưu trữ cấu trúc ảnh. Cấu trúc
này thừa kế từ thư viện IPL( Intel Image Processing Library ). Do cấu trúc này
khá phức tạp nên chúng tôi không trình bày trong luận văn này. Chi tiết các bạn
có thể xem trong tài liệu của thư viện Intel OpenCV
Để mô tả một đối tượng chuyển động chúng tôi xây dựng cấu trúc
typedef struct tagMovingObject
{
int objectConfidence;
CvRect objectRect;
CvPoint2D32f objectVelocity;
CvPoint
objectCentroid;
CvPoint2D32f objectVelocityUncertainty;
CvPoint2D32f objectPositionUncertainty;
CArray< int , int > arrTargetObjectIndex;
BOOL
objectUpdated;
}MovingObject, *pMovingObject;
MovingObject
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
49
typedef struct CvPoint
{
int x; /* x-coordinate, usually zero-based */
int y; /* y-coordinate, usually zero-based */
}
CvPoint;
typedef struct CvPoint2D32f
{
float x; /* x-coordinate, usually zero-based */
float y; /* y-coordinate, usually zero-based */
}
CvPoint2D32f;
typedef struct CvRect
{
int x; /* x-coordinate of the left-most rectangle corner[s] */
int y; /* y-coordinate of the top-most or bottom-most
rectangle corner[s] */
int width; /* width of the rectangle */
int height; /* height of the rectangle */
}
CvRect;
Trong cấu trúc MovingObject trên ta có một vài cấu trúc khác :
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
50
4.2.2 Cấu trúc chương trình
Chương trình được xây dựng dựa trên hai phần: phần giao diện và
phần xử lí.
Trong phần giao diện chúng tôi có sử dụng một số lớp về giao diện
như là CXPStyleButtonST, CbuttonST...
Trong phần xử lí chúng tôi xây dựng một lớp xử lí video
// Hàm lấy dữ liệu từ file AVI
void GetFile( const char* szFileName );
// Hàm khởi tạo các giá trị cần thiết
int ProcessAVI();
// Hàm trừ nền để rút ra đối tượng chuyển động
void BackgroundSubtraction( IplImage *backgroundImage,
IplImage *currentImage,
IplImage *foregroundImage,
IplImage *thresholdImage );
// Hàm thực hiện các công việc xử lí
void Next();
// Hàm so khớp đối tượng
double MatchingObject( MovingObject* currentObject,
MovingObject* targetObject);
CSequenceProcessing . Một vài hàm xử lí cơ bản trong lớp này như sau:
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
51
CHƯƠNG 5
KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
52
5.1 Kết quả đạt được
5.1.1 Dữ liệu thử nghiệm
Dữ liệu mà chúng tôi thử nghiệm được quay ở trên một con đường
gần công viên Gia Định vào lúc 5h chiều. Dữ liệu dược lưu vào máy qua cổng
IEEE 1394 và dùng phần mềm Unlead Video Studio DV 5.0 xử lí và lưu dưới
dạng file AVI. Ở đây để tiết kiệm bộ nhớ chúng tôi lưu dưới dạng AVI nén. Các
thông số như sau:
• Chuẩn nén là Cinepak Codec. • Kích thước của file AVI là 56,7Mb • Thời gian của đoạn film là 10 phút 07 giây • Tỉ lệ frame 30frame/giây • Chiểu rộng của từng frame là 320 pixel • Chiều cao của từng frame là 240 pixel
5.1.2 Kết quả đạt được
Với dữ liệu trên chúng tôi đã tách được các đối tượng chuyển động.
Xử lí được các chuyển động không cần thiết như là chuyển động của lá cây, các
đối tượng chuyển động có kích thước nhỏ được loại bỏ. Tuy nhiên khi khung
cảnh có quá nhiều đối tượng chuyển động thì thuật toán cho kết quả không tốt
lắm. Việc theo vết đối tượng khá tốt, tuy nhiên khi hai đối tượng gặp nhau thì
việc theo vết gặp khó khăn. Về phân loại đối tượng các đối tượng là người thì
được nhận dạng rất tốt, tuy nhiên vì thuật toán phân loại còn rất thô nên khi các
đối tượng khác không phải là đối tượng người chuyển động, chuyển động ở phía
xa camera thì hệ thống nhận dạng sai và cho rằng đó là đối tượng người.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
53
5.2 Hướng phát triển
Với kết quả đạt được hiện tại, chúng tôi đề ra hướng phát triển trong tương
lao:
1. Hệ thống phát hiện chuyển động hiện tại vẫn còn yếu vì chúng dựa
trên thuật toán trừ nền rất nhạy cảm với nhiễu và sự thay đổi của
nền. Mặc khác thuật toán này chỉ áp dụng với camera tĩnh thôi. Do
đó chúng tôi sẽ phát triển một hệ thống mới tốt hơn dựa trên các mô
hình toán học mới.
2. Xây d ựng một hệ thống phân loại nhiều đối tượng. Có thể dựa trên
mô hình thống kê cụ thể là mạng nơron để phân loại đối tượng.
3. Từ hệ thống phân loại này ta có thể xây dựng các hệ thống chống
trộm bằng cách đưa ra các đặc trưng riêng để hệ thống nhận dạng
trộm và đưa ra báo động.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
54
TÀI LIỆU THAM KHẢO
[1] A.M.Tekalp , Digital Video Processing , Prentice Hall , 1995
[2] Hand Book of Image & Video Processing, Academic Press, pp.207-226 ,
2000
[3] Robert T.Collins , Alan J.Lipton and Takeo Kamade , “A System for
VideoSurveillance and Monitoring” , 1999
[4] LIU Ya, AI Haizou, XU Guangyou, “Moving Object Detection and
Tracking Based on Background Subtraction”, 2001.
[5] Fatih Poriki and Oncel Tuzel, Mitsubishi Research Laboratory, “Human
Body Tracking by Adaptive Background Models and Mean-Shift Analysis”,
7-2003
[6] Mathew Price, “Video Classification and Tracking with Colour
Technical Report”, 14-11-2002
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
55
PHỤ LỤC 1
MỘT VÀI HÌNH ẢNH VỀ KẾT QUẢ ĐẠT
ĐƯỢC
1. Một vài mặt nạ chuyển động
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
56
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
57
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
58
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
59
Sau đây là một số frame mà có đối tượng là người đi bộ
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
60
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
61
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
62
2. Kết quả theo vết đối tượng
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
63
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
64
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
65
3. Kết quả theo vết đối tượng là người
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
66
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
67
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
68
PHỤ LỤC 2
VÀI NÉT VỀ THƯ VIỆN INTEL OPENCV
1. OpenCV là gì?
OpenCV là viết tắt của Intel® Open Source Computer Vision. Đó là một
thư viện gồm nhiều hàm C và một số lớp C++ dựa trên các thuật toán phổ biến
trong xử lí ảnh và thì giác máy tính.
OpenCV là một thư viện mã ngưồn mở và miễn phí.
OpenCV là một nền tảng giao di ện lập trình t ừ cấp trung t ới cao. Nó có
hơn 300 hàm C cho phép x ử lí từng điểm ảnh củng nh ư toàn b ộ ảnh hay đoạn
video. Khi kết hợp với thư viện IPP (Intel® Intergrated Performance Primitives)
trên các CPU Intel s ẽ tối ưu hóa xử lí nh ờ vận dụng kiến trúc của CPU. Đây là
một thư viện có thể sử dụng được trên Window và Linux.
2. Các ch ức năng của thư viện OpenCV
2.1 Các ki ểu dữ liệu cơ bản
OpenCV cung cấp rất nhiều kiểu dữ liệu có cấu trúc nhằm hỗ trợ tối đa
việc xử lí. Các kiểu dữ liệu có thể được chia ra làm 2 loại:
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
69
• Các kiểu dữ liệu giúp đở: đây là các ki ểu dữ liệu giúp cho thao
tác vói các dữ liệu ảnh dễ dàng hơn như là :
o IplImage: dùng để lưu cấu trúc file ảnh
o CvPoint: dùng để lưu vị trí của điểm ảnh
o CvRect:
o CvBox
o Và nhiều kiểu dữ liệu khác
• Các ki ểu dữ li ệu động: đây là các ki ểu dữ li ệu được OpenCV
phát triển để giúp việc xử lí được tối ưu:
o CvMemStorage: đây là m ột cấu trúc d ữ li ệu cấp th ấp
dùng để lưu tr ữ các c ấu trúc d ữ li ệu tăng động nh ư là
typedef struct CvMemStorage {
struct CvMemBlock* bottom;/* first allocated block */ struct CvMemBlock* top; /* the current memory block - top of the stack */ struct CvMemStorage* parent; /* borrows new blocks from */
int block_size; /* block size */
int free_space; /* free space in the top block (in bytes) */
} CvMemStorage;
sequences, graphs...
o CvSeq : Đây là cấu trúc nền tảng của tất cả cấu trúc động
được sử dụng trong OpenCV. OpenCV c ũng cho phép
chúng ta tạo các cấu trúc dữ liệu mới từ cấu trúc này.
o CvSet : Đây là cấu trúc kế thừa từ cấu trúc CvSeq.
o CvGraph : Cấu trúc này lại kế thừa từ cấu trúc CvSet.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
70
Và còn nhiều kiểu dữ liệu khác nữa. Để biết thêm chi tiết đọc giả hãy
tham khảo trong file help của OpenCV.
2.2 Các hàm x ử lí trong OpenCV
Về các hàm xử lí trong OpenCV ta có thể chia ra như sau:
2.2.1 Các hàm x ử lí các kiểu dữ liệu cơ bản
Đây là các hàm h ỗ tr ợ cho vi ệc xử lí các c ấu trúc d ữ li ệu
trong OpenCV bao gồm: • Khởi tạo:
cvCreateImage : hàm khởi tạo một cấu trúc IplImage
cvMat: hàm khởi tạo một cấu trúc CvMat
cvCreateMemStorage: hàm kh ởi tạo một cấu trúc
CvMemStorage.
CvCreateSeq: hàm khởi tạo cấu trúc CvSeq.
.......
• Các hàm hủy
cvReleaseImage: gi ải phóng b ộ nh ớ giành cho c ấu trúc
IplImage được cấp phát bằng hàm cvCreateImage.
cvReleaseMat: giải phóng bộ nhớ giành cho c ấu trúc CvMat
được khởi tạo bằng hàm cvMat.
cvReleaseMemStorage: giải phóng bộ nhớ giành cho cấu trúc
CvMemStorage được kh ởi tạo bằng hàm
cvCreateMemStorage.
.....
Nói chung các c ấu trúc được khởi tạo từ hàm cvCreateXXX
thì sẽ được giải phóng bằng hàm cvReleaseXXX
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
71
Ngoài ra còn các hàm sao chép, l ấy thông tin t ừ các ph ần tử trong
bên trong cấu trúc và các toán tử trên các cấu trúc.
2.2.2 Các hàm v ề xử lí ảnh
Các hàm x ử lí ảnh có thể được phân thành các loại sau:
• Các hàm vẽ đơn giản: đây các hàm th ực hiện các thao tác v ẽ
đơn giản trên ảnh như là vẽ elip, hình ch ữ nhật.... hay là vi ết
chữ trên ảnh.
• Các hàm về tìm cạnh và góc trong ảnh: các hàm này sử dụng
các thuật toán thông d ụng trong tìm c ạnh nh ư là các m ặt nạ
Sobel, Laplace, Candy.....
• Các hàm về lấy mẫu, nội suy, biến đổi hình học. • Các phép biến đổi morphological: ngoài các phép bi ến đổi cơ
bản nh ư là Erode, Dilate còn có các phép bi ến đổi phức tạp
hơn bằng các kết hợp 2 phép biến đổi Erode và Dilate như là :
o Open: open(A,B) = dilate(erode(A,B),B)
o Close: close(A,B) = erode(dilate(A,B),B)
o Morphological gradient:
morp_grad(A,B) = dilate(A,B) – erode(A,B)
o Top hat: tophat(A,B) = A – erode(A,B)
o Black hat: blackhat(A,B) = dilate(A,B) – A
• Các bộ lọc nhi ễu: sử dụng các b ộ lọc thông d ụng nh ư là
Median, Gausian....
• Các phép chuy ển đổi các không gian màu: các không gian
màu mà OpenCV hỗ trợ là: Gray, RGB, HSV, YCrCb, XYZ,
Lab, Bayer.
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
72
• Các phép bi ến đổi đặc bi ệt nh ư là : phép bi ến đổi Hough,
Fourier...
• Các hàm về Histogram
Nói chung các hàm xử lí ảnh của OpenCV là một phần trong thư
viện IPL.
2.2.3 Các hàm v ề phân tích vận động và theo vết đối tượng
• Các hàm dùng trong phương pháp trừ nền. • Các hàm v ề theo v ết đối tượng dựa theo thu ật toán
MeanShift, Camshift, và Snake.
• Các hàm dùng để tính toán Optical Flow d ựa vào các thu ật
toán phổ biến: Horn & Schunck, Lucas & Kanade, ... • Các hàm ước lượng trạng thái dựa vào bộ lọc Kalman
2.2.4 Các hàm v ề nhận dạng đối tượng
• Các hàm về nhận dạng đối tượng theo phương pháp PCA như
là: tính ma trận tương quan, tính các vector riêng.....
• Các hàm về nhận dạng đối tượng theo mô hình Makốp ẩn.
2.2.5 Các hàm v ề giao diện và thu nhận video
Các hàm này năm trong thư viện Highgui vì thế khi sử dụng các
hàm này b ạn ph ải khai báo : #include “highgui.h” và thi ết lập
các liên k ết tới các file th ư vi ện cần thi ết là highgui.lib và
highgui.dll. Các hàm cơ bản trong thư viện này là: • Các hàm v ề Window: t ạo cửa sổ mới, hủy một cửa sổ, lấy
Handle của một cửa sổ, lấy tên của một cửa sổ....
• Các hàm về xử lí file ảnh: như là đọc một ảnh từ file và l ưu
vào cấu trúc IplImage, hàm hi ện một ảnh lên màn hình, l ưu
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
73
một ảnh xuống một file, hay chuy ển đổi không gian màu c ủa
ảnh....
• Các hàm về nhập xuất video: bao gồm các hàm lấy dữ liệu từ
một file AVI, l ấy dữ li ệu từ camera và l ưu vào c ấu trúc
CvCapture, hàm lấy một Frame từ cấu trúc CvCapture, hàm
lưu dữ liệu video xuống một file AVI..
Ngoài ra trong th ư vi ện highgui còn có các l ớp được vi ết dưới
dạng hướng đối tượng để dễ dàng s ử dụng nh ư là l ớp
CvvImage..
Các hàm được giới thiệu trên là các hàm cơ bản trong OpenCV.
Ngoài ra còn có một số hàm đặc biệt được mở rộng sau mỗi phiên bản cải tiến
của nó. OpenCV còn cung cấp cho chúng ta rất nhiều các ví dụ rất hữu ích. Nếu
các bạn quan tâm để thư viện này và mới bắt đầu làm quen thì có thể tham khảo
and the Microsoft DirectShow technology “ của Robert Laganiere ở địa
bài viết: “A step-by-step guide to the use of the Intel OpenCV library
chỉ http://www.site.uottawa.ca/~laganier/tutorial/opencv+directshow/ . Hoặc là
tham gia vào nhóm OpenCV tại địa chỉ http://groups.yahoo.com/group/opencv .
PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com
74