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 LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI - 2016 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 LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) NGƯỜI HƯỚNG DẪN KHOA HỌC : TS.NGUYỄN NGỌC MINH HÀ NỘI - 2016 i LỜI CAM ĐOAN Tôi cam đoan công trình nghiên cứu riêng Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác Tác giả luận văn Trần Văn Hiệu ii LỜI CẢM ƠN Lời em xin chân thành cảm ơn Ban lãnh đạo Học viện Công nghệ Bưu Viễn thông, toàn thể thầy cô giáo khoa Đào tạo Quốc tế Sau đại học tạo điều kiện cho em theo học Cao học ngành Kỹ thuật viễn thông suốt năm vừa qua Thời gian học tập năm không nhiều với dạy bảo tận tình nhiệt huyết thầy cô giáo em thu nhiều kiến thức bổ ích để phục vụ cho trình thực luận văn tốt nghiệp Sau thời gian tháng tích cực nghiên cứu hướng dẫn 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” đạt yêu cầu đề cương đặt Trong trình thực hiện, thầy Nguyễn Ngọc Minh nhiệt tình hướng dẫn bảo, giúp em có định hướng rõ ràng việc nghiên cứu; nhờ góp ý quý báu thầy mà luận văn đạt kết định Thầy trực tiếp hướng dẫn mà giúp em kết nối với thầy cô giáo thuộc khoa Kỹ thuật Điện tử 1, thầy cô có nhiều kinh nghiệm nghiên cứu lĩnh vực mà em theo đuổi Em xin chân thành cảm ơn thầy cô Trong trình thực luận văn em gặp phải nhiều khó khăn kiến thức thời gian, nhờ có động viên từ gia đình, bạn bè thầy cô mà em hoàn thành luận văn với thời hạn đề Em xin chân thành cảm ơn tất người giúp đỡ em hoàn thành luận văn Cuối cùng, em xin gửi lời chúc sức khỏe tới Ban lãnh đạo Học viện thầy cô giáo, chúc thầy cô công tác tốt đạt nhiều thành tích cao công việc giảng dạy nghiên cứu khoa học iii MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN II MỤC LỤC III DANH MỤC BẢNG V DANH MỤC HÌNH ẢNH V DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT VII LỜI MỞ ĐẦU CHƢƠNG 1: TỔNG QUAN VỀ THEO VẾT ĐỐI TƢỢNG CHUYỂN ĐỘNG 1.1 Giới thiệu chung 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 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 1.2.4 Phát đối tượng 10 1.2.5 Theo vết đối tượng 12 1.3 Tổng quan lọc Kalman 14 1.4 Bộ lọc Kalman tiêu chuẩn 14 1.4.1 Hệ thống mô hình quan sát 14 1.4.2 Nguồn gốc tính toán lọc 16 1.4.3 Điều kiện không chệch 17 1.4.4 Độ lợi Kalman 19 1.4.5 Tổng hợp công thức 20 1.5 Bộ lọc Kalman mở rộng 23 1.5.1 Quá trình dự đoán 24 1.5.2 Dự đoán đo lường cải tiến 25 1.5.3 Quá trình cập nhật 26 1.5.4 Tổng hợp công thức 26 1.6 Bộ lọc Unscented Kalman 27 1.6.1 Quá trình dự đoán 27 iv 1.6.2 Quá trình cập nhật 29 1.7 Kết luận chƣơng 30 CHƢƠNG 2: SỬ DỤNG BỘ LỌC KALMAN ĐỂ DỰ ĐOÁN CHUYỂN ĐỘNG CỦA BÀN TAY 32 2.1 Giới thiệu chung 32 2.2 Phát bàn tay 33 2.2.1 Đặc trưng Haar-like 34 2.2.2 Thuật toán Adaboost 35 2.2.3 Mô hình phân tầng Cascade 36 2.2.4 Quá trình phát bàn tay sử dụng đặc trưng Haar-like 37 2.3 Giải thuật Kalman với đối tƣợng bàn tay di chuyển 38 2.3.1 Mô tả hệ thống 38 2.3.2 Chu trình giải thuật 40 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 43 2.4.1 Một số hàm thư viện OpenCV sử dụng 43 2.4.2 Chương trình theo vết bàn tay sử dụng lọc Kalman 47 2.5 Các kết thực nghiệm 53 2.6 Kết luận chƣơng 59 CHƢƠNG 3: ỨNG DỤNG HỆ THỐNG THEO VẾT BÀN TAY ĐỂ ĐIỀU KHIỂN THIẾT BỊ 60 3.1 Giới thiệu chung 60 3.2 Sơ đồ chức hệ thống 60 3.3 Thiết kế hệ thống 61 3.3.1 Thiết kế phần cứng 62 3.3.2 Thiết kế phần mềm 64 3.4 Kết thực 69 3.5 Kết luận chƣơng 72 KẾT LUẬN VÀ KHUYẾN NGHỊ 74 TÀI LIỆU THAM KHẢO 78 v DANH MỤC BẢNG Bảng 2.1: Kết thực nghiệm phát bàn tay 55 DANH MỤC HÌNH ẢNH Hình 1.1: Mô hình tổng quát hệ thống theo vết đối tượng Hình 1.2: Sự biểu diễn đối tượng [9] Hình 1.3: Một số phương pháp theo vết đối tượng 13 Hình 1.4: Mô hình không gian trạng thái 15 Hình 1.5: Sơ đồ khối lọc Kalman rời rạc .21 Hình 1.6: Quá trình lọc Kalman 21 Hình 2.1: Quá trình theo vết bàn tay chuyển động 32 Hình 2.2: Các đặc trưng Haar-like 34 Hình 2.3: Các đặc trưng Haar-like mở rộng 34 Hình 2.4: Cách tính giá trị ảnh tích phân tạ điểm (x,y) 35 Hình 2.5: Tính nhanh giá trị vùng ảnh D 35 Hình 2.6: Quá trình phát bàn tay sử dụng đặc trưng Haar-like 37 Hình 2.7: Chu trình lọc Kalman 42 Hình 2.8: Mô hình phân lớp chương trình theo vết bàn tay 47 Hình 2.9: Chu trình chương trình theo vết bàn tay 48 Hình 2.10: Lưu đồ thuật toán trình Phát tìm vết bàn tay 49 Hình 2.11: Lưu đồ thuật toán phát bàn tay 51 Hình 2.12: Lưu đồ thuật toán chương trình theo vết bàn tay 52 Hình 2.13: Hình dạng bàn tay theo vết 54 vi Hình 2.14: Đồ thị thể diện tích vùng đối tượng phát theo tham số scaleFactor 55 Hình 2.15: Hình ảnh thực tế vùng bàn tay phát .56 Hình 2.16: Khảo sát tham số nhiễu đo lường R khác với a2 0.5 .57 Hình 2.17: Xử lý trường hợp bất thường 58 Hình 2.18: Dấu vết bàn tay môi trường khác với z2 0.05; a2 0.5 .59 Hình 3.1: Sơ đồ hệ thống ứng dụng theo vết bàn tay 61 Hình 3.2: Board mạch Arduino Uno 62 Hình 3.3: Cổng chuyển đổi USB-2-COM 62 Hình 3.4: Servo SG90 .62 Hình 3.5: Bố trí Servo SG90 vào khung FPV 62 Hình 3.6: Kết nối Servo SG90 63 Hình 3.7: Sơ đồ kết nối phần cứng 64 Hình 3.8: Mô hình phân lớp chương trình ứng dụng theo vết bàn tay .65 Hình 3.9: Lưu đồ thuật toán chương trình ứng dụng theo vết bàn tay 65 Hình 3.10: Truyền vị trí bàn tay qua UART .66 Hình 3.11: Lưu đồ thuật toán chương trình Arduino 67 Hình 3.12: Nguyên lý điều khiển Servo SG90 68 Hình 3.13: Giao diện ứng dụng theo vết bàn tay điều khiển động 70 Hình 3.14: Sử dụng cổng COM ảo để “bắt” tin vị trí bàn tay 71 Hình 3.15: Hình ảnh thực tế mô hình ứng dụng 71 vii DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT Viết tắt Tiếng anh Tiếng Việt zk Observation vector at time k Vector quan sát thời điểm k Zk The set of all observation upto (and including) time k Tập hợp tất quan sát tính tới thời điểm k xk System state vector at time k Vector trạng thái hệ thống thời điểm k xˆ k |i Estimation of x at time k based on time i, k i Ước lượng x thời điểm k dựa trạng thái thời điểm i, k i x k|k Estimation error Lỗi ước lượng, xˆ k|k x k Pk Covariance matrix Ma trận hiệp phương sai Fk State transition matrix Ma trận chuyển trạng thái Bk Input (control) matrix Ma trận chuyển trạng thái đầu vào (điều khiển) Hk Output transition matrix Ma trận chuyển trạng thái đầu (ma trận quan sát) wk Process (or system, or plant) noise vector Vector nhiễu trình (hay nhiễu hệ thống, nhiễu thiết lập) vk Measurement noise vector Vector nhiễu đo lường (quan sát) Qk Process (or system, or plant) noise covariance matrix Ma trận hiệp phương sai nhiễu trình (hay nhiễu hệ thống, nhiễu thiết lập) Rk Measurement noise covariance matrix Ma trận hiệp phương sai nhiễu đo lường Kk Kalman gain matrix Ma trận độ lợi Kalman yk Innovation at time k Sự cải tiến thời điểm k Sk Innovation covariance matrix at Ma trận hiệp phương sai đổi time k thời điểm k EKF KF transition Extended Kalman Filter Bộ lọc Kalman mở rộng Kalman Filter Bộ lọc Kalman viii PCA Principal component analysis Kỹ thuật phân tích thành phần PWM Pulse Width Modulation Phương pháp điều chế độ rộng xung UKF Unscented Kalman Filter Bộ lọc Unscented Kalman 67 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 Lưu đồ thuật toán chương trình Arduino nhận tin điều khiển động thể hình 3.11 Bắt đầu chương trình, giao tiếp UART khởi tạo với tốc độ baudrate 115200 ký tự / giây Giao tiếp UART giao tiếp không đồng bộ, máy tính board Arduino quy ước để truyền nhận tốc độ Để điều khiển Servo, với board Arduino ta sử dụng thư viện Servo tích hợp sẵn môi trường lập trình Arduino Bộ thư viện Servo cho phép điều khiển lên tới 12 động lúc không yêu cầu chân điều khiển Servo phải chân PWM Giới thiệu chi tiết thư viện Servo tìm thấy trang web www.arduino.cc Về bản, nguyên lý điều khiển Servo SG90 mô tả hình 3.12 68 Hình 3.12: Nguyên lý điều khiển Servo SG90 Trong chương trình, sau nhận chuỗi tin chứa thông tin vị trí bàn tay, ta cần phân tích để thu tọa độ bàn tay dạng số Đoạn chương trình xử lý việc có tên parsePosition() sau: byte parsePosition( char *strInput, const char *delim, unsigned int *positions ) { byte numOfPositions = 0; /* Tách đoạn string trước ký tự “delim” */ char* chrSeg = strtok(strInput, delim); /* Lặp tới kết thúc chuỗi tin nhập vào */ while (chrSeg != 0) { /* Chuyển dạng string sang dạng số int không dấu */ unsigned int num = atoi(chrSeg); /* Lưu giá trị số vào mảng positions */ positions[numOfPositions] = num; /* Tách đoạn string */ chrSeg = strtok(0, delim); /* Tăng giá trị đếm lên 1*/ numOfPositions++; /* Bảo vệ mảng positions, tránh tràn số*/ if (NUM_OF_ELEMENTS < numOfPositions) break; } return numOfPositions; } 69 Trong đó: + strInput: chuỗi tin đầu vào chứa thông tin vị trí bàn tay + delim: ký tự định nghĩa phân cách tọa độ x tọa độ y bàn tay Ở ứng dụng này, delim ký tự khoảng trống (space) + positions: trỏ tới mảng lưu vị trí bàn tay dạng số kiểu int không dấu Hàm parsePosition() trả giá trị số lượng tọa độ có tin nhận Tọa độ bàn tay sau dạng số, sau tính toán để thu giá trị tương ứng dạng góc để điều khiển Servo Theo thiết kế chương trình theo vết bàn tay, ảnh đầu vào hiển thị giao diện có kích thước 640x480 Như vậy, tọa độ x có giá trị nằm khoảng từ đến 640; y nằm khoảng từ đến 480 Để điều khiển Servo ta cần ánh xạ tương ứng giá trị tọa độ sang giá trị góc quay Servo, nằm khoảng từ đến 180 độ 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 Giao diện chương trình điều khiển hiển thị hình 3.13-(a) kết thu nhận từ webcam giám sát thể hình 3.13-(b) Người dùng tương tác với giao diện điều khiển hình 3.13-(a) qua tùy chọn là: phím Play, tùy chọn webcam (Sellect Camera) phím Start Device Phím Play có tùy chọn Play Pause chương trình điều khiển Khi khởi động, chương trình mặc định chế độ Pause, người dùng cần lựa chọn webcam để thu nhận liệu bàn tay chuyển động cho hệ thống theo vết bàn tay từ tùy chọn Select Camera 70 (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 Để điều khiển động cơ, người dùng cần nhấn vào phím Start Device (sau nhấn vị trí phím hiển thị Stop Device), chương trình theo vết bàn tay máy tính gửi liệu vị trí xuống board mạch Arduino để điều khiển động Servo Khi nhấn vào Stop Device, hệ thống theo vết bàn tay hoạt động, nhiên vị trí bàn tay truyền xuống board mạch Arduino thông qua UART, điều có ý nghĩa việc giúp người điều khiển quan sát cảm thấy hệ thống theo vết hoạt động ổn định điều khiển động Khi liệu vị trí không gửi xuống board Arduino đường quỹ đạo chuyển động bàn tay có màu xanh lam (blue), liệu gửi xuống để điều khiển đường chuyển thành màu đỏ (red) để người dùng dễ dàng phân biệt hai trạng thái 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 Như vị trí bàn tay truyền qua đường UART, bước dùng Arduino đọc tin điều khiển webcam giám sát 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 71 Hình 3.14: Sử dụng cổng COM ảo để “bắt” tin vị trí bàn tay (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 Mô tả trình điều khiển: Hệ thống sử dụng dịch chuyển vị trí bàn tay để điều khiển động Servo qua điều khiển hướng nhìn webcam giám sát Khi bắt đầu chương 72 trình, người điều khiển cần lựa chọn webcam thu nhận hình ảnh bàn tay tùy chọn “Sellect Camera” giao diện điều khiển (hình 3.13(a)) Tiếp theo nhấn vào phím “Play” chương trình theo vết bắt đầu phát theo vết bàn tay, hình ảnh dấu vết bàn tay hiển thị trực quan giao diện giám sát Để điều khiển động cơ, qua điều khiển webcam giám sát, người điều khiển cần nhấn vào tùy chọn “Start Device” giao diện, đường thể dấu vết bàn tay chuyển từ màu xanh dương sang màu đỏ Ở giao diện điều khiển, vị trí bàn tay thay đổi mặt phẳng ảnh chiều có kích thước 640x480 pixels Vị trí bàn tay theo trục OX sử dụng để điều khiển Servo làm hướng nhìn webcam thay đổi theo phương ngang Vị trí bàn tay theo chiều OY sử dụng để điều khiển Servo lại qua làm hướng nhìn webcam thay đổi theo phương dọc Bởi Servo quay góc 180 độ bàn tay thay đổi mặt phẳng chiều hướng nhìn webcam thay đổi nửa không gian ba chiều phía trước mặt Một số ƣu điểm hệ thống: - Hệ thống điều khiển theo thời gian thực - Có thể hoạt động tốt môi trường phòng vào ban ngày hay ban đêm ánh sáng đèn huỳnh quang, mà không cần phải thay đổi tham số hệ thống - Có thể hoạt động ảnh thay đổi, ví dụ có chuyển động khác (sự chuyển động khuân mặt, ) xuất khung hình Các hạn chế hệ thống: - Tốc độ phát theo vết bàn tay hệ thống đạt 25 hình/giây, bàn tay dịch chuyển nhanh hệ thống bị dấu vết bàn tay dẫn đến webcam quay không hướng 73 - Trong môi trường sáng (ví dụ đèn chiếu thẳng vào webcam thu hình bàn tay) môi trường ánh sáng hệ thống không phát vị trí bàn tay, dẫn tới việc điều khiển bị sai - Giao diện hiển thị video giám sát đơn giản có hiển thị mà chưa có chế độ để tự động ghi lại hình ảnh bất thường 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 Ở chương học viên lấy ý tưởng mô hình điều khiển webcam giám sát an ninh, webcam gắn vào động cơ, từ mô hình ứng dụng này, ta thay đổi vài điểm nhỏ có mô hình ứng dụng khác thú vị hơn, ví dụ điều khiển cánh tay robot thay điều khiển webcam, điều khiển chuyển slide máy tính, … 74 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 75 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 - 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 76 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 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 77 - Để 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! Học viên thực Trần Văn Hiệu 78 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Nguyễn Thị Hoàn (2010), “Phương pháp trích chọn đặc trưng ảnh thuật toán học máy tìm kiếm ảnh áp dụng vào toán tìm kiếm sản phẩm”, Khoa Công nghệ thông tin, Đại học Công nghệ, Đại học Quốc gia Hà Nội [2] Châu Ngân Khánh, Đoàn Thanh Nghị (2014), “Nhận dạng mặt người với giải thuật Haar Like feature - Cascade of boosted classifiers đặc trưng SIFT” Tạp chí Khoa học Trường Đại học An Giang [3] Lưu Văn Quyền (2013), “Sử dụng lọc Kalman toán bám mục tiêu”, Khoa Kỹ thuật viễn thông, Học viện Công nghệ Bưu Viễn thông [4] M.T.Thành, Đ.T.Nghị, P.N.Khang, N.H.Hòa (2014), “Tiếp cận mô hình máy học cho điều khiển Robot Pioneer P3-DX bám sát đối tượng”, Hội thảo quốc gia lần thứ XVII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thông-Đắk Lắk [5] N.M.Tiến, P.X.Minh, H.T.K.Duyên (2011), “Một phương pháp sử dụng lọc Kalman kết hợp với thuật toán bám ảnh Camshift nhằm nâng cao chất lượng bám hệ thống robot tự động tìm kiếm bám bắt mục tiêu”, Hội nghị toàn quốc Điều khiển Tự động hóa – VCCA-2011 [6] N.M Việt, B.D.Hùng, L.V.Hinh, B.V.Nam, N.H.Trường, P.Việt (2011), “Nghiên cứu phát triển số kỹ thuật phát chuyển động bàn tay”, Khoa Công nghệ thông tin, Đại học Công nghiệp Hà Nội [7] T.T.Việt, T.C.Chiến, H.C.Tuấn, N.H.Nam, Đ.N.Toàn, T.Hành (2012), “Một số kỹ thuật phát hiện, bám sát đối tượng ứng dụng” Tạp chí Khoa học – Đào tạo trường Đại học Lạc Hồng 79 [8] Tài liệu tiếng Anh A Mittal and M Paragios (2004), “Motion Based Background Subtraction using Adaptive Kernel Density Estimation”, IEEE Computer Society Conference, Vol [9] Alper Yilmaz, Omar Javed and Mubarak Shah (2006), “Object tracking: A survey”, Acm Computing Surveys (CSUR) 38(4) [10] Avrim L Blum, Pat Langley (1997), “Selection of relevant features and examples in machine learning”, Amficial Intelligence 97 [11] C Harris and M Stephens (1988), “A combined corner and edge detector”, Alvey Vision Conference [12] C Zhang, Y Qiao, E Fallon, and C Xu (2009), “An improved camshift algorithm for target tracking in video surveillance”, IT and T Conference [13] D Comaniciu and V Ramesh (2009), “Mean Shift and Optimal Prediction for Efficient Object Tracking”, IEEE International Conference, Vol 3, pp 70-73 [14] D G Lowe (2004), “Distinctive image features from scale-invariant keypoints”, International Journal of Computer Vision [15] Gary R Bradski (1998), “Computer Vision Face Tracking For Use in a Perceptual User Interface”, Microcomputer Reseacher Lab, Santa Clara, CA, Intel Corporation [16] Greg Welch and Gary Bishop (2006), “An Introduction to the Kalman Filter”, Department of Computer Science University of North Carolina at Chapel Hill [17] I.J Cox and S.L Hingorani (1996), “An efficient implementation of reids multiple hypothesis tracking algorithm and its evaluation for the purpose of visual tracking”, IEEE Transactions on PAMI, 18(2), pp.138–150 80 [18] J MacCormick and A Blake (1999), “A probabilistic exclusion principle for tracking multiple objects”, InProc of 7th International Conference on Computer Vision (ICCV), pages 572–587 [19] John Canny (1986), “A Computational Approach to Edge Detection”, IEEE transactions on pattern analysis and machine intelligenc,e Vol PAMI-8, No.6 [20] M.S.M Asaari, S.A Suandi (2010), “Hand Gesture Tracking System Using Adaptive Kalman Filter”, International Conference on Intelligent Systems Design and Applications [21] Meng Li, Zemin Cai, Chuliang Wei and Ye Yuan (2015), “A Survey of Video Object Tracking”, International Journal of Control and Automation, Vol 8, No [22] Mohd Shahrimie, Mohd Asaari, and Shahrel Azmin Suandi (2012), “Real Time Hand Tracking System Using Predictive Eigenhand Tracker” Australian Journal of Basic and Applied Sciences 6(2), 190-198 [23] P Viola and M.J Jones (2001), “Robust Real-time Object Detection”, Second International Workshop on Statistical and Computational Theories of Vision [24] P Viola and M.J Jones (2004), “Robust Real-time Face Detection” International Journal of Computer Vision 57(2),pp 137–154 [25] Rainer Lienhart and Jochen Maydt (2002), “An Extended Set of Haar-like Features for Rapid Object Detection”, IEEE ICIP 2002, Vol 1, pp 900903 [26] Rainer Lienhart, Alexander Kuranov, Vadim Pisarevsky (2002), “Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection”, MRL Technical Report [27] Rupesh Kumar Rout (2013), “A Survey on Object Detection and Tracking Algorithms”, Department of Computer Science and Engineering National Institute of Technology Rourkela, India 81 [28] Y.Cheng (1995), “Mean Shift, Mode Seeking, and Clustering”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 17, No [29] Yoav Freund and Robert E.Schapire (1995), “A decisiontheoretic generalization of on-line learning and an application to boosting”, Computational Learning Theory Trang web [30] A Smorodov (2012, Jun 5) Multitarget-tracker [Online] Available: https://github.com/Smorodov [31] K Balaje (2013, Jun 27) Available: https://github.com/Balaje/OpenCV/tree/master/haarcascades [...]... phương pháp theo vết đối tượng sử dụng thuật toán dự đoán, nổi bật trong số đó là giải thuật sử dụng bộ lọc Kalman Chương này cũng trình bày chi tiết cơ sở toán học và các dạng của bộ lọc Kalman, làm cơ sở cho việc theo vết bàn tay ở chương 2 Chƣơng 2: Sử dụng bộ lọc Kalman để theo vết vị trí bàn tay Với đối tượng cụ thể là bàn tay chuyển động, ở chương này, học viên đề xuất sử dụng các đặc trưng Haar-Like... toán, bộ lọc Kalman là một chủ đề nhận được ngày càng nhiều nghiên cứu và ứng dụng, đặc biệt trong các hệ thống định vị, dẫn đường Bộ lọc Kalman là một thuật toán dự đoán, nó cho phép ước lượng trạng thái quá khứ, hiện tại thậm chí cả tương lai [16], nhận thấy khả năng ứng dụng cao của bộ 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 của bàn tay sử dụng. .. phát hiện bàn tay Sau đó sử dụng bộ lọc Kalman để theo vết vị trí bàn tay chuyển động qua các khung hình theo thời gian thực Tiếp theo, học viên trình bày về quá trình xây dựng phần mềm sử dụng bộ thư viện OpenCV trên môi trường Windows và các kết quả 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 và... Gauss, bộ lọc Kalman có thể đạt được giải pháp tối ưu với bình phương lỗi là tối thiểu [21] Ý tưởng của bộ lọc Kalman được sử dụng rộng rãi từ khi nó được giới thiệu trong lĩnh vực theo vết đối tượng video Trong theo vết đối tượng video, bộ lọc Kalman thường sử dụng nhiễu Gauss để biểu diễn sự bất định của mô hình trạng thái và mô hình quan sát và sử dụng tính bất định để làm cân bằng một cách tự động. .. thuật toán bộ lọc Kalman tiêu chuẩn bởi sơ đồ khối hình 1.5 Trong đó, bộ lọc Kalman ước lượng một quá trình bằng cách sử dụng 21 một dạng của điều khiển phản hồi (feedback control): bộ lọc ước lượng trạng thái của quá trình tại một thời điểm sau đó có được phản hồi từ các đo đạc (có nhiễu) Trạng thái đo lường z + - Sự cải tiến K Trạng thái ước lượng Sửa sai u B Trạng thái đo lường dự đoán + + + Bộ trễ... gọi là bộ lọc Kalman 1.5 Bộ lọc Kalman mở rộng Bộ lọc Kalman (KF) được Rudolf Kalman (nhà toán học người Mỹ gốc Hungari) đưa ra năm 1960 Kể từ đó đến nay, KF được coi như bộ lọc tối ưu cho ước lượng trạng thái của hệ thống biến đổi (dynamic system) tuyến tính rời rạc KF được ứng dụng rất nhiều trong các lĩnh vực xử lý tín hiệu, định vị, dẫn đường, trong toán học và thậm chí trong kinh tế Hạn chế của KF... tuyến Nó giới thiệu bộ lọc Monte Carlo trong đó sử dụng một tập các điểm mẫu rời rạc để mô tả giá trị trung bình và phương sai của hàm mật độ xác suất hậu nghiệm của hàm trạng thái Nó có thể đạt được hiệu quả lọc trong các hệ thống phi tuyến trong việc tránh xử lý trực tiếp sự tuyến tính của các hệ thống phi tuyến 1.4 Bộ lọc Kalman tiêu chuẩn 1.4.1 Hệ thống và mô hình quan sát Bộ lọc Kalman giải quyết... là sử dụng bộ lọc Kalman [16] [20] để dự đoán chuyển động của đối tượng đang quan sát và kết hợp bộ lọc Kalman với thuật toán MeanShift [13] hay CamShift [5] nhằm mục đích nâng cao khả năng của việc bám sát Nhìn chung, mỗi hướng tiếp cận đều có những ưu nhược điểm riêng và đều hướng tới việc nâng cao độ chính xác, tăng tốc độ phát hiện và bám sát đối tượng, đảm bảo tính thời gian thực, … Trong đó, bộ. .. bảo tính thời gian thực, … Trong đó, bộ lọc Kalman được biết đến như là một phương pháp phổ biến sử dụng cho các hệ thống theo vết mục tiêu chuyển động nói chung và hệ thống theo vết bàn tay nói riêng 2 Bộ lọc Kalman [16] được giới thiệu lần đầu tiên năm 1960, khi mà R.E Kalman xuất bản một bài báo nổi tiếng mô tả về một giải pháp đệ quy để giải quyết vấn đề bộ lọc dữ liệu tuyến tính và rời rạc Kể từ... 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, nổi bật trong số đó là giải thuật sử dụng bộ lọc Kalman 1.2 Theo vết đối tƣợng chuyển động 1.2.1 Mô hình tổng quát của 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 là một quá trình lặp bao gồm một số bước chính như sau: thu nhận dữ liệu,