Bài toán phân tách các đối tượng trong video làmột bài toán khó và đóng vai trò quan trọng trong các ứng dụng đa phương tiện vídụ như truy tìm video theo nội dung, kĩ thuật nén video thế hệ mới, theo vết đốitượng, các thiết bị giám sát thông minh, v.v MUA TÀI LIỆU LIÊN HỆ MÌNH GỬI CODE NHÉ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
CƠ SỞ DỮ LIỆU ĐA PHƯƠNG TIỆN
ĐỀ TÀI:
Phân đoạn video đơn giản (phát hiện các shot) sử dụng đặc trưng toàn cục
Hà Nội tháng 5 năm 2017
Trang 2Lời nói đầu
Ngày nay cùng với sự bùng nổ của internet, các phương tiện truyền thông
đa phương tiện, các thiết bị quay phim kĩ thuật số ngày càng tân tiến, các thiết bị lưu trữ với dung lượng tăng lên chóng mặt làm phát sinh nhu cầu xử lí các dữ liệu
đa phương tiện đặc biệt là video Bài toán phân tách các đối tượng trong video là một bài toán khó và đóng vai trò quan trọng trong các ứng dụng đa phương tiện ví
dụ như truy tìm video theo nội dung, kĩ thuật nén video thế hệ mới, theo vết đối tượng, các thiết bị giám sát thông minh, v.v Tuy nhiên để đạt được mục tiêu phân đoạn các đối tượng có nghĩa hiện nay vẫn chưa có phương nào nào thật sự hiệu quả Hiện nay trong phân đoạn video gặp một số khó khăn cần khắc phục là chưa giải quyết được khi điều kiện chiếu sáng thay đổi, camera chuyển động phức tạp, các đối tượng chuyển động đan xen che khuất nhau, chưa xử lí được trong thời gian thực Trong phạm vi môn học cơ sở dữ liệu đa phương tiện, nhóm em tìm hiểu về kỹ thuật phân đoạn video sử dụng đặc trưng toàn cục
Trang 3Mục lục
Lời nói đầu 2
Mục lục 3
I Bài toán 4
II.Hệ thống 4
1.Cách xây dựng hệ thống 4
2.Cách tính đặc trưng và khoảng cách 4
3 Cách lưu dữ liệu 7
III Kết quả cài đặt 7
1 Kết quả minh họa 7
2.Phân tích đánh giá kết quả 8
IV.Kết luận 9
Tài liệu tham khảo 10
Trang 4I Bài toán
Yêu cầu bài toán: Phân đoạn video đơn giản (phát hiện các shot) sử dụng
đặc trưng toàn cục
Video là gì?
Video là tập hợp các khung hình được đặt liên tiếp nhau, mỗi khung hình là
một ảnh số
Frame(khung): Video được tạo nên bởi chuỗi các ảnh tĩnh Một chuỗi các
khung tĩnh đặt cạnh nhau tạo nên các cảnh phim chuyển động Một khung đơn là một ảnh tĩnh
Shot: là đơn vị cơ sở của video
Đặc trưng toàn cục: là đặc trưng thuộc tính thu được từ toàn bộ nền, đối
tượng
Input : 1 Video Output : các đoạn video và các keyframe tương ứng
II.Hệ thống
1.Cách xây dựng hệ thống
Từ video, tính histogram màu của 2 frame liên tiếp nhau, sau đó tính khoảng cách của của chúng
Từ khoảng cách, ta chọn ngưỡng để tìm ra các điểm là điểm chuyển cảnh
Từ điểm chuyển cảnh, ta tìm được các shot, keyframe là frame nằm ở giữa shot
2.Cách tính đặc trưng và khoảng cách
2.1 Tính Histogram:
Tính trên từng frame của video histogram màu trên 3 kênh màu 0,1,2 với mỗi kênh màu 32 bin/ dải [0-256]
Sử dụng hàm: cv2.calcHist(images, channels, mask, histSize, ranges[,
hist[, accumulate]]) → histogram của OpenCV
Trong đó: images: mảng nguồn để tính Channels: Danh sách các kênh màu để tính toán mask: mặt nạ tùy chọn
histSize:Kích thước của histogram ranges:kích thước của dải màu hist:histogram đầu ra
accummulate: flag tích lũy Nếu nó được thiết lập, biểu đồ sẽ không bị xóa trong khi bắt đầu khi nó được phân bổ Tính năng này cho phép bạn tính một biểu đồ đơn từ một vài mảng hoặc để cập nhật biểu đồ theo thời gian
Trang 52.2 Tính khoảng cách giữa histogram:
Tính trên 2 frame liên tiếp (toàn bộ video)
Sử dụng hàm: cv2.compareHist(H1, H2, method)
Trong đó: H1: histogram thứ 1 H2: histogram thứ 2
Method: có thể là 1 trong số các phương pháp:
• CV_COMP_CORREL Correlation
• CV_COMP_CHISQR Chi-Square
• CV_COMP_INTERSECT Intersection
• CV_COMP_BHATTACHARYYA Bhattacharyya distance
• CV_COMP_HELLINGER Synonym for CV_COMP_BHATTACHARYYA
• Hệ thống chúng em xây dựng có khoảng cách được tính theo khoảng cách Bhattacharyya
2.3 Chọn ngưỡng cut:
Đây là vấn đề quan trọng và khó khăn nhất Nếu lấy ngưỡng thấp thì 1 shot
có thể bị chia thành nhiều shot, nếu lấy ngưỡng cao thì nhiều shot bị gộp thành 1 shot
Ở đây, chúng em sử dụng 2 phương pháp để so sánh:
• Twin comparisons (2 ngưỡng so sánh )
• Adaptive Threshold (ngưỡng thích nghi)
2.3.1 Twin comparisons (2 ngưỡng so sánh )
Chọn 2 ngưỡng, 1 ngưỡng t_c cho chuyển cảnh đột ngột 1 ngưỡng t_s cho chuyển cảnh từ từ
• Nếu khoảng cách vượt ngưỡng t_c => đó chính là điểm chuyển cảnh
• Nếu khoảng cách vượt ngưỡng t_s => đó có thể là điểm chuyển cảnh
từ từ
• Lấy frame tại điểm này để tham chiếu, tính khoảng cách của các frame phía sau với frame này, nếu vượt qua t_c thì frame phía sau đó
là điểm chuyển cảnh
• Chọn t_c, t_s thế nào:
Trang 6o t_c: lấy trung bình 2% các giá trị lớn nhất của khoảng cách
o t_s: lấy trung bình 10% các giá trị lớn nhất của khoảng cách
• Tính đến bao nhiêu frame sau frame được tham chiếu:
o 24 frame
2.3.2 Adaptive Threshold (ngưỡng thích nghi)
• Chọn ngưỡng thích nghi dựa trên các khoảng cách lân cận
• Ngưỡng tại 1 điểm: a* (trung bình khoảng cách tại các điểm lân cận của nó
và chính nó) + b*(một mức tăng)
• Chọn bao nhiêu điểm lân cận:
o Ở đây chọn 2 điểm trước, 2 điểm sau, và chính nó là 5
• Chọn mức tăng là bao nhiêu:
o Mức tăng nếu cố định sẽ không phù hợp với các video khác nhau => chọn theo thông số toàn cục
o Sau khi thống kê với standard deviation, mean, median trên toàn cục, nhóm chọn standard deviation làm mức tăng
Ngưỡng = a*trung bình cục bộ + b*độ lệch chuẩn toàn cục
Hình bên trên thể hiện các tính ngưỡng, đường màu xanh là giá trị khoảng cách, đường màu đỏ là giá trị ngưỡng, tương ứng mỗi điểm có 1 ngưỡng cho nó
Hệ thống tự động chọn các giá trị a=2, b=1: Giá trị được thống kê khá tốt trên nhiều video
Tuy nhiên, có thể điều chỉnh theo giá trị mong muốn
2.4 Tìm key frame
Từ các điểm chuyển cảnh ở trên, tìm ra được các frame đầu và frame cuối mỗi shot
Key frame được chọn là frame ở giữa shot đó
Trang 73 Cách lưu dữ liệu
Các keyframe, frame đầu và frame cuối mỗi shot và đoạn shot sẽ được trích
rút ra và được lưu vào trong thư mục /home/{user}/video_database/{ten_video}
trong Linux, chúng em chưa làm trên window
Ví dụ: /home/oanhnt/video_database/anni001
III Kết quả cài đặt
1 Kết quả minh họa
Ở đây lấy ở 2 video khác nhau: 1 video bóng đá và một video về phi hành gia Chúng em test trên nhiều video nhưng do giới hạn báo cáo, nên chỉ đưa một vài minh họa
1.1.Twin comparison
Một vài kết quả tốt
Một vài kết quả kém:
1.2 Adaptive threshold
Một vài kết quả tốt
Trang 8Một vài kết quả kém
2.Phân tích đánh giá kết quả
Đánh giá kết quả trên 10 video từ các trang Youtube,
https://open-video.org/results.php?genre=Documentary
Twin Comparison:
t_c = trung bình 2% các khoảng cách lớn nhất t_s = trung bình 10% các khoảng cách lớn nhất
Độ chính xác : 51,7%
Độ phủ: 84,8%
Adaptive Threshold:
Chọn a = 2, b =1 hay:
Ngưỡng = 2*trung bình cục bộ + độ lệch chuẩn toàn cục
Độ chính xác: 55,3%
Độ phủ: 82.7 %
Khi thực hiện test trên nhiều video khác nhau, chúng em thấy việc phát hiện các chuyển cảnh đột ngột của 2 video là tương đối tốt, các chuyển cảnh dần dần thì tùy từng video hoặc các đoạn trong video mà các twin comparison hoặc adaptive threshold tốt hơn Tuy nhiên, nếu lấy trung bình thì adaptive sẽ thường tốt hơn
Với hai tham số a, b được sử dụng trong bước tính khoảng cách
Trang 9• Nếu như ta tăng a,b lên thì số shot được cắt sẽ ít hơn, thời lượng shot nhiều hơn và trong 1 shot chứa nhiều shot khác
• Nếu như ta hạ a,b xuống thì số shot được cắt sẽ nhiều hơn, thời lượng shot ngắn hơn
Không thực sự có cách nào trong 2 cách hoàn hảo cho tất cả video,
• đối với adaptive thì chọn các tham số a và b hợp lý có thể điều chỉnh được độ chính xác
• Đối với twin thì thay đổi các tham số t_c, t_s theo số % khoảng cách tính trung bình
IV.Kết luận
Trong quá trình học tập môn học cơ sở dữ liệu đa phương tiện, cô Nguyễn Thị Oanh đã tận tình giảng dạy chúng em, cung cấp cho chúng em kiến thức để hoàn thiện bài tập lớn nói riêng và cung cấp kiến thức cơ sở dữ liệu đa phương tiện nói chung.Do còn thiếu kiến thức, cũng như kỹ năng nên bài tập còn nhiều hạn chế Mong nhận được sự góp ý của cô và các bạn!
Chúng em chân thành cảm ơn! Nhóm sinh viên thực hiện
Trang 10Tài liệu tham khảo
[1] Nguyễn Thị Oanh – Slide hệ cơ sở dữ liệu đa phương tiện
[2] http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html