Dự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMANDự doán chuyển động của bàn tay sử dụng bộ lọc KALMAN
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG - Trần Văn Hiệu DỰ ĐOÁN CHUYỂN ĐỘNG CỦA BÀN TAY SỬ DỤNG BỘ LỌC KALMAN Chuyên ngành: Kỹ thuật Viễn thông Mã số: 60.52.02.08 TÓM TẮT LUẬN VĂN THẠC SĨ HÀ NỘI - 2016 Luận văn đƣợc hoàn thành tại: HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG Ngƣời hƣớng dẫn khoa học: TS Nguyễn Ngọc Minh Phản biện 1: …………………………………………………………………… Phản biện 2: …………………………………………………………………… Luận văn bảo vệ trước Hội đồng chấm luận văn thạc sĩ Học viện Công nghệ Bưu Viễn thông Vào lúc: ngày tháng năm Có thể tìm hiểu luận văn tại: - Thư viện Học viện Công nghệ Bưu Viễn thông LỜI MỞ ĐẦU Ngày nay, lĩnh vực thị giác máy tính, nhận dạng cử bàn tay chủ đề quan tâm nghiên cứu mô hình nhận dạng cử có tiềm ứng dụng lớn việc tương tác với máy tính, ví dụ môi trường thực tế ảo, điều khiển robot, trò chơi tương tác, … Trong hệ thống nhận dạng cử chỉ, theo vết chuyển động bàn tay công việc quan trọng, cần phải phát bám sát vị trí bàn tay chuỗi hình ảnh liên tiếp Có nhiều hướng tiếp cận khác liên quan đến việc phát bám sát bàn tay chuyển động, số phương pháp đề cập tài liệu tham khảo [3] như: phương pháp phát theo vết dựa vào màu sắc dùng thuật toán MeanShift [28], CamShift [12] hay hướng tiếp cận theo đặc trưng góc cạnh Cox Hingorani sử dụng phương pháp Multiple Hypothesis Tracking [17], kết hợp “particle filters” kỹ thuật tính toán xác suất MacCormick Blake [18] Hướng tiếp cận phương pháp xây dựng mô hình nhiều tác giả thực hiện, chẳng hạn Anurag Mital Mikos Paragios [8] dùng phương pháp ước lượng mật độ hàm nhân thích nghi (adaptive kernel density estimation) để tính toán Phương pháp đánh giá tốt mặt không gian lưu trữ việc tính toán thời gian thực hạn chế tính toán phức tạp tốc độ chậm Hiện nay, hướng tiếp cận nhiều người hướng đến sử dụng lọc Kalman [16] [20] để dự đoán chuyển động đối tượng quan sát kết hợp lọc Kalman với thuật toán MeanShift [13] hay CamShift [5] nhằm mục đích nâng cao khả việc bám sát Nhìn chung, hướng tiếp cận có ưu nhược điểm riêng hướng tới việc nâng cao độ xác, tăng tốc độ phát bám sát đối tượng, đảm bảo tính thời gian thực, … Trong đó, lọc Kalman biết đến phương pháp phổ biến sử dụng cho hệ thống theo vết mục tiêu chuyển động nói chung hệ thống theo vết bàn tay nói riêng Bộ lọc Kalman [16] giới thiệu lần năm 1960, mà R.E Kalman xuất báo tiếng mô tả giải pháp đệ quy để giải vấn đề lọc liệu tuyến tính rời rạc Kể từ đó, có ưu điểm lớn tính toán, lọc Kalman chủ đề nhận ngày nhiều nghiên cứu ứng dụng, đặc biệt hệ thống định vị, dẫn đường Bộ lọc Kalman thuật toán dự đoán, cho phép ước lượng trạng thái khứ, chí tương lai [16], nhận thấy khả ứng dụng cao lọc Kalman vào việc dự đoán vị trí bàn tay di chuyển nên em lựa chọn đề tài “Dự đoán chuyển động bàn tay sử dụng lọc Kalman” cho luận văn Nội dung luận văn chia làm chương: Chƣơng 1: Tổng quan hệ thống theo vết đối tƣợng chuyển động Ở chương này, học viên trình bày cách tổng quan vấn đề liên quan đến việc theo vết đối tượng nói chung, bao gồm: trình theo vết đối tượng số nhóm phương pháp theo vết đối tượng phổ biến Trong tập trung vào phương pháp theo vết đối tượng sử dụng thuật toán dự đoán, bật số giải thuật sử dụng lọc Kalman Chương trình bày chi tiết sở toán học dạng lọc Kalman, làm sở cho việc theo vết bàn tay chương Chƣơng 2: Sử dụng lọc Kalman để theo vết vị trí bàn tay Với đối tượng cụ thể bàn tay chuyển động, chương này, học viên đề xuất sử dụng đặc trưng HaarLike kết hợp với thuật toán AdaBoost để phát bàn tay Sau sử dụng lọc Kalman để theo vết vị trí bàn tay chuyển động qua khung hình theo thời gian thực Tiếp theo, học viên trình bày trình xây dựng phần mềm sử dụng thư viện OpenCV môi trường Windows kết thực nghiệm theo vết bàn tay chuyển động Chƣơng 3: Ứng dụng hệ thống theo vết bàn tay để điều khiển thiết bị Từ hệ thống theo vết bàn tay xây dựng kiểm thử chương 2, chương học viên trình bày việc ứng dụng hệ thống để điều khiển động cơ, qua điều khiển webcam giám sát quay theo hướng khác CHƢƠNG 1: TỔNG QUAN VỀ THEO VẾT ĐỐI TƢỢNG CHUYỂN ĐỘNG 1.1 Giới thiệu chung Theo vết đối tượng nhiệm vụ quan trọng lĩnh vực thị giác máy tính Sự phát triển mạnh mẽ máy tính có tốc độ cao dung lượng lớn, phổ biến camera video chất lượng cao giá thành ngày thấp, nhu cầu ngày lớn phân tích video tự động, … tạo nhiều quan tâm thuật toán theo vết đối tượng Có ba bước quan trọng phân tích video là: phát đối tượng chuyển động cần quan tâm, theo vết đối tượng qua khung hình, phân tích đối tượng theo vết để nhận hành vi chúng Ở dạng đơn giản nhất, theo vết định nghĩa dự đoán quỹ đạo chuyển động đối tượng mặt phẳng ảnh di chuyển xung quanh khung cảnh Nói cách khác, theo vết xem xét việc gán nhãn cho đối tượng theo vết khung hình khác video Ngoài ra, phụ thuộc vào lĩnh vực theo vết, theo vết cung cấp thông tin đối tượng phương hướng, diện tích hay hình dạng đối tượng Có nhiều phương pháp tiếp cận khác đề xuất cho vấn đề theo vết đối tượng chuyển động Điểm khác biệt chủ yếu phương pháp dựa cách mà họ giải câu hỏi: Biểu diễn đối tượng cách phù hợp với việc theo vết? Các đặc trưng ảnh sử dụng? Sự chuyển động, vẻ bề ngoài, hình dạng đối tượng nên mô hình hóa nào? Câu trả lời cho câu hỏi phụ thuộc vào việc theo vết đối tượng thực bối cảnh hay môi trường cuối thông tin theo vết sử dụng vào mục đích Có nhiều phương pháp theo vết đối tượng để xuất để cố gắng tìm lời giải đáp phù hợp cho câu hỏi kịch khác Ở chương này, học viên trình bày cách tổng quan số nhóm phương pháp theo vết đối tượng phổ biến, tập trung vào phương pháp theo vết đối tượng sử dụng thuật toán dự đoán, bật số giải thuật sử dụng lọc Kalman 1.2 Theo vết đối tƣợng chuyển động 1.2.1 Mô hình tổng quát hệ thống theo vết đối tượng Trong lĩnh vực thị giác máy tính, qúa trình theo vết đối tượng chuyển động trình lặp bao gồm số bước sau: thu nhận liệu, tiền xử lý, phát đối tượng, theo vết đối tượng định điều khiển Camera video số Đọc hình ảnh Lặp lại Bộ lưu trữ Tiền xử lý ảnh Xuất lệnh điều khiển Phát đối tượng Theo vết đối tượng Âm thanh, Các cấu chấp hành, v.v Hình 1.1: Mô hình tổng quát hệ thống theo vết đối tƣợng 1.2.2 Biểu diễn đối tượng 1.2.3 Lựa chọn điểm đặc trưng đối tượng để theo vết Lựa chọn đặc trưng phù hợp đóng vai trò quan trọng việc theo vết đối tượng Nói chung, tính chất mà ta muốn có đặc trưng thị giác tính nhất, nghĩa đối tượng có đặc trưng để phân biệt cách dễ dàng không gian có nhiều đối tượng Thông thường, thuật toán theo vết sử dụng kết hợp nhiều đặc trưng lại với để biểu thị xác đối tượng mong muốn theo vết Chi tiết điểm đặc trưng thị giác liệt kê tài liệu tham khảo [9] sau: Đặc trƣng màu sắc Đặc trƣng cạnh (edges) Đặc trƣng optical flow Đặc trƣng kết cấu (texture) 1.2.4 Phát đối tượng Mỗi phương pháp theo vết đòi hỏi chế phát đối tượng qua khung hình phát đối tượng lần xuất video Phương pháp tiếp cận chung cho việc phát đối tượng phát khung hình Tuy nhiên, số phương pháp phát đối tượng sử dụng thông tin liên quan đến thời gian thời gian tính từ chuỗi khung hình để giảm số lần phát sai Đối với việc phát đối tượng, có vài phương pháp phổ biến mô tả tài liệu [9] là: Phát điểm Phƣơng pháp trừ (Background Subtraction) Phân đoạn (Segmentation) Phƣơng pháp máy học 1.2.5 Theo vết đối tượng Mục đích hệ thống theo vết đối tượng ghi nhận thông tin quỹ đạo chuyển động đối tượng theo thời gian cách xác định vị trí khung hình video Theo vết có hai định nghĩa khác [27], xác định vị trí đối tượng hay nhiều đối tượng khoảng thời gian sử dụng camera Định nghĩa thứ hai mặt kỹ thuật theo vết vấn đề ước lượng (dự đoán) quỹ đạo hay đường đối tượng mà di chuyển quanh khung cảnh Trong tài liệu tham khảo [9], phương pháp theo vết đối tượng phân loại thành ba nhóm dựa mô hình đối tượng sử dụng hình 1.3 sau: Theo vết đối tượng Theo vết điểm Theo vết dựa nhân Bộ lọc Kalman So khớp mẫu Bộ lọc Partical Mean Shift Multiple Hypothesis Tracking Theo vết dựa bóng Theo vết dựa đường viền So khớp hình dạng Support Vector Machine Layering Based Tracking Hình 1.3: Một số phƣơng pháp theo vết đối tƣợng 1.3 Tổng quan lọc Kalman Bộ lọc Kalman phương pháp hiệu để ước lượng trạng thái, dự đoán trạng thái đối tượng mô hình trạng thái, ước lượng hàm mật độ xác suất hậu nghiệm mô hình quan sát Khi đặc tính động trạng thái đối tượng (mô hình trạng thái mô hình quan sát) đáp ứng điều kiện tuyến tính có phân bố Gauss, lọc Kalman đạt giải pháp tối ưu với bình phương lỗi tối thiểu [21] Ý tưởng lọc Kalman sử dụng rộng rãi từ giới thiệu lĩnh vực theo vết đối tượng video Trong theo vết đối tượng video, lọc Kalman thường sử dụng nhiễu Gauss để biểu diễn bất định mô hình trạng thái mô hình quan sát sử dụng tính bất định để làm cân cách tự động tác động quan sát dự đoán đến kết việc theo vết Nếu xuyên nhiễu chuỗi video không nhiều, xấp xỉ tính bất định trạng thái đối tượng mô hình Gauss hợp lý Tuy nhiên, có xuyên nhiễu mạnh chuỗi video, việc sử dụng lọc Kalman không hợp lý Để giải vấn đề theo vết hệ thống phi tuyến tính, giải thuật Kalman mở rộng (Extended Kalman Filter – EKF) đề xuất EKF cung cấp phương pháp tuyến tính hóa cho hệ thống phi tuyến, sau theo vết Kalman Filter Bộ lọc Kalman mở rộng có lợi tính toán đơn giản, hệ thống có bậc phi tuyến cao, lọc Kalman mở rộng không thực tốt Bộ lọc Unscented Kalman Filter (UKF) phương pháp tiếp cận khác cho hệ thống phi tuyến Nó giới thiệu lọc Monte Carlo sử dụng tập điểm mẫu rời rạc để mô tả giá trị trung bình phương sai hàm mật độ xác suất hậu nghiệm hàm trạng thái Nó đạt hiệu lọc hệ thống phi tuyến việc tránh xử lý trực tiếp tuyến tính hệ thống phi tuyến 1.4 Bộ lọc Kalman tiêu chuẩn 1.4.1 Hệ thống mô hình quan sát Bộ lọc Kalman giải toán tổng quát cố gắng ước lượng trạng thái x n trình điều khiển rời rạc theo thời gian mô tả phương tình sai phân tuyến tính ngẫu nhiên (1.1) mô hình không gian trạng thái thể hình 1.4: xk 1 Fk xk Bk uk wk (1.1) zk H k xk vk (1.2) Hình 1.4: Mô hình không gian trạng thái 1.4.2 Nguồn gốc tính toán lọc 1.4.3 Điều kiện không chệch 1.4.4 Độ lợi Kalman 1.4.5 Tổng hợp công thức Các phương trình lọc Kalman chia thành hai nhóm: cập nhật theo thời gian (time update) cập nhật theo giá trị đo lường (measurement update) Chúng ta coi phương trình cập nhật theo thời gian phương trình dự đoán (predictor equations), phương trình cập nhật theo giá trị đo lường phương trình sửa sai (corrector equations) Quá trình dự đoán xˆk 1|k Fk xˆk|k Bk uk (1.34) Pk 1|k Fk Pk |k FkT Qk (1.35) zˆk 1|k H k 1 xˆk 1|k (1.36) yk 1 zk 1 H k 1 xˆk 1|k (1.37) Sk 1 H k 1Pk 1|k H kT1 Rk 1 (1.38) Kk 1 Pk 1|k H kT1Sk11 (1.39) xˆk 1|k 1 xˆk 1|k Kk 1 yk 1 (1.40) Pk 1|k 1 I K k 1H k 1 Pk 1|k (1.41) Quá trình cập nhật 1.5 Bộ lọc Kalman mở rộng 1.5.1 Quá trình dự đoán 1.5.2 Dự đoán đo lường cải tiến 1.5.3 Quá trình cập nhật 1.5.4 Tổng hợp công thức Quá trình dự đoán: xˆk 1|k f xk , uk , k (1.55) T Pk 1|k f f Pk|k Qk x x (1.56) Quá trình cập nhật: xˆk 1|k 1 xˆk 1|k K k 1 zk 1 h xˆk 1|k (1.57) Pk 1|k 1 Pk 1|k K k 1Sk 1K kT1 (1.58) T h K k 1 Pk 1|k S k11 x (1.59) T h h S k 1 Pk 1|k Rk 1 x x (1.60) 1.6 Bộ lọc Unscented Kalman Nguyên tắc Unscented Kalman biến đổi Unscent[3] Về bản, phương pháp tính toán thống kê biến ngẫu nhiên sau biến đổi hông tuyến tính Cho biến ngẫu nhiên n chiều: x k với giá trị xˆ k trung bình ma trận hiệp phương sai Pk Mạch lọc Unscented Kalman mô tả trạng thái với tập hợp tối thiểu điểm (sigma) mẫu chọn lọc cẩn thận 2L + điểm sigma chọn xung quanh ước lượng trước đó, với L kích thước không gian trạng thái Sau trọng số xác suất gán cho điểm sigma Tiếp theo, điểm sigma biến đổi cách sử dụng biến đổi Unscent để đưa ước lượng cho biến trạng thái Biến trạng thái sau hiệu chỉnh cách biến đổi điểm sigma thông qua mô hình đo lường để tính toán độ lợi Kalman Cuối cùng, ước lượng hiệu chỉnh sử dụng độ lợi Kalman 1.6.1 Quá trình dự đoán 1.6.2 Quá trình cập nhật 1.7 Kết luận chƣơng Ở chương này, học viên trình bày cách tổng quan vấn đề liên quan đến việc theo vết đối tượng nói chung, bao gồm: mô hình tổng quát hệ thống theo vết đối tượng, cách thức biểu diễn đối tượng, lựa chọn đặc trưng để theo vết số nhóm phương pháp theo vết đối tượng phổ biến Trong số nhóm phương pháp theo vết đối tượng, phương pháp sử dụng lọc Kalman biết đến phương pháp theo vết đơn giản hiệu Cùng với dạng khác (KF, EKF UKF), lọc Kalman sử dụng hệ thống đo lường có nhiễu tuyến tính nhiễu phi tuyến 11 2.3 Giải thuật Kalman với đối tƣợng bàn tay chuyển động 2.3.1 Mô tả hệ thống Vector trạng thái trình khung hình thứ k x k xk , yk , xk , yk , T đó, xk yk vận tốc chuyển động bàn tay theo phương OX OY xk 1 Fxk Buk wk (2.1) zk Hxk vk (2.2) Trong wk N 0, Q giả sử u k t 4 t t t Q a2 t t t t 1 0 F 0 0 t 0 0 0 t 0 1 (2.4) (2.5) 1 0 H 0 0 (2.7) R E vk vkT z2 (2.8) 2.3.2 Chu trình giải thuật Chu trình lọc Kalman chu trình lặp, trình dự đoán trình cập nhật lặp lại cách tuần hoàn Quá trình dự đoán xˆk 1|k Fxˆk|k (2.9) Pk 1|k FPk|k F T Q (2.10) yk 1 zk 1 Hxˆk 1|k (2.13) Sk 1 HPk 1|k H T R (2.14) Kk 1 Pk 1|k H T ( HPk1H T R)1 Pk 1|k H T Sk11 (2.15) Quá trình cập nhật 12 xˆk 1|k 1 xk 1|k Kk 1 yk 1 (2.16) Pk 1|k 1 ( I Kk 1H ) Pk 1|k (2.17) 2.4 Xây dựng chƣơng trình phần mềm theo vết bàn tay sử dụng lọc Kalman 2.4.1 Một số hàm thư viện OpenCV sử dụng a) Hàm phát đối tượng detectMultiSale() b) Phân lớp cho lọc Kalman OpenCV 2.4.2 Chương trình theo vết bàn tay sử dụng lọc Kalman Chương trình theo vết bàn tay thiết kế theo mô hình phân lớp, gồm có lớp chính, mô tả hình 2.8 là: HandTrackingDlg, Processor, Detector, Ctracker Kalman Ở điều kiện hoạt động bình thường (người dùng không tác động vào giao diện), chương trình theo vết bàn tay chu trình lặp, thực lưu đồ thuật toán hình 2.9 Sự kiện timer Đọc ảnh Lật ảnh Phát tìm vết bàn tay Hiển thị hình ảnh Sự kiện timer Hình 2.9: Chu trình chƣơng trình theo vết bàn tay 13 Phát vùng bàn tay m_cDetector->detectObject(img); Số lượng bàn tay m_NumOfObjects = m_cDetector->GetNumOfObjects() m_NumOfObjects > Sai Đúng Tính vị trí trung tâm vùng bàn tay m_PointCenter = m_cDetector->GetPointCenter() Theo vết bàn tay m_tracker->Update(m_PointCenter) Vẽ vùng bàn tay quỹ đạo chuyển động vào ảnh Hình 2.10: Lƣu đồ thuật toán trình Phát tìm vết bàn tay Đọc file cascade hand_cascade.load(link) Sai Chưa khởi tạo theo vết? tracks.size() == Đúng Tiền xử lý ảnh cvtColor(img, frame_gray, CV_BGR2GRAY); equalizeHist(frame_gray, frame_gray); Phát bàn tay hand_cascade.detectMultiScale() Hands.size() > Sai Đúng Khởi tạo CTrack* tr = new CTrack(); tracks.push_back(tr); Tính trạng thái dự đoán Kalman Filter tracks[0]->KF->GetPrediction(); Cập nhật dự đoán Kalman Filter tracks[0]->KF->Update(); Lưu thông lại thông tin bàn tay m_lstPointCenter.push_back(PointCenter); m_lstRectsBlob.push_back(hands[0]); Cập nhật quỹ đạo Hình 2.11: Lƣu đồ thuật toán phát bàn Hình 2.12: Lƣu đồ thuật toán chƣơng trình tay theo vết bàn tay 14 2.5 Các kết thực nghiệm Trong trình thực nghiệm, học viên sử dụng file cascade tham khảo trang web [31], cho trình phát bàn tay File cascade huấn luyện để nhận dạng bàn tay nắm hình 2.13 Quá trình thực nghiệm thực phiên OpenCV 2.4.10, phần mềm Visual Studio 2013 chạy hệ điều hành Windows 7, 32 bít, 4G RAM Bắt đầu trình theo vết bàn tay, ta cần phát bàn tay khung hình riêng lẻ sử dụng hàm minSize, maxSize) detectMultiScale(image, objects, scaleFactor, minNeighbors, flags, Tham số quan trọng ảnh hưởng tới kết việc phát scaleFactor Để tìm tham số hợp lý, học viên thu cố định video, bàn tay có vị trí kích thước gần cố định, sau thay đổi tham số hàm detectMultiScale(), chạy chương trình đo thời gian thực hàm kết phát Kết thực nghiệm phát bàn tay thể bảng 2.1, kích thước cửa sổ phát khởi tạo 50x50 pixels, kết có giá trị trung bình 200 lần thực Bảng 2.1: Kết thực nghiệm phát bàn tay Kích thƣớc (pixels) Chiều Chiều Diện rộng cao tích scaleFactor Thời gian thực (ms) Tỷ lệ phát thành công 1.01 77.84 100% 146.13 146.13 21353.98 1.05 38.52 100% 146.29 146.29 21400.76 1.10 27.36 100% 145.65 145.65 21213.92 1.20 21.86 100% 148.11 148.11 21935.09 1.50 19.61 100% 182.00 182.00 33124.00 2.00 18.73 94% 192.00 192.00 36864.00 2.50 18.76 100% 150.00 150.00 22500.00 2.75 16.22 100% 182.00 182.00 33124.00 3.00 14.09 0% 0.00 0.00 Diện tích đối tượng 15 38000 36000 34000 32000 30000 28000 26000 24000 22000 20000 1.00 1.50 2.00 scaleFactor 2.50 3.00 Hình 2.14: Đồ thị thể diện tích vùng đối tƣợng đƣợc phát theo tham số scaleFactor scaleFactor = 1.01 scaleFactor = 1.1 scaleFactor = 1.5 scaleFactor = 2.0 scaleFactor = 2.5 scaleFactor = 2.75 Hình 2.15: Hình ảnh thực tế vùng bàn tay đƣợc phát Như đề cập mục 2.2.3, phần chu trình giải thuật Kalman theo vết bàn tay, ma trận hiệp phương sai nhiễu đo lường R xác định trước R đo offline cách cho số giá trị đo mẫu, khảo sát xác định biến đổi nhiễu đo lường Để khảo sát ảnh hưởng tham số nhiễu đo lường z2 đến hiệu lọc Kalman, phần thực nghiệm học viên sử dụng webcam để ghi lại video bàn tay chuyển động Từ video thu nhận được, học viên tiến hành chạy chương trình theo vết bàn tay với tham 16 số nhiễu đo lường z2 khác nhau, sau biểu diễn quỹ đạo chuyển động bàn tay trước sau sử dụng lọc Kalman thành đồ thị hình 2.16 400 Đo lường Dự đoán R = [0.01] Dự đoán R = [0.1] Dự đoán R = [0.4] Dự đoán R = [0.8] 350 Vị trí theo trục OY 300 250 200 150 100 50 150 200 250 300 Vị trí theo trục OX 350 400 450 Hình 2.16: Khảo sát tham số nhiễu đo lƣờng R khác với a2 0.5 Từ hình 2.16 ta thấy việc lựa chọn giá trị phương sai R nhiễu đo lường vk ảnh hưởng đến tốc độ ước lượng tốc độ bám sát hệ thống Điều dễ dàng nhận từ phương trình tính độ lợi Kalman K k Ta thấy K k tỉ lệ nghịch với R, vậy, giá trị R lớn tốc độ ước lượng chậm hơn, giá trị ước lượng tin tưởng vào giá trị đo Còn với giá trị R nhỏ ngược lại, tốc độ ước lượng nhanh hơn, lọc tin tưởng vào giá trị đo Quan sát hình 2.16, với giá trị R = [0.01] đường dự đoán bám sát với đường quỹ đạo đo lường, kể thời điểm vị trí thay đổi đột ngột Với giá trị R lớn độ bám sát giảm đi, đường quỹ dạo xa đường đo lường hơn, nhiên ta thấy đường quỹ đạo ước lượng với tham số R lớn mịn chịu tác động nhiễu đo lường Qua ta thấy được, việc lựa chọn thông số R nhiễu đo lường quan trọng, đòi hỏi phải dung hòa tốc độ bám sát độ phẳng kết ước lượng 17 500 400 300 200 Vị trí bàn tay theo trục OX 600 Đo lường Dự đoán 100 Bước thời gian 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 Hình 2.17: Xử lý trƣờng hợp bất thƣờng Trong trình phát có số khung hình phát phát nhầm vị trí số trường hợp bàn tay di chuyển nhanh làm phát không đáp ứng kịp gây nhiễu lớn trình theo vết Các trường hợp gọi chung trường hợp bất thường, ta cố gắng để loại bỏ trước đưa vào trình theo vết Tại khung hình xảy bất thường chuyển động, ta cập nhật dự đoán vị trí bàn tay sử dụng vị trí từ khung hình trước đó, mà không cập nhật vị trí bàn tay khung hình 2.6 Kết luận chƣơng Ở chương 2, học viên trình bày chi tiết trình phát theo vết cho đối tượng bàn tay chuyển động Trong trình bày chi tiết thuật toán phát đối tượng sử dụng đặc trưng Haar-Like kết hợp với giải thuật Adaboost để phát nhanh vùng bàn tay ảnh riêng lẻ Với vị trí vùng bàn tay phát được, học viên xây dựng mô hình toán học chương trình phần mềm cho giải thuật Kalman để theo vết bàn tay chuyển động qua khung hình thu nhận từ webcam theo thời gian thực 18 CHƢƠNG 3: ỨNG DỤNG HỆ THỐNG THEO VẾT BÀN TAY ĐỂ ĐIỀU KHIỂN THIẾT BỊ 3.1 Giới thiệu chung 3.2 Sơ đồ chức hệ thống Mô hình hệ thống sử dụng webcam, webcam sử dụng để thu nhận liệu cho hệ thống theo vết bàn tay, webcam lại gắn động để ghi lại khung cảnh xung quanh nơi cần giám sát Hình 3.1: Sơ đồ hệ thống ứng dụng theo vết bàn tay 3.3 Thiết kế hệ thống 3.3.1 Thiết kế phần cứng Sơ đồ nguyên lý kết nối phần cứng thể hình 3.7: Hình 3.7: Sơ đồ kết nối phần cứng 19 3.3.2 Thiết kế phần mềm a) Chương trình theo vết bàn tay Chương trình thiết kế theo mô hình phân lớp bao gồm lớp chương là: HandTrackingDlg, Processor, Detector, Ctracker, Kalman Filter, bổ sung thêm lớp Serial phục vụ cho giao tiếp UART máy tính board Arduino Giao diện tương tác HandTrackingDlg Serial Processor CTracker Detector Kalman Hình 3.8: Mô hình phân lớp chƣơng trình ứng dụng theo vết bàn tay Hàm truyền vị trí qua giao tiếp UART gọi trực tiếp từ lớp HandTrackingDlg Trong đó, lưu đồ thuật toán đoạn chương trình sửa lại từ hình 2.9 sau: Sự kiện timer Đọc ảnh m_cam >> frame Lật ảnh flip(frame, frame, 1) Phát tìm vết bàn tay m_cProcessor->progress(frame) Số lượng bàn tay numObject = m_cProcessor->GetNumObject(); numObject > Truyền vị trí bàn tay qua UART Hiển thị hình ảnh Sự kiện timer Hình 3.9: Lƣu đồ thuật toán chƣơng trình ứng dụng theo vết bàn tay 20 b) Chương trình Arduino Board mạch Arduino cần lập trình để nhận chuỗi tin vị trí mà máy tính gửi xuống, sau thực phân tích chuỗi tin để có thông tin vị trí bàn tay dạng số Khởi tạo UART Serial.begin(115200); Khởi tạo Servo Hori_Servo.attach(HORI_SERVO_PIN); Vert_Servo.attach(VERT_SERVO_PIN); Nhận liệu UART Serial.available() > Sai Đúng Đọc ký tự đến nhận ‘\n’ Serial.readBytesUntil('\n', readBuff, INPUT_SIZE) Phân tích để thu giá trị số parseMessage(readBuff, " ", u16PointBuff); Điều khiển Servo Hori_Servo.write(u16PointBuff[0]); Vert_Servo.write(u16PointBuff[1]); Hình 3.11: Lƣu đồ thuật toán chƣơng trình Arduino 3.4 Kết thực Trên môi trường lập trình Visual studio kết hợp với thư viện MFC tích hợp sẵn, học viên xây dựng giao diện cho chương trình hệ thống theo vết bàn tay dùng việc điều khiển webcam giám sát 21 (a) Giao diện điều khiển (b) Giao diện giám sát Hình 3.13: Giao diện ứng dụng theo vết bàn tay điều khiển động Sử dụng cổng COM ảo máy tính để “bắt” tin vị trí bàn tay truyền qua UART ta nhận kết hình 3.14 Hình 3.14: Sử dụng cổng COM ảo để “bắt” tin vị trí bàn tay Từ bước thiết kế phần cứng, học viên thiết kế mô hình thực tế hệ thống thể hình 3.15 22 (a) Webcam dùng giám sát gắn với khung động (b) Kết nối với board mạch Arduino Hình 3.15: Hình ảnh thực tế mô hình ứng dụng Qua trình chạy thực nghiệm hệ thống điều khiển, học viên thấy cấu động Servo SG90 đáp ứng tốt với chuyển động bàn tay, nghĩa với tốc độ di chuyển bàn tay, mà hệ thống theo vết phát được, động điều khiển webcam di chuyển theo vị trí mà bàn tay qua Trên thực tế tốc độ đáp ứng động Servo nhanh tốc độ theo vết bàn tay tại, theo nhà sản xuất tốc độ quay Servo 60 độ / 0.1giây Học viên thử nghiệm lập trình phần mềm Processing để đọc vị trí chuột máy tính sau gửi vị trí qua UART để điều khiển Servo nhận thấy tốc độ Servo đáp ứng theo tốc độ điều khiển chuột máy tính 3.5 Kết luận chƣơng Trong chương học viên trình bày chi tiết trình thiết kế hệ thống ứng dụng theo vết bàn tay vào điều khiển động Servo qua điều khiển webcam quay theo hướng khác Hệ thống sử dụng webcam, dùng để thu nhận liệu cho hệ thống theo vết bàn tay, webcam lại gắn với động để dùng cho mục đích giám sát Qua trình thực nghiệm học viên thấy mô hình ứng dụng đáp ứng tính thời gian thực thực nhiều điều kiện khác môi trường chiếu sáng điều kiện ảnh thay đổi 23 KẾT LUẬN VÀ KHUYẾN NGHỊ Sau thời gian gần tháng nghiên cứu với nỗ lực thân hướng dẫn tận tình thầy TS.Nguyễn Ngọc Minh, em hoàn thành luận văn “Dự đoán chuyển động bàn tay sử dụng lọc Kalman” theo nội dung yêu cầu đặt đề cương duyệt Kết quả, luận văn đạt nội dung cụ thể sau: - Trình bày cách tổng quan vấn đề liên quan đến theo vết đối tượng chuyển động lĩnh vực thị giác máy tính, bao gồm: mô hình tổng quát hệ thống theo vết đối tượng, cách biểu diễn đối tượng, lựa chọn đặc trưng để theo vết, phương pháp phát đối tượng số nhóm phương pháp theo vết đối tượng phổ biến Theo vết đối tượng vấn đề phức tạp bao gồm nhiều trình thu nhận hình ảnh, tiền xử lý, phát đối tượng cuối theo vết đối tượng Ở giai đoạn lại có nhiều phương pháp khác để thực hiện, tùy vào kịch ứng dụng mà người thiết kế định để lựa chọn phương pháp phù hợp Ví dụ hệ thống giám sát có camera cố định biết trước mô hình nền, sử dụng phương pháp trừ để phát nhanh vùng đối tượng chuyển động qua ảnh; trường hợp camera chuyển động đối tượng có hình dạng vẻ bề thay đổi trình theo vết nên sử dụng thuật toán máy học như: AdaBoost, mạng neural, định, support vector machines, … để phát đối tượng sử dụng giải thuật dự đoán lọc Kalman hay Patical để xác hóa dấu vết chuyển động đối tượng - Trình bày mô hình toán học, nguồn gốc biến thể lọc Kalman Đây phương pháp hiệu để ước lượng trạng thái, dự đoán trạng thái đối tượng mô hình trạng thái ước lượng hàm mật độ xác suất hậu nghiệm mô hình quan sát Bộ lọc Kalman tiêu chuẩn đạt giải pháp tối ưu với bình phương lỗi tối thiểu mô hình hệ thống đáp ứng điều kiện tuyến tính phân bố Gauss Trong điều kiện mô hình hệ thống theo vết phi tuyến lọc Kalman tiêu chuẩn không thực tốt nữa, ta nghiên cứu để sử dụng lọc Kalman rộng hay lọc UKF, hai biến thể lọc Kalman - Từ lý thuyết phát đối tượng lý thuyết lọc Kalman, chương luận văn, học viên đề xuất sử dụng đặc trưng Haar-like kết hợp với thuật toán AdaBoost cho phần phát bàn tay, sau xây dựng mô hình toán học lọc Kalman để theo vết vùng bàn tay chuyển động qua khung hình video 24 - Dựa sở lý thuyết phát đối tượng lọc Kalman, học viên xây dựng chương trình phần mềm theo vết bàn tay chuyển động sử dụng thư viện OpenCV môi trường Visual Studio 2013 Các tham số cài đặt cho hệ thống phân tích dựa sở lý thuyết có kết hợp với môi trường lập trình mà OpenCV Visual Studio cung cấp Từ học viên tiến hành khảo sát số giá trị khác tham số cấu thành hệ thống như: tham số scaleFactor phát đối tượng, tham số định đến tỉ lệ tăng cửa sổ tìm kiếm đối tượng; tham số thứ hai ma trận hiệp phương sai nhiễu đo lường R ma trận hiệp phương sai nhiễu trình Q lọc Kalman, hai tham số ảnh hưởng trực tiếp tới tốc độ độ bám sát hệ thống - Cũng môi trường Visual Studio 2013 học viên phát triển hệ thống theo vết bàn tay để ứng dụng việc điều khiển thiết bị điện, cụ thể học viên ứng dụng để điều khiển động Servo SG90 qua điều khiển webcam quay theo hướng khác Kết học viên xây dựng hệ thống điều khiển hoàn thiện, bao gồm giao diện điều khiển giao diện giám sát Mô hình ứng dụng hoạt động theo thời gian thực điều kiện môi trường có độ sáng khác mô hình khác Về luận văn trình bày đầy đủ nội dung từ sở lý thuyết đến nghiên cứu thực nghiệm ứng vào mô hình thực tế Tuy vậy, theo vết đối tượng vấn đề phức tạp thị giác máy tính, giới hạn phạm vi thời gian nghiên cứu, nên luận văn chưa thể phân tích cách sâu sắc tất vấn đề liên quan đến theo vết đối tượng nói chung theo vết bàn tay nói riêng Điều mở nhiều hướng phát triển cho nghiên cứu Dựa nội dung kiến thức trình bày trên, thời gian tới học viên đề xuất số hướng phát triển sau: - Về phần phát bàn tay, luận văn tham khảo file cascade huấn luyện sẵn từ trang web [30] cho trình phát bàn tay Từ thực nghiệm học viên thấy file phát tốt nhiều môi trường khác nhau, vậy, phát hình dạng bàn tay nắm số người nắm tay không chuẩn phát hoạt động chưa tốt Như vậy, muốn phát hình dạng bàn tay khác nhau, ta cần thiết phải tự huấn luyện thêm nhiều hình dạng Tuy nhiên vấn đề thách thức với hình dạng bàn tay nắm ta cần tới hàng nghìn ảnh mẫu (ảnh positive negative) để huấn luyện, muốn phát nhiều đối tượng số ảnh cần thiết tăng lên gấp nhiều lần; chưa kể đến vấn đề đối tượng lại cần phải có nhiều góc 25 quan sát khác Và huấn luyện nhiều hình dạng làm cho thời gian phát lâu không đạt yếu tố thời gian thực - Hướng phát triển liên quan đến phương pháp máy học, độ phức tạp phụ thuộc nhiều vào trình huấn luyện Trong kịch khác ta xem xét phương pháp phát khác, mà không cần bước huấn luyện như: phát cạnh, phát đường viền, phương pháp trừ nền, … - Luận văn đề xuất sử dụng lọc Kalman để dự đoán trạng thái bàn tay chuyển động trình bày lý thuyết dạng lọc Kalman Tuy nhiên trình thực nghiệm học viên khảo sát khả lọc Kalman tiêu chuẩn Trong nghiên cứu tiếp theo, việc nghiên cứu kỹ khả lọc Kalman tiêu chuẩn cần nghiên cứu thêm lọc Kalman mở rộng lọc UKF Hoặc nghiên cứu theo hướng khác sử dụng lọc Patical, lọc có khả sử dụng điều kiện hệ thống có nhiễu phi tuyến mạnh - Để tập trung vào phân tích hiệu lọc Kalman nên luận văn giả sử có bàn tay xuất khung hình Trong kịch khác ta phát triển để theo vết nhiều bàn tay xuất lúc Điều khả thi thân hàm detectMultiScale() giới thiệu luận văn phát nhiều bàn tay khung hình, nhiệm vụ gán cho bàn tay nhãn (hoặc mã) để định danh qua khung hình khác Từ đó, với đối tượng bàn tay ta sử dụng lọc Kalman để theo vết Về vấn đề gán nhãn theo vết nhiều đối tượng lúc, tham khảo giải thuật Hungarian [31] Dự đoán chuyển động bàn tay, hay theo vết bàn tay, đề tài mở cho nghiên cứu tương lai, có tiềm ứng dụng lớn lĩnh vực thị giác máy tính hứa hẹn mang đến nhiều tải nghiệm thú vị cho người Qua trình thực luận văn, hướng dẫn tận tình thầy cô, học viên thu nhiều kiến thức bổ ích, nghiên cứu rèn luyện tư khoa học Những kiến thức đạt sau trình học tập, nghiên cứu Học viện Công nghệ Bưu Viễn thông, hiểu biết thu sau hoàn thiện luận văn tốt nghiệp này, chắn giúp ích nhiều cho học viên công việc Mặc dù có nhiều cố gắng luận văn khó tránh khỏi sai sót, em mong nhận góp ý từ thầy cô để hoàn thiện Em xin chân thành cảm ơn! [...]... CHƢƠNG 2: SỬ DỤNG BỘ LỌC KALMAN ĐỂ DỰ ĐOÁN CHUYỂN ĐỘNG CỦA BÀN TAY 2.1 Giới thiệu chung Quá trình theo vết bàn tay chuyển động, được thể hiện như hình 2.1, bao gồm các bước chính là: thu nhận dữ liệu video, tiền xử lý, phát hiện bàn tay và theo vết chuyển động bàn tay Tiền xử lý Phát hiện bàn tay Theo vết bàn tay Chuỗi hình ảnh Dấu vết chuyển động Hình 2.1: Quá trình theo vết bàn tay chuyển động 2.2... xuất sử dụng bộ lọc Kalman để dự đoán trạng thái của bàn tay chuyển động và đã trình bày được lý thuyết về các dạng của bộ lọc Kalman Tuy nhiên trong quá trình thực nghiệm học viên mới chỉ khảo sát được khả năng của bộ lọc Kalman tiêu chuẩn Trong các nghiên cứu tiếp theo, ngoài việc nghiên cứu kỹ hơn nữa về khả năng bộ lọc Kalman tiêu chuẩn thì cần nghiên cứu thêm về bộ lọc Kalman mở rộng và bộ lọc. .. tuyến thì bộ lọc Kalman tiêu chuẩn không thực hiện tốt nữa, khi đó ta có thể nghiên cứu để sử dụng bộ lọc Kalman ở rộng hay bộ lọc UKF, đây là hai biến thể của bộ lọc Kalman - Từ lý thuyết về phát hiện đối tượng và lý thuyết về bộ lọc Kalman, trong chương 2 của luận văn, học viên đã đề xuất sử dụng các đặc trưng Haar-like kết hợp với thuật toán AdaBoost cho phần phát hiện bàn tay, sau đó xây dựng được... (2.16) Pk 1|k 1 ( I Kk 1H ) Pk 1|k (2.17) 2.4 Xây dựng chƣơng trình phần mềm theo vết bàn tay sử dụng bộ lọc Kalman 2.4.1 Một số hàm và thư viện OpenCV được sử dụng a) Hàm phát hiện đối tượng detectMultiSale() b) Phân lớp cho bộ lọc Kalman trong OpenCV 2.4.2 Chương trình theo vết bàn tay sử dụng bộ lọc Kalman Chương trình theo vết bàn tay được thiết kế theo mô hình phân lớp, trong đó gồm có... xây dựng được mô hình toán học của bộ lọc Kalman để theo vết vùng bàn tay chuyển động qua các khung hình video 24 - Dựa trên cơ sở lý thuyết về phát hiện đối tượng và bộ lọc Kalman, học viên đã xây dựng được chương trình phần mềm theo vết bàn tay chuyển động sử dụng bộ thư viện OpenCV trên môi trường Visual Studio 2013 Các tham số cài đặt cho hệ thống được phân tích dựa trên cơ sở lý thuyết đã có... hiện nhiều bàn tay trong một khung hình, và nhiệm vụ của chúng ta bây giờ là gán cho mỗi bàn tay một nhãn (hoặc mã) để định danh nó qua các khung hình khác nhau Từ đó, với mỗi đối tượng bàn tay ta sử dụng một bộ lọc Kalman để theo vết nó Về vấn đề gán nhãn và theo vết nhiều đối tượng cùng một lúc, có thể tham khảo giải thuật Hungarian [31] Dự đoán chuyển động của bàn tay, hay theo vết bàn tay, là một... sử dụng webcam để ghi lại một video bàn tay chuyển động Từ video đã thu nhận được, học viên tiến hành chạy chương trình theo vết bàn tay với các tham 16 số nhiễu đo lường z2 khác nhau, sau đó biểu diễn quỹ đạo chuyển động bàn tay trước và sau khi sử dụng bộ lọc Kalman thành đồ thị như hình 2.16 400 Đo lường Dự đoán R = [0.01] Dự đoán R = [0.1] Dự đoán R = [0.4] Dự đoán R = [0.8] 350 Vị trí theo trục... tượng và sử dụng giải thuật dự đoán như bộ lọc Kalman hay Patical để chính xác hóa dấu vết chuyển động của đối tượng - Trình bày được mô hình toán học, nguồn gốc và các biến thể của bộ lọc Kalman Đây là một phương pháp hiệu quả để ước lượng các trạng thái, trong đó dự đoán trạng thái của đối tượng bằng mô hình trạng thái và ước lượng hàm mật độ xác suất hậu nghiệm bằng mô hình quan sát Bộ lọc Kalman. .. lọc UKF Hoặc có thể nghiên cứu theo hướng khác là sử dụng bộ lọc Patical, bộ lọc này có khả năng sử dụng trong điều kiện hệ thống có nhiễu phi tuyến mạnh - Để tập trung vào phân tích hiệu năng của bộ lọc Kalman nên trong luận văn giả sử chỉ có một bàn tay xuất hiện trong khung hình Trong một kịch bản khác ta có thể phát triển để theo vết nhiều bàn tay xuất hiện cùng một lúc Điều này là khả thi vì như... cấu động cơ Servo SG90 đáp ứng tốt với các chuyển động bàn tay, nghĩa là với tốc độ di chuyển của bàn tay, mà hệ thống theo vết vẫn phát hiện được, thì động cơ cũng điều khiển webcam di chuyển theo đúng các vị trí mà bàn tay đi qua Trên thực tế thì tốc độ đáp ứng của động cơ Servo còn nhanh hơn tốc độ theo vết bàn tay hiện tại, vì theo nhà sản xuất tốc độ quay của Servo là 60 độ / 0.1giây Học viên cũng