Xây dựng hệ thống nhận biết ngôn ngữ dấu hiệu sử dụng cảm biến vi cơ điện tử

Ta có thể đọc dữliệu từBasicStampvà hiển thịkết quả trên màn hình LCD. Trong đềtài này ta sẽxửlýdữliệu trên máy tính. Nhưta đã biết với mỗi ký tựbảng chữcái đều có một trạng thái nhất định của tay. Vấn đề đặt ra ở đây là làm thếnào đểphân biệt được các ký tự đó bằng cửchỉ. Tiến hành lấy mẫu các ký tựtrong bảng chữcái tiếng việt “A, B, C, D, E, Đ, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y“

pdf63 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2499 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Xây dựng hệ thống nhận biết ngôn ngữ dấu hiệu sử dụng cảm biến vi cơ điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ông giao tiếp với nhau như những người bình thường mà dùng những cử chỉ hành động của mình để nói cho người khác hiểu. 9 Trên thực tế việc học đối với những người khiếm thính là rất khó khăn. Như ngày nay ở Việt Nam việc phổ cập giáo dục cho những người khiếm thính đã được quan tâm, nhưng vẫn còn rất hạn chế. Vì chỉ với việc phổ cập mức tiểu học phải kéo dài ít nhất là 9 năm. Nên đối việc phổ cập mức cao hơn là rất khó khăn. Đối với những người trước khi bị khiếm thính lại không biết chữ thì đòi hỏi việc đào tạo lại càng khó khăn hơn. 9 Ngôn ngữ dấu hiệu chỉ được sử dụng trong một phạm vi hẹp nên rất ít người bình thường hiểu được ngôn ngữ này. Điều này tạo nên một rào cản lớn trong giao tiếp giữa người khiếm thính và người bình thường. Người khiếm thính và người câm sẽ khó có cơ hội hoà nhập vào cộng đồng người bình thường. 9 Trên thế giới, hiện đã có nhiều nghiên cứu nhằm xây dựng các thiết bị có thể trợ giúp sự giao tiếp giữa những người khiếm thính và những người bình thường. 7 Đinh Duy Chương Khóa luận tốt nghiệp Trong khi đó, ở Việt Nam, hiện chưa có các nghiên cứu dành cho những người khiếm thính. 9 Xuất phát điểm từ đó trong đề tài này em muốn tìm hiểu và bước đầu xây dựng một hệ thống nhận biết dấu hiệu để giao tiếp với những người khiếm thính. Và từ đó giao tiếp giữa những người khiếm thính và những người bình thường được cải thiện hơn. Ngoài ra, thiết bị cũng có thể dùng trong mục đích học tập cho người khiếm thính. 1.1.2. Một số chuẩn trên thế giới và Việt Nam 9 Để thống nhất trong giao thiếp, ngôn ngữ dấu hiệu cũng có những chuẩn nhất định. Trên thế giới phổ biến nhất là ngôn ngữ ASL (American Sign Languague) của Mỹ. Với chuẩn này các chữ trong bảng chữ cái và các số tự nhiên được mã hoá hết sức đơn giản. Trong khi đó, các từ được mã hoá phức tạp hơn nhiều. Mỗi từ (khái niệm) được miêu tả bởi 5 đặc tính của ký hiệu: hình dạng bàn tay, vị trí bàn tay so với cơ thể người, hướng của bàn tay, chuyển động của bàn tay và ngón tay, biểu hiện của nét mặt và cơ thể. Hình 1a: Dấu hiệu của các chữ cái trong bảng chữ cái Hình 1b: Dấu hiệu của các chữ số tự nhiên 9 Với các quốc gia khác nhau lại có những đặc trưng ngôn ngữ khác nhau. Vì vậy, mỗi quốc gia thường có chuẩn riêng cho mình. Chuẩn ngôn ngữ dấu hiệu của Việt Nam về cơ bản là giống chuẩn của Mỹ tuy nhiên cũng có một số khác biệt. Đó là sự thêm vào đó những con dấu và có thêm một số chữ cái khác mà trong bảng trên không có như chữ Ô, Ơ, Ư, Ê, Â. Do đó ta phải tổ hợp thêm một số cử chỉ khác nữa để phân 8 Đinh Duy Chương Khóa luận tốt nghiệp biệt các chữ cái và các con số. Và một số chữ số của ta cũng khác với chữ số trong bảng trên. Hình 2: Bảng chữ cái và chữ số tiếng Việt 1.1.3. Mục tiêu của khoá luận Một thiết bị nhận biết và chuyển đổi ngôn ngữ dấu hiệu sang ngôn ngữ thông thường có thể được xây dựng theo hai phương pháp: 9 Đinh Duy Chương Khóa luận tốt nghiệp o Phương pháp nhận biết từng từ: Phương pháp này có ưu điểm là tốc độ chuyển đổi nhanh, tiện cho người sử dụng nhất. Tuy nhiên, việc xây dựng một hệ thống như vậy rất phức tạp ví dụ như: • Cần nhiều tham số đầu vào • Thuật toán xử lý phức tạp • Đòi hỏi phải có bộ từ điển • Khi có từ mới thì phải huấn luyện cho hệ thống trước o Phương pháp đánh vần: Người sử dụng sẽ đánh vần theo bảng chữ cái. Phương pháp này có nhược điểm là tốc độ chuyển đổi sẽ chậm hơn nhiều phương pháp dùng từ. Tuy nhiên, nó có một số ưu điểm sau: • Tham số đầu vào không nhiều • Có thể dùng các thuật toán tương đối đơn giản • Có thể tạo ra các từ tuỳ ý mà không cần bộ từ điển Từ các phân tích trên, ta thấy rằng phương pháp đánh vần có khả năng dễ dàng tích hợp với các bộ vi xử lý để tạo nên các thiết bị nhỏ gọn, tiện dụng cho người sử dụng. Phương pháp này cũng là tiền đề cho việc xây dựng các thiết bị sử dụng phương pháp nhận biết từng từ. Vì vậy, trong khoá luận này, em tập trung vào việc tìm hiểu xây dựng một hệ thống nhận biết ngôn ngữ dấu hiệu sử dụng phương pháp đánh vần. 1.2. Các phương pháp nhận biết ngôn ngữ dấu hiệu Để xây dựng được một hệ thống nhận biết ngôn ngữ dấu hiệu, trước hết, em xin trình bày về các phương pháp nhận biết đang được nghiên cứu trên thế giới. 1.2.1. Nhận biết ngôn ngữ bằng phân tích hình ảnh 1.2.1.1. Giới thiệu về phương pháp phân tích hình ảnh Nhận biết ngôn ngữ dấu hiệu qua video (camera) từ xa là một yêu cầu trực quan. Để đưa ra mã hình ảnh thành ngôn ngữ dấu hiệu, cần thiết phải tìm những vùng có thông tin về hình ảnh. Camera sẽ dõi sự di chuyển của những người khiếm thính và sẽ lọc ra chuỗi hình ảnh ngôn ngữ dấu hiệu phù hợp. 10 Đinh Duy Chương Khóa luận tốt nghiệp 1.2.1.2. Đặc điểm của phương pháp này 9 Người khiếm thính sử dụng phương tiện ngôn ngữ dấu hiệu để đọc và viết chính tả. Nhận biết ngôn ngữ dấu hiệu được dựa trên hình ảnh và sự di chuyển của tay. Cấu trúc trực quan của ngôn ngữ dấu hiệu có thể truyến đạt những khái niệm phức tạp nhanh chóng và chính xác. 9 Việc đề cập nhận biết trực quan là rất quan trọng cho những người khiếm thính vì khả năng của ngôn ngữ dấu hiệu là ở khoảng cách, tuỳ thuộc vào khoảng cách mà cho ta sự nhận biết chính xác hay không chính xác. Tuy nhiên vẫn có lỗi và hệ thống này có thể gây khó chịu cho người sử dụng. 9 Ngôn ngữ dấu hiệu cập nhật không nhanh, sự di chuyển cụ thể đưa ra những khái niệm và những từ . Trong những lần thực nghiệm đã đưa ra dấu hiệu hình ảnh của những từ ứng với miệng và ngôn ngữ cử chỉ. Hình dưới chỉ ra 2 khung từ 1 video clip của ngôn ngữ dấu hiệu (BSL). Hình 3: Các video clip 1.2.1.3. Phương thức 9 Thí nghiệm với 8 người khiếm thính. Trong suốt quá trình thực nghiệm hướng nhìn của mỗi người được ghi vào một video clip. 11 Đinh Duy Chương Khóa luận tốt nghiệp 9 Từ việc kiểm tra video clip hình 3. Video clip đã được đưa ra trên màn hình PC và người xem clip từ khoảng cách cố định. Sự di chuyển được ghi lại trong suốt quá trình xem sử dụng một hệ thống nhìn “Quick Glance”. Hệ thống này sử dụng tia hồng ngoại để ghi lại hình ảnh ở tốc độ 30Hz. 9 Hướng nhìn được ghi lại dưới dạng một file text và file này tương ứng với 2 phút video clip trong quá trình phân tích. 1.2.1.4. Kết quả của việc phân tích hình ảnh 9 Về mặt không gian: Việc đặt toạ độ (x,y) cho 3 sự kiện (User A, User B, User C, và các vấn đề liên quan đến khiếm thính) được thể hiện trên hình 4, hình 5, hình 6 User A Hình 4: Phân vùng trong không gian của User A User B Hình 5: Phân vùng trong không gian của User B 12 Đinh Duy Chương Khóa luận tốt nghiệp User C Hình 6: Phân vùng trong không gian của User C 9 Hình này tương ứng với video clip thứ hai, kết quả tương tự như video clip thứ nhất. Quan sát sự di chuyển của 8 vật thể sẽ biết được những điểm giống nhau. Trong mỗi trường hợp, việc quan sát được tập trung trên bề mặt của dấu hiệu video clip, thỉnh thoảng có sự trệch tới những vùng khác nhau phổ biến trên trục X qua bề mặt của dấu hiệu (User A và User C). Hai vật thể (một trong những vật thể đó là User B) là trung tâm rất chuẩn xác với một vài sự trệch hướng. Độ chính xác là 10x10 pixel trong mỗi một hình ảnh. Những điểm chính xác chủ yếu là quanh bề mặt trung tâm của dấu hiệu. 9 Hình 8 chỉ ra trung tâm User B, được phủ vói những vòng đưa ra mô tả góc quay quanh một điểm trung tâm Hình 7: Với User B 13 Đinh Duy Chương Khóa luận tốt nghiệp 9 Vòng tròn là tâp trung vị trí trung bình của tất cả các mẫu và được vẽ ở góc cố định 2.5o, 5o và 10o từ trung tâm và được làm sạch từ hình này. Phần lớn điểm quan sát nằm trong khoảng 2.5o của trung tâm: hơn 75% các điểm rơi vào vòng tròn này với User A và C, hơn 90% cho User B. 9 Về mặt thời gian: Hình 8 chỉ ra hình ảnh của User A trong video clip thứ hai. Giá trị trung bình của trục Y là 185 và những điểm làm sạch được chỉ ra. Hướng nhìn được tập trung chủ yếu quanh vị trí này, thỉnh thoảng cũng có sự sai khác. Sự sai khác này là từ phần cuối đặc trưng ít hơn 0.5 giây và được tập trung trong trục X thông qua điểm trung tâm. Trong chuỗi hình ảnh, dấu hiệu được nhìn thấy bên dưới Hình 8: Tín hiệu thu được từ hình ảnh 1.2.1.5. Phân tích hệ số dư thừa 9 Kiểm tra video clip được mã hoá sử dụng mã hoá Baseline H.263 ( với bước lượng tử cố định là 8) và số hệ số non-zero vẫn trong mỗi block sau sự bù chuyển động, DCT và bước lượng tử được đếm. Hình 9 mô tả tổng số hệ số lượng tử dư thừa non-zero trong mỗi vị trí block cho những khung inter-code 200 của chuỗi. 14 Đinh Duy Chương Khóa luận tốt nghiệp Hinh 9: Hệ số dư thừa 9 Hình trên còn chỉ ra hệ số non-zero được tập trung quanh đầu, trên cơ thể và cánh tay của người ra dấu hiệu. Điều này có thể được đáp ứng từ vị trí camera và người ra hiệu không thể di chuyển tới vị trí đứng của họ trong chuỗi . Tuy nhiên sự tập trung cao của hệ số non-zero ở những vùng trái và phải thấp hơn của chuỗi. Người ra hiệu di chuyển cánh tay của họ tới một số vị trí nhưng năng lượng dư thừa phần lớn giảm xuống từ sự di chuyển tay trong hai vùng này. Hệ số năng lượng dư thừa trong vùng này liên quan tới mức thấp. 1.2.1.6. Kết luận Từ kết quả thực nghiệm người sử dụng ngôn ngữ dấu hiệu đã đưa ra một sự phù hợp trong phương pháp nhận biết của họ, điều này phù hợp với tất cả các vật thể và tương ứng với sự quan sát trong khi nghiên cứu ngôn ngữ dấu hiệu. Việc chọn vị trí sẽ cải thiện chất lượng của việc mã hoá chuỗi ngôn ngữ dấu hiệu hình ảnh. Sự quan tâm của người sử dụng là tập trung trên những vùng có đặc điểm tốt quanh người ra hiệu, với những cử chỉ bất ngờ của tay người. Những dấu hiệu này có thể dành những vùng ưu tiên của hình ảnh có trong không gian và biểu thị thời gian. 1.2.2. Nhận biết bằng cảm biến Ở đây người ta dùng một hệ gồm nhiều sensor gắn với vi điều khiển và máy tính. Thiết bị này được mô ta bởi hình sau. 15 Đinh Duy Chương Khóa luận tốt nghiệp Hình 10: Sơ đồ kết nối hệ đo với vi điều khiển và máy tính Hệ nhận biết bằng cảm biến bao gồm các thành phần: 9 Một máy tính PC 9 Một vi điều khiển 9 Hệ thống loa 9 Hệ sensor 1.2.3. Nguyên tắc vận hành của việc sử dụng cảm biến 1.2.3.1. Hệ thống 9 Hệ sensor sẽ truyền tín hiệu cho vi điều khiển. Vi điều khiển sẽ đọc tín hiệu này và truyền dữ liệu cho máy tính sử lý và kết quả sẽ được đưa ra loa. Hoặc hiển thị dạng text. 9 Cụ thể là từ tín hiệu xung của hệ sensor vi điều khiển sẽ đọc tín hiệu đó và xử lý, tiếp theo vi điều khiển sẽ gửi dữ liệu dưới dạng ASCII cho máy tính qua cổng COM. 9 Thành phần của hệ thống là Accele Glove, cung cấp cách đo vị trí của các ngón tay tương ứng với véc tơ trọng trường. 9 Bằng việc sử dụng lối ra số của sensor gia tốc MEMS gắn trên các ngón tay và sử dụng vi điều khiển. Máy tính PC được sử dụng cho việc phân tích dữ liệu và thực hiện các thuật toán. Khi lập trình với các thuật toán, vi điều khiển sẽ chuyển tới bộ tạo ngưỡng tiếng nói với những ký tự ASCII, bởi vậy mà trên thực tế người ra hiệu những từ “speaks out” và những câu ngắn. 16 Đinh Duy Chương Khóa luận tốt nghiệp 1.2.3.1.1. Định vị sensor Tay người có 17 điểm tích cực trên cổ tay: 3 trên mỗi ngón trỏ, ngón giữa, ngón nhẫn và ngón út, 3 trên ngón cái và pitch roll trên cổ tay. Những điểm cần thiết giữa những dấu hiệu là nhân tố chủ yếu, nếu hệ thống có thông tin đầy đủ, không rõ ràng sẽ giảm tốc độ nhận dạng. Gắn liền với 5 trục sensor trên đầu ngón tay, những điểm của ngón tay và điểm đầu của ngón tay cái, ngoại trừ tình trạng có nhiều nghĩa cho 26 dáng điệu của bảng chữ cài ASL. Việc định vị trục được chỉ ra trên hình sau: Hình 11: Các trục trên sensor khi gắn lên tay 1.2.3.1.2. Tín hiệu thu được Vị trí đọc được là chu kỳ của tín hiệu lối ra. Khi một sensor ở vị trí ngang chu kỳ là 50%. Khi góc nghiêng của nó từ +90o tới –90o chu kỳ biến đổi từ 37.5% tới 62.5%. Vi điều khiển giám sát lối ra và đo trong khoảng thời gian lối ra ở mức cao, nếu sử dụng bộ đếm 10 ms thì giải đo được sẽ là từ (375/10) = 37 count với 90o tới tối đa là (625/10) = 62 count với –90o, một span là 25 count. Sự không tuyến tính và bão hoà hai đặc tính này của thiết bị làm giảm dải sử dụng xuống còn . Vì thế độ phân giải là 6.5 o80± o. Lỗi của một số lần đo được tìm thấy là 1± bít, hay . Sai số này lớn hơn so với Wise (5 o5.6± o) và nhỏ hơn Quam (11o). CyberGlove có thể được hiệu chỉnh đo những dải khác nhau của những biến tố sử dụng 8 bit, nhưng độ chính xác bị giảm xuống, giảm sự lặp lại. 1.2.3.1.3. Thu thập dữ liệu 9 Độ rộng 10 xung được đọc bởi vi điều khiển, bắt đầu với trục X tiếp theo là Y lần đầu là ngón cái. Đưa ra 10 ms là tập trung tất cả các vị trí của ngón tay. Trong suốt quá trình phân tích trạng thái của các ngón tay thì vị trí được gửi như một gói dữ liệu 10 byte qua cổng nối tiếp của PC và được ghi lại dưới file text. 17 Đinh Duy Chương Khóa luận tốt nghiệp 9 Mọi ký tự dấu hiệu của bảng chữ cái. Ký tự “J” và “Z” được lấy mẫu ở vị trí cuối cùng. Điều này cho phép bắt được những sự khác nhau và những người ra hiệu tương tự trong 26 file với ma trận 10x10. 1.2.3.2. Lựa chọn tính năng và nguồn gốc 9 Tập hợp 10 quá trình đo, hai trục trên một ngón tay, đưa ra một véc tơ của dữ liệu. Như đã được chỉ ra trong lời phần trên: Uras đưa ra đặc điểm diễn biến của sự việc, Lamar rút ra được “eigenvalues” và “eigenvalue” từ những hình ảnh. Kramer không thử đặc tính ban đầu, nhưng làm việc với véc tơ dữ liệu, như khi Shahabi làm, ông khẳng định lần đầu tiên sử dụng hàng loạt quyết định cho việc phân tích dữ liệu căn cứ vào xúc giác, ông cũng khẳng định lần đầu tiên sử dụng “Bavesian Classifier” cho phân tích dữ liệu căn cứ vào xúc giác và sử dụng việc so sánh “Back Propagation Neural Networks” với “Bayesian Decision Tree” để nhận ra dữ liệu tĩnh. Trái với kết quả này ông cho rằng “Decision trees” không phù hợp với việc nhận dạng dấu hiệu, ta phải chỉ rõ và xác minh sự trái ngược này. 9 Mục tiêu là rút ra một tập hợp những đặc điểm để đưa ra cử chỉ mà không có sự tối nghĩa trong “Posture Space”. Nếu Stokoe và Costello đã định nghĩa cử chỉ như là sự kết hợp của hình ảnh và hướng của tay, và hai tính năng này phù hợp để đưa ra một số ký tự dễ hiểu, sau đó việc xử lý rút ra những đặc trưng sẽ lấy lại hai thành phần này từ dữ liệu đơn giản. Accele Glove khác với tất cả thiết bị khác được tìm thấy, trong đó nó có thể không chỉ đo độ uốn của ngón tay mà còn xác định hướng của tay mà không cần sensor khác ở bên ngoài như bộ theo dõi từ trường. Hay bộ theo dõi siêu âm của Mattel’s. Ở đây ta định nghĩa một véc tơ P trong không gian cử chỉ. 9 P=[hình ảnh tay, hướng lòng bàn tay] 9 P là sản phẩm của véc tơ dữ liệu đơn giản D bằng việc chuyển đổi ma trận T: P=D*T=[Xg Yg yi] (1) 9 Véc tơ dữ liệu đơn giản ở đây là: D = [xt yt xi yi xm ym xr yr xp yp] (2) 9 T = ngón cái, I = ngón trỏ, M = ngón giữa, R = ngón nhẫn, P = ngón út 9 Hình ảnh tay được chia thành hai phần con, Xg và Yg. Phần đầu tiên đo độ cuộn tương ứng với cổ tay, phần thứ hai đo độ lên xuống của ngón tay. Thành phần khác của không gian cử chỉ là hướng của lòng bàn tay yi, lớp cử chỉ chia thành 3 lớp 18 Đinh Duy Chương Khóa luận tốt nghiệp con: closed, horizontal và vertical (hay open). Chỉ số vị trí y được sử dụng cho những cử chỉ này. Ma trận chuyển vị: T T 0000001000 1010101010 0101010101 = (3) 9 Tổng hợp các thành phần cử chỉ { }∑ ∈= prmitnXX ng ,,,,, { }∑ ∈= prmitnyY ng ,,,,, [ ]4Datayi = 9 Những thành phần trên được gọi: vị trí tổng quan X (Xg), vị trí tổng quan Y (Yg), và hướng yi (lớp con) 9 Thành phần đầu Xg được đưa ra bằng tổng của những tín hiệu x trên véc tơ ban đầu, điều này cho chúng ta biết về hướng của lòng bàn tay, đo sự quay của tay khi trong vị trí “horizontal” và đo sự lên xuống của ngón tay khi các ngón tay ở vị trí “Vertical”. Thành phần thứ hai, Yg, mô tả hoàn toàn hình ảnh của tay như tổng số các khớp ngón tay, điều này đạt được bằng cách cộng tất cả 5 tín hiệu y. Thành phần thứ ba của véc tơ D là yi. Với các tính năng mới này, các mẫu này được hình dung một cách dễ dàng như là các điểm trong không gian 3 chiều. 1.2.3.3. Phân loại 9 Không gian mẫu bao gồm 50 véc tơ cử chỉ cho mỗi ký tự trong 26 ký tự. Hình 12 chỉ ra giá trị trung bình 50 mâu của một ký tự trong 26 ký tự trong không gian cử chỉ. 19 Đinh Duy Chương Khóa luận tốt nghiệp Hình 12: Các cử chỉ trong không gian 9 Hình 13 chỉ ra giá trị trung bình được chiếu trên trục “Vertical”, vị trí y của ngón trỏ yi ứng với trục này. Hình 13: Chiếu lên trục “Vertical” 9 Nói chung, việc giải quyết một số vấn đề nhận dạng đa lớp có thể thực hiện được với phân loại đơn. Tuy nhiên việc phân loại này sẽ có độ phức tạp cao, như đã được tìm thấy trong phần trên. Thay vào đó ta chia không gian sử dụng thành hai phần, 20 Đinh Duy Chương Khóa luận tốt nghiệp tạo ra 3 lớp con chính được nhóm rõ ràng trong hình 13: “Vertical”, “Horizontal”, và “Closed”. 9 Sau khi phân biệt thứ tự đầu tiên này, độ phức tạp của việc phân loại giảm đi, và dễ dàng thực thi sử dụng một vi điều khiển BasicStamp đơn chíp. Và quá trình nhận dạng một cử chỉ có thể được mô tả như sau: • Bước 1: Các lớp con được phân biệt sử dụng hai phần xác định bởi vị trí ngón trỏ trong hình 13 • Bước 2: Các thành phần của mỗi lớp con được chiếu lên mặt phẳng xác định lớp con. Nói một cách khác, chỉ Xg và Yg được đưa vào sau tính toán trong xử lý phân loại. Hình 14.a,b,c chỉ ra sự suy giảm mới trong kích thước. 21 Đinh Duy Chương Khóa luận tốt nghiệp Hinh 14: Sự suy giảm • Bước 3: Nếu việc thực hiện mới không đủ để phân biệt một ký tự sử dụng một quy tắc đơn giản (quy tắc Bayes, hàm tuyến tính), thì một lớp con mới được gửi tới phân loại khác để tìm kiếm những khác biệt riêng từ dữ liệu ban đầu. 9 Lớp con “Vertical” được định nghĩa bởi tất cả những lớp dưới mặt phẳng xác định bởi yi = 9. Những ký tự ‘B’, ‘D’, ‘K’, ‘L’, ‘R’, ‘U’, ‘V’, và ‘W’ thuộc lớp con này. Lớp con “Horizontal” được đặt giữa mặt phẳng xác định bởi yi = 9 và mặt phẳng xác định bởi yi = 12. Những ký tự ‘C’, ‘E’, ‘G’, ‘H’, ‘J’, ‘P’, ‘T’, ‘X’, và ‘Z’ thuộc lớp con này. tất cả những lớp với yi > 12 sẽ thuộc lớp con “Closed”. Đó là trong trường hợp cho các ký tự ‘A’, ‘F’, ‘I’, ‘M’, ‘N’, ‘O’, ‘Q’, ‘S’, và ‘Y’. 9 Lưu ý rằng, mặc dù dấu hiệu ‘F’ không giống như sử dụng một nắm tay khép kín, và ‘D’ không giống như bàn tay mở ở vị trí dọc, chúng được phân loại như trên vì việc phân loại chỉ dựa trên trạng thái của ngón tay trỏ. 22 Đinh Duy Chương Khóa luận tốt nghiệp 1.2.3.4. Cấu trúc có thứ tự Dưới đây là sơ đồ cấu trúc có thứ tự Hình 15: Sơ đồ cấu trúc có thứ tự Hàng loạt quyết định sử dụng ký hiệu được đưa ra bởi Erenshteyn. Khối đầu tiên trong trật tự này liên quan tới “feature extraction” ở đó Xg, Yg, và yi được tính toán sử dụng phương trình (1), (2), và (3), các mẫu không gian 3 chiều được tạo dạng. “Dispatcher” đầu tiên thực hiện một sự so sánh đơn giản trên Yi để phân biệt ba lớp con được chỉ ra trên hình 15. Mức thứ hai của “Dispatchers” sẽ phân biệt xa hơn tới các bộ phận khác của các lớp con dựa trên các tính năng tương tự của chúng, như cử chỉ ‘flat’ and ‘rolled’ trong hình 15. Người nhận dạng sẽ nhìn vào các thuộc tính trong không gian tính năng để cuối cùng nhận ra các ký tự từ tập hợp các lớp con. Ví dụ như trong hình 15, ký tự ‘F’ dễ dàng nhận từ phần còn lại bằng việc vẽ một đường tại Yg = 45. Giống như ‘F’, nhiều ký tự được nhận ra trong hai bước trong khi đó càng về cuối thì càng khó khăn. 23 Đinh Duy Chương Khóa luận tốt nghiệp 1.2.3.5. Kết quả 9 Phương thức phân loại đã được thực thi như một chuỗi các câu lệnh ‘if-then- else’ sử dụng Matlab, và đã được kiểm tra sử dụng tổng tất cả 1300 mẫu để đo tốc độ nhận dạng, trước khi vi điều khiển được lập trình với các thuật toán. 21 trong 26 ký tự đạt tới tốc độ nhận dạng 100% sử dụng phương thức thay thế lại. Ký tự ‘I’ và ‘Y’ trùng khớp với nhau, như được chỉ trên hình 15. Để nhận ra hai ký tự này, quy tắc Bayes đã được áp dụng như sau: mẫu x được quy cho lớp wI nếu: 9 P(x|wI) p(wI) > p(x|wY) p(wY) (7) 9 Trong đó p(wI) là xác suất ưu tiên của ký tự ‘I’ và p(wY) là xác suất ưu tiên của ký tự ‘Y’. Để ước lượng xác suất điều kiện p(x|wI) và p(x|wY), ta sử dụng biểu đồ phân phối lớp trên Xg. 9 Tốc độ “misclassification” được đưa ra từ quy tắc Bayes, dựa trên biểu đồ, được ước lượng như là phần trăm của các mẫu được phân loại. Nói một cách cụ thể, hai mẫu của Y được “missclassified” như những thành phần của lớp I, tốc độ lỗi là: E(Y) = 2 / 50 = 4%. 9 Ký tự ‘R’, ‘U’, và ‘V’ là trường hợp khó khăn nhất, khi các phân phối lớp của chúng trùng nhau, do đó không thể chỉ một hàm tuyến tính để phân biệt chúng mà không xảy ra lỗi, hai thành phần của lớp ‘U’, và một thành phần từ lớp ‘V’ và lớp ‘R’ được “misclassification” làm giảm độ chính xác tới 90%, 78% và 96% một cách tương ứng. Tính năng được sử dụng để lắp ráp biểu đồ trong trường hợp này là vị trí X của ngón trỏ, hay sự giạng ra của ngón tay. 1.2.3.6. Kết luận về phương pháp này Với hiểu biết của chúng ta, việc sử dụng sensor gia tốc tại các điểm nối PIP trong hệ thống “self-contained” để nhận ra bảng chữ cái ASL chỉ là lý thuyết. Việc đưa những dấu hiệu như là tập hợp các mẫu 3-D và phép chiếu sau đó lên mặt phẳng cho phép khắc phục vấn đề về chiều cũng như tiếp cận lý thuyết trong việc nhận dạng hình ảnh của tay. Hệ thống đã chứng minh tính linh động và chính xác cho dấu hiêu nhận dạng từ những người sử dụng khác nhau thậm chí họ là những người chưa có kinh nghiệm trong vấn đề ra hiệu. Không giống như CyberGlove và DataGlove, độ chính xác không phụ thuộc vào người sử dụng, kích thước tay. Vấn đề chính của việc sử dụng sensor gia tốc như là các sensor vị trí góc là chúng đáp ứng sự thay đổi với véc tơ trọng trường, nhưng chúng không nhạy cảm với cử động quay. Do đó sử dụng Accele Glove với dấu hiệu “Horizontal” là khó có thể thực hiện, cũng như với các dấu hiệu 24 Đinh Duy Chương Khóa luận tốt nghiệp NASA. Một thuận lợi của phương pháp chiếu là sau khi phép chiếu của một lớp con lên mặt phẳng tương ứng của nó, có thể tìm ra khoảng trống ở đó dấu hiệu mới có thể được đưa ra. Đó là trường hợp với ‘space’ được thêm vào bảng chữ cái ASL để phân biệt giữa các từ, và ‘enter’ để việc phân biệt các từ hay các câu được hoàn thành. Hai lệnh này thực sự chuyển đổi hoàn toàn hệ thống này thành Finger Spelling tới bộ tạo ra tiếng nói. 1.2.4. So sánh hai phương pháp 9 Phân tích hình ảnh • Ưu điểm Không bị cản trở bởi chuyển động Độ nhạy không bị mất bởi việc tiếp cận • Nhược điểm Dễ bị nghẽn dữ liệu Với camera đa chức năng có thể gặp khó khăn và tốn thời gian Bị ảnh hưởng bởi ánh sáng Giá thành cao 9 Phân tích bằng cảm biến • Ưu điểm Dữ liệu thu được chính xác Có thể thu thập được hướng, vị trí và dữ liệu xúc giác Không bị nghẽn dữ liệu Giá thành thấp • Nhược điểm Yêu cầu nguồn cung cấp Độ nhạy bị suy giảm bởi việc tiếp cận Có thể bị hạn chế bởi chuyển động Từ việc phân tích các phương pháp trên, em thấy rằng phương pháp dùng cảm biến là phù hợp cho việc xây dựng một hệ thống nhỏ gọn 25 Đinh Duy Chương Khóa luận tốt nghiệp Chương 2. TÌM HIỂU VỀ CẢM BIẾN VÀ VI ĐIỀU KHIỂN 2.1. Tìm hiểu về cảm biến gia tốc 2.1.1. Nguyên lý làm việc của cảm biến Có nhiều loại cảm biến có thể đo được các thông số khác nhau. Trong đó việc đo góc là được yêu cầu trong nhiều lĩnh vực như trong tự động hoá và trong công nghiệp. Sensor có thể được chia thành nhiều loại theo nguyên lý chung như: Từ trường, quang và điện dung. 2.1.2.Sensor gia tốc ADXL202 Có rất nhiều loại sensor có thể áp dụng được trong lĩnh vực này. Song hiện nay sensor gia tốc ADXL202 được dụng khá phổ biến và đặc biệt là sự tiện lợi của sensor này nên trong đề tài em dùng sensor ADXL202. 2.1.2.1. Tính năng 9 Sensor này được tích hợp trên một chíp đơn 9 Đo được cả gia tốc động và tĩnh 9 Người sử dụng có thể điều chỉnh được chu kỳ lối ra 9 Nguồn cung cấp thấp < 0.6mA 9 Đáp ứng nhanh 9 Dải thông có thể hiệu chỉnh nhờ một tụ đơn. Có độ phân giải 5mg ở dải thông 60Hz 9 Điện áp vận hành +3V tới +5.25V 9 Độ sốc là 1000g 2.1.2.2. Ứng dụng 9 Đo đọ nghiêng 9 Ghép nối máy vi tính 9 Hệ thống bảo mật 26 Đinh Duy Chương Khóa luận tốt nghiệp 2.1.2.3. Mô tả chung 9 ADXL202 gia thành thấp, nguồn cung cấp nhỏ. Có dải đo gia tốc gg 10/2 ±± có thể đo được cả hai gia tốc động và tĩnh 9 Lối ra là tín hiệu số tương ứng với gia tốc trên hai trục. Lối ra có thể đo trực tiếp nhờ bộ đếm của vi điều khiển mà không cần bộ biến đổi AD hay một bộ logic nào. Chu kỳ lối ra được hiệu chỉnh từ 0.5ms tới 10ms thông qua một điện trở (Rset). Nếu điện áp lối ra được đề cập thì điện áp này sẽ cân xứng với gia tốc sẵn có từ hai chân XFilt và YFilt của sensor 9 Dải thông của ADXL202 có thể được đặt từ 0.01 Hz tới 5 kHz thông qua hai điện trở Cx và Cy. Nhiễu nền điển hình là Hzg /500µ cho phép tín hiệu dưới 5mg được giải quyết cho dải thông dưới 60 Hz. 9 Dải nhiệt độ làm việc của sensor là 0oC tới +70oC, tuy nhiên trong công nghiệp lại là từ -40oC tới +85oC 2.1.2.4. Sơ đồ khối chức năng Dưới đây là sơ đồ khối chức năng của sensor ADXL202. Hình 20: Sơ đồ khối chức năng 27 Đinh Duy Chương Khóa luận tốt nghiệp 2.1.2.5. Cấu hình chân Hình 21: Cấu hình chân 2.1.2.6. Nguyên lý vận hành 9 Lối ra của bộ giải điều chế điều khiển trạng thái bộ điều chế chu kỳ công suất thông qua một điện trở 32kΩ. Ở điểm này một chân sẵn có trên trên một kênh cho phép người sử dụng dặt dải thông của tín hiệu của thiết bị bằng một tụ điện thêm vào đó. Bộ lọc này cải tiến độ phân giải của phép đo và chống nhiễu xuyên kênh. 9 Sau khi qua bộ lọc thông thấp, tín hiệu được biến đổi thành tín hiệu điều chế chu kỳ công suất bởi trạng thái DCM. Một điện trở sẽ được đặt để quyết định đến chu kỳ của T2, ở đó T2 biến đổi trong khoảng 0.5ms đến 10ms. Ở gia tốc 0g tương ứng với 50% chu kỳ công suất. Tín hiệu gia tốc có thể được quyết định bởi việc đo độ rộng xung của T1 và T2 bằng bộ đếm hay bộ định thời của vi điều khiển. 9 Điện áp lối ra tương tự được lưu trữ bằng bộ đệm tín hiệu từ chân XFilt và YFilt, hay thông qua tín hiệu chu kỳ công suất thông qua bộ lọc RC tạo thành tín hiệu một chiều. 9 ADXL202 sẽ vận hành với điện áp cung cấp 3.0V đến 5.25V 9 T1 và T2 được biểu diễn bằng hình sau Hình 22 2.1.2.7. Các thành phần phụ trợ Ứng dụng chủ yếu là một tụ điện đơn 0.1µF, CDC, sẽ bỏ được nhiễu do nguồn cung cấp. Tuy nhiên trong một số trường hợp thiết bị số như vi điều khiển chia sẻ giống như nguồn cung cấp, nhiễu trên nguồn có thể gây nên nhiễu trên lối ra của 28 Đinh Duy Chương Khóa luận tốt nghiệp ADXL202. Điều này thường thấy như hiện tượng gợn sóng của điện áp ở chân XFilt và YFilt. Nếu thêm vào một số thiết bị cần thiết như một điện trở 100Ω hay một thanh ferit, những thiết bị này có thể được chèn vào đường cung cấp nguồn cho ADXL202 2.1.2.8. Thiết kế một số thủ tục cho ADXL202 9 Thiết kế thủ tục cho việc sử dụng ADXL202 với lối ra chu kỳ công suất và tụ lọc. Một số vấn đề liên quan đến dải thông độ phân giải của tín hiệu và yêu cẩu về mặt thời gian được xem xét trong những phần sau: 9 Vdd: ADXL202 có 2 chân cung cấp nguồn 13 và 14. Hai chân này sẽ được nối trực tiếp với nhau 9 COM: chân 4 và 7, hai chân này được nối trực tiếp với nhau và chân 7 được nối tới đất. 9 Vtp: Chân này liên quan đến việc kết nối của sensor 9 Tụ CDC 9 ST 9 Giải mã chu kỳ công suất: Gia tốc tỉ lệ với T1/T2 2.1.2.9. Đặt dải thông cho ADXL202 sử dụng Cx và Cy 9 Dải thông của ADXL202 có thể đặt một cách đơn giản nhờ công thức: ),( 3 5 YX dB C FF µ=− 9 Từ công thức trên ta có bảng sau: Dải thông Giá trị của tụ 10 Hz 50 Hz 100 Hz 200 Hz 500 Hz 5 kHz 0.47 µF 0.10 µF 0.05 µF 0.027 µF 0.01µF 0.001 µF 29 Đinh Duy Chương Khóa luận tốt nghiệp Bảng 1 2.1.2.10. Đặt DCM với RSET 9 Để thay đổi T2 ta dùng công thức Ω Ω= M RT SET 125 )(2 9 Từ công thức trên ta có bảng thông số sau: T2 RSET 1 ms 2 ms 5 ms 10 ms 125 kΩ 250 kΩ 625 kΩ 1.25 MΩ Bảng 2 2.1.2.11. Sử dụng ADXL202 để đo độ nghiêng 9 Một trong những ứng dụng phổ biến của ADXL202 là đo độ nghiêng. Gia tốc sử dụng lực trọng trường như là một véc tơ đầu vào để quyết định hướng của vật thể trong không gian 9 Gia tốc là nhạy nhất trong đo độ nghiêng khi trục nhạy của nó trực giao với lực trọng trường, i.e., song song với bề mặt của trái đất. Ở hướng nhạy sẽ thay đổi độ nghiêng lớn nhất. Khi gia tốc được định hướng trên trục lực trọng trường, i.e., gần với việc đọc +1 g hay –1 g của nó. Khi gia tốc vuông góc với lực trọng trường, lối ra của nó sẽ thay đổi gần như 17.5 mg trên một độ nghiêng, đặc biệt với trường hợp là 450 thì gia tốc chỉ thay đổi 12.3 mg trên độ nghiêng và độ phân giải giảm xuống. 9 Sensor gia tốc ADXL202 có hai trục đo được thể hiện trên hình vẽ. 30 Đinh Duy Chương Khóa luận tốt nghiệp Hình 23: Trục đo của sensor 2.1.2.12. Biến đổi gia tốc thành độ nghiêng 9 Khi gia tốc được định hướng cả hai trục X và Y song song với bề mặt của trái đất sensor này có thể sử dụng hai trục để đo Roll và Pitch. Một tín hiệu lối ra từ gia tốc được biến đổi thành giá trị biến thiên từ -1 g tới +1 g. Góc nghiêng được tính toán bằng công thức: 9 Pitch = ASIN (Ax/1 g) 9 Roll = ASIN (Ay/1 g) 9 Để không vượt quá phạm vi tính toán có thể cho gia tốc lối ra lớn hơn ± 1 g để giảm độ rung, độ sốc hay một gia tốc khác. 2.1.2.13. Đo góc quay 360o Ta có thể đo được đầy đủ 360 o của hướng quay quanh lực trọng trường bằng cách sử dụng hai hướng gia tốc vuông góc với nhau. Hình 24: Đo góc quay 3600 2.1.3.Phương pháp chuẩn Như ta đã biết lổi ra số của sensor có dạng 31 Đinh Duy Chương Khóa luận tốt nghiệp 9 Trường hợp này ứng với cả hai kênh X và Y 9 Trong đó: T2 là chu kỳ dữ liệu lối ra trên các trục X và Y, T1 là độ rộng xung tỷ lệ với góc nghiêng. Đặc biệt T2 có thể đặt được (10ms) 9 Có nhiều cách đo độ rộng của T1, tuy nhiên khi ghép nối với vi điều khiển BasicStamp ta thường dùng bộ đếm của vi điều khiển để do T1 tương đối chính xác 9 Điều quan trọng là xác định được quy luật của sự phụ thuộc của tín hiệu xung vào góc nghiêng, tức là ta phải xác định được một hàm biểu diễn được số xung lối ra phụ thuộc vào góc nghiêng. 9 Về dạng đồ thị chúng như nhau nhưng pha lại lệch nhau 90o nên có cùng một dạng hàm. Ở đây nếu dùng phần mềm Origin ta sẽ fit được hàm có dạng ⎟⎠ ⎞⎜⎝ ⎛ −= w xxAy cπsin . Trong đó y là số xung lối ra trên kênh X hoặc Y, x là góc nghiêng của sensor, còn w và xc và A là hằng số nào đó tuỳ thuộc vào sensor. 2.2. Tìm hiểu về vi điều khiển BasicStamp Vi điều khiển BasicStamp được đưa vào sử dụng bởi các kỹ sư lần đầu tiên vào năm 1992. Tháng 11 năm 2004 hãng Parallax đã đưa ra hàng triệu modul BasicStamp vào quá trình sử dụng. Qua 12 năm họ đã đưa ra 6 mẫu và rất nhiều kiểu đóng gói. Vi điều khiển này có rất nhiều đặc điểm thuận lợi cho người sử dụng, cụ thể sẽ được giới thiệu ở phần sau. 2.2.1.Nguyên lý vận hành 9 Modul BasicStamp là vi điều khiển được thiết kế cho rất nhiều ứng dụng. Nhiều đề tài yêu cầu gắn hệ thống với một vài thiết bị thông minh sử dụng modul BasicStamp để điều khiển. 9 Mỗi vi điều khiển BasicStamp được tích hợp trên một chíp đơn bộ nhớ trong RAM và EEPROM, bộ hiệu chỉnh thế 5V, một số chân vào ra I/O (mức TTL, 0 – 5V). Modul BasicStamp có thể chạy vài nghìn lệnh trên một giây và có thể lập trình đơn giản, tuỳ theo dạng ngôn ngữ lập trình của Basic và gọi là PBASIC. 2.2.2.Phần cứng 9 Sơ đồ phần cứng và cấu hình chân của BasicStamp 2sx 32 Đinh Duy Chương Khóa luận tốt nghiệp Hình 25: Sơ đồ phần cứng Vi điều khiển BasicStamp có một số đặc điểm chính sau: 9 Kích thước nhỏ 9 Trình biên dịch BASIC được tích hợp sẵn bên trong 9 Chương trình được lưu trữ trong bộ nhớ cố định (nhưng có thể xoá được) 9 Có nhiều chân vào ra có thể giao tiếp được với nhiều thiết bị khác 9 Có thể thiết lập thành các modul hoặc các thành phần riêng biệt 9 Hiện nay có rất nhiều module BasicStamp nhưng chủ yếu được chia làm 2 loại: BS1 và BS2 9 Bản mạch vi điều khiển này bao gồm các khối chính sau: • Chíp hợp dịch PBASIC • Bộ nhớ chương trình: EEPROM với BS1 là 256byte, với BS2 là 2kbyte, có thể ghi và xoá được • Nguồn nuôi: Cho phép lối vào từ 6 – 15V, sau đó có bộ chuyển đổi thành 5V, nguồn 5V cũng dùng để cung cấp cho vi điều khiển • Vi điều khiển này còn có mạch Reset 33 Đinh Duy Chương Khóa luận tốt nghiệp 9 Tuy nhiên trong đề tài này ta dùng BS2SX đây là sự mở rộng của BS2 về tốc độ và bộ nhớ. Bộ vi điều khiển này hoạt động ở tần số 50MHz, với tốc độ nhanh hơn 2.5 lần so với BS2 do đó có thể thực hiện được 10000 lệnh trong một giây. Đồng thời bộ nhớ EEPROM cũng tăng lên thành 16kbyte và chia làm 8 khối ngoài ra còn có thêm 63 byte RAM dùng để lưu dữ liệu tạm thời. 2.2.3.Ngôn ngữ BasicStamp 9 Sự phát triển PBASIC cho ta cấu trúc đơn giản, dễ lập trình rất phù hợp cho cấu trúc này và dễ dàng trong việc ghép nối điều khiển. Bao gồm nhiều cấu trúc lệnh như: GOTO, FOR...NEXT, IF...THEN...ELSE,... 9 Hoặc để gửi dữ liệu từ vi điều khiển qua cổng COM Again: Debug cls, “Pin is: ”, dec in0 Pause 100 Goto Again 9 Đặc biệt có lệnh Pulsin để đo độ rộng xung lối ra của sensor khi ta ghép sensor với vi điều khiển 9 Đo độ rộng xung trên lối vào chân 0 ở trạng thái cao Pulsin 0,1,var1 9 Đo độ rộng xung trên lối vào chân 0 ở trạng thái thấp Pulsin 0,0,var2 9 Code của chương trình đọc dữ liệu từ 6 sensor bằng vi điều khiển BasicStamp và gửi dữ liệu qua máy tính ở phụ lục A. 34 Đinh Duy Chương Khóa luận tốt nghiệp Chương 3. XÂY DỰNG THIẾT BỊ GĂNG TAY CẢM NHẬN GIA TỐC Với cơ sở lý thuyết trên ta xây dựng một thiết bị nhận biết ngôn ngữ dấu hiệu. Thiết bị này được xây dựng chủ yếu bởi hai phần chính là thiết kế phần cứng và xây dựng phần mềm. Một yếu tố quan trọng nữa trong vấn đề này là việc chuẩn hoá các sensor, nếu việc chuẩn hoá càng chính xác thì hệ đo của ta càng chính xác hơn. 3.1. Thiết kế phần cứng Phần cứng này bao gồm 6 sensor được gắn trên một găng tay, 6 sensor này được nối với vi điều khiển và vi điều khiển này được nối với máy tính PC. Sơ đồ nguyên lý được chỉ bởi hình dưới. Hình 27: Sơ đồ nguyên lý Thành phần chính bao gồm khối cấp nguồn, vi điều khiển BasicStamp và các lối ra cho các sensor. Vi điều khiển ghép nối với máy tính thông qua cổng COM như được thể hiện trên hình vẽ. Modul phần cứng cụ thể có dạng sau 35 Đinh Duy Chương Khóa luận tốt nghiệp Hình 28: Modul phần cứng Các sensor được gắn trên một găng tay, ở vị trí đầu ngón tay. Sensor sẽ gửi tín hiệu tới vi điều khiển bằng hệ thống dây như được thấy trong hình vẽ. Các sensor này được gắn ở vị trí thuận lợi cho việc ra hiệu. 3.2. Chuẩn hoá sensor Thiết bị chuẩn hoá được chỉ ra bởi hình dưới Hình 29: Hệ chuẩn góc Các sensor lần lượt sẽ được gắn lên hệ chuẩn góc. Ứng với mỗi góc quay ta sẽ ghi lại giá trị xung lối ra. 36 Đinh Duy Chương Khóa luận tốt nghiệp Ở đây ta sẽ thay đổi góc nghiêng của sensor 2 độ một, sở dĩ như vậy là do trong thiết bị của ta không cần sự chính xác đến từng độ một. Những cử chỉ sai khác một hoặc vài độ được coi như trạng thái đứng yên. Vi điều khiển BasicStamp được gắn với sensor để đo độ rộng xung lối ra tương ứng vơi sự thay đổi góc nghiêng. Thực hiện với 5 sensor ta được kết quả như hình vẽ Hình 30: Sự phụ thuộc số xung lối ra vào góc nghiêng (kênh x) Từ hình trên ta thấy các sensor tuy có các thông số giống nhau nhưng vẫn bị lệch một khoảng offset. Tuy nhiên đặc tuyến thì hoàn toàn giống nhau, đây là trường hợp tín hiệu trên kênh X. Dùng phần mềm Matlab ta có thể fit được hàm biểu diễn sự phụ thuộc giữa xung lối ra vào góc nghiêng, đây là hàm sin được thể hiện bởi công thức: ⎟⎠ ⎞⎜⎝ ⎛ −= w xxAy cπsin Từ công thức này ta sẽ tính ngược lại được góc nghiêng của sensor theo độ rộng xung. 37 Đinh Duy Chương Khóa luận tốt nghiệp Với lối ra trên kênh Y thì hoàn toàn tương tự, tín hiệu thu được chỉ lệch pha so với tín hiệu trên kênh y, cụ thể là: Hình 31: Sự phụ số xung lối ra vào góc nghiêng (kênh Y) Từ hai hình trên ta thấy tín hiệu trên các kênh chỉ khác nhau một hằng số, tuy có tồn tại một sai số nhỏ đặc biệt là ở những đoạn không tuyến tính. Khi dịch offset ta được hình sau: 38 Đinh Duy Chương Khóa luận tốt nghiệp KênhX Hình 32: Khi đã dịch offset (kênh X) Kênh Y Hình 33: Khi đã dịch offset (kênh Y) Khi dịch offset ta thấy dạng độ thị của các sensor tương đối trùng khớp, đặc biệt là ở những đoạn tuyến tính. Sự sai khác chủ yếu tập trung ở vùng max và min. Trong thiết bị này ta cho phép sai số lên tới 50 nên sự sai khác này không hề đáng ngại. 39 Đinh Duy Chương Khóa luận tốt nghiệp 3.3. Xây dựng phần mềm 3.3.1.Viết chương trình cho vi điều khiển BasicStamp Ở đây ta phải viết chương trình cho BasicStamp để đọc dữ liệu từ sensor để gửi vào máy tính để xử lý tiếp. Chương trình sau khi viết xong phải được nạp cho vi điều khiển quá trình này được thể hiện bởi hình sau: Hình 34: Quá trình nạp chương trình cho vi điều khiển Hình trên cho thấy các giá trị vi điều khiển gửi giá trị xung tới cổng COM của máy tính. Để chuẩn hóa được ta phải thông qua bước này. Tức là sẽ đọc giá trị xung tương ứng với sự thay đổi 20 một của sensor, kết quả này sẽ được lưu vào một file. 3.3.2.Chương trình trên máy tính Ta có thể đọc dữ liệu từ BasicStamp và hiển thị kết quả trên màn hình LCD. Trong đề tài này ta sẽ xử lý dữ liệu trên máy tính. Như ta đã biết với mỗi ký tự bảng chữ cái đều có một trạng thái nhất định của tay. Vấn đề đặt ra ở đây là làm thế nào để phân biệt được các ký tự đó bằng cử chỉ. Tiến hành lấy mẫu các ký tự trong bảng chữ cái tiếng việt “A, B, C, D, E, Đ, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y“ 40 Đinh Duy Chương Khóa luận tốt nghiệp a b c d đ e g h i 41 Đinh Duy Chương Khóa luận tốt nghiệp k l m n o p q r s 42 Đinh Duy Chương Khóa luận tốt nghiệp t u v x y Hình 35: Bảng chữ cái tiếng việt Đối với tiếng việt ngoài các chữ cái thông thường còn thêm một số chữ khác như: Ă, Ô, Ê, Â, Ơ, Ư. Chữ Ă ta sẽ mã hoá bằng cách từ chữ A như được chỉ ra ở trên ta thêm tiền tố mũ, tức là kết hợp thêm với cử chỉ sau: 43 Đinh Duy Chương Khóa luận tốt nghiệp Hình 36: Dấu của chữ Ă Chữ Ê, Â, Ô ta chỉ việc thêm tiền tố mũ bằng cử chỉ sau: Hình 37: Dấu của các chữ Â, Ô, Ê 44 Đinh Duy Chương Khóa luận tốt nghiệp Với chữ Ư và Ơ thì thêm yếu tố dấu là: Hình 38: Dấu của chữ Ư và Ơ Khi thu thập dữ liệu các chữ cái “A , B, C, D, Đ, E, G, H, I, K ,L, M, N, O, P, Q, R, S, T, U, V, X, Y” với ba tiền tố Xg, Yg, Yi như được thể hiện bởi công thức (1): P=D*T=[Xg Yg yi] (1) Từ ba thành phần dữ liệu này ta có dạng đồ thị trong không gian 3 chiều được thể hiện bởi Matlab: 45 Đinh Duy Chương Khóa luận tốt nghiệp Hình 39: Vùng không gian của các cử chỉ khi chuẩn hoá Theo lý thuyết người ta dùng chỉ số Yi của ngón trỏ thì trong trường hợp này ta dùng một sensor hoàn toàn độc lập. Việc chọn sensor làm chỉ số Yi độc lập sẽ làm cho việc mã hoá ký tự phong phú hơn. Để phân biệt được các ký tự ta sử dụng thuật toán phân lớp. Ta sẽ chia vùng không gian thành các lớp khác nhau. Chẳng hạn như đồ thị trên ta sẽ chia thành các lớp sau: Lớp 1: gồm các ký tự “H, T, B”. Lớp 2: gồm các ký tự “X, P, G”. Lớp 3: gồm các ký tự “M, N, P”. Lớp 4: gồm các ký tự “A, E, S”. lớp 5: gồm các ký tự còn lại . Ở đây ta chia làm 5 lớp các ký tự, mỗi lớp sẽ chứa một số các ký tự Trong bài toán “Real Time” ta sẽ đọc dữ liệu liên tục được gửi về bởi vi điều khiển BasicStamp, kết quả thu được trước tiên sẽ được xác định thuộc lớp nào trong 5 lớp trên. Tiếp đó ta dùng thuật toán khoảng cách để xác định xem giá trị thu được là ký tự nào trong lớp. Cách xác định này vẫn gặp sai số nếu các ký tự có đáp ứng gần nhau. Ví dụ như chữ “O” và chữ “C” , chữ “U” và “V” và chữ “R” không khác nhau nhiều lắm. Chương trình này được được viết bằng ngôn ngữ C ở phần phụ lục B. Để hạn chế sai số ta phải tìm cách phân lớp lại, nếu phân thành càng nhiều các lớp nhỏ thì thuật toán của ta càng chính xác. Nhưng điều này lại gặp rất nhiều khó khăn vì đối với các ký tự có trạng thái rất gần nhau thì rất khó có thể tách lớp mà ta chỉ có thể phân lớp được các ký tự hoàn toàn phân biệt. Tuy nhiên điều này có thể được giải quyết bằng phần mềm. Ở đây ta dựa vào đặc tính của tiếng Việt để phân biệt các chữ có cử chỉ gần giống nhau, ví dụ như chữ “U” và “V” thì “U” là nguyên âm còn “V” là phụ âm. Do đó nếu trước đó là một nguyên âm thì tiếp sau ký tự đó không thể là “V” được. Phương pháp mềm trên chỉ có thể áp dụng cho tiếng Việt còn đối với tiếng Anh thì lại gặp khó khăn, và ta phải tìm phương pháp khác. 46 Đinh Duy Chương Khóa luận tốt nghiệp Kết luận Trong khoá luận tốt nghiệp này, em đã hiểu thực hiện được một số công việc chính như sau: Tìm hiểu về ngôn ngữ dấu hiệu Tìm hiểu về các phương pháp nhận biết Tìm hiểu và chuẩn hoá các cảm biến gia tốc Ghép nối các cảm biến với vi xử lý Basic... Xây dựng một hệ nhận biết đơn giản dựa trên các ký tự Đề xuất một số phương pháp làm tăng độ chính xác của thiết bị 47 Đinh Duy Chương Khóa luận tốt nghiệp Tài liệu tham khảo [1] José L. Hernández-Rebollar Department of ECE The George Washington Univ. jreboll@seas.gwu.edu [2] Robert W. Lindeman Department of CS The George Washington Univ. gogo@seas.gwu.edu [3] Nicholas Kyriakopoulos Department of ECE The George Washington Univ. kyriak@seas.gwu.edu [4] Image Communication Technology Group, The Robert Gordon University, Schoolhill, Aberdeen, UK l.muir@rgu.ac.uk, i.g.richardson@rgu.ac.uk [5] Dự án “Giáo dục hoà nhập trẻ khiếm thính”. Ký hiệu của người điếc Việt Nam 48 Đinh Duy Chương Khóa luận tốt nghiệp PHỤ LỤC A: ĐỌC GIÁ TRỊ GÓC TỪ VI ĐIỀU KHIỂN '**************** '* Khai bao bien* '**************** acc VAR Word a VAR Word(8) N VAR Byte T VAR Byte C VAR Byte DV VAR Byte DT VAR Word DC VAR Byte time VAR Byte '********************* '* Chuong trinh chinh* '********************* MAIN: GOSUB Send_ACC_to_ROBOT GOSUB everage FOR time = 0 TO 4 a(time)=0 NEXT DEBUG 33 GOTO MAIN 49 Đinh Duy Chương Khóa luận tốt nghiệp '********************* '* Chuong trinh con * '********************* 'DEM SO XUNG TREN CAC KENH LOI VAO Send_ACC_to_ROBOT: FOR time=1 TO 10 PULSIN 1,1,acc 'ACCX1 Kenh x1 a(0) = a(0) + acc PULSIN 3,1,acc 'ACCX2 Kenh x2 a(1) = a(1) + acc PULSIN 5,1,acc 'accx3 Kenh x3 a(2) = a(2) + acc PULSIN 7,1,acc 'ACCX4 Kenh x4 a(3) = a(3) + acc PULSIN 9,1,acc 'ACCX5 Kenh x5 a(4) = a(4) + acc PULSIN 11,1,acc 'ACCX5 Kenh x6 a(5) = a(5) +acc NEXT RETURN 50 Đinh Duy Chương Khóa luận tốt nghiệp 'TINH TRUNG BINH VA DUA RA KET QUA DUOI DANG HAM EVERANGE: FOR time = 0 TO 4 SELECT time CASE 0 'TIN HIEU TREN KENH X1 IF a(0)/10 >= 3290 THEN acc=270 ELSEIF a(0)/10<2285 THEN acc = 90 ELSE acc = (a(0)/10 - 405)/10 - 58 'ham tuyen tinh ENDIF GOSUB ‘TRANSMIT 'TIN HIEU TREN X2 CASE 1 IF a(1)/10 >= 3075 THEN acc=270 ELSEIF a(1)<2075 THEN acc = 90 ELSE acc = (a(1)/10 - 194)/10 - 58 'HAM TUYEN TINH ENDIF GOSUB TRANSMIT CASE 2 'TIN HIEU TREN KENH X3 IF a(2)/10 >= 2880 THEN acc=270 ELSEIF a(2)/10<1880 THEN 51 Đinh Duy Chương Khóa luận tốt nghiệp acc = 90 ELSE acc = a(2)/100 - 58 'HAM TUYEN TINH ENDIF GOSUB TRANSMIT CASE 3 'TIN HIEU TREN KENH X4 IF a(3)/10 >= 3621 THEN acc=270 ELSEIF a(3)/10<2621 THEN acc = 90 ELSE acc = (a(3)/10 - 751)/10 - 58 'HAM TUYEN TINH ENDIF GOSUB TRANSMIT CASE 4 'TIN HIEU TREN KENH X5 IF a(4)/10 >= 3203 THEN acc=270 ELSEIF a(4)/10<2203 THEN acc = 90 ELSE acc = (a(4)/10 - 323)/10 - 58 'HAM TUYEN TINH ENDIF GOSUB TRANSMIT CASE 5 'TIN HIEU TREN KENH X6 IF a(5)/10 >= 3203 THEN acc=270 ELSEIF a(5)/10<2203 THEN 52 Đinh Duy Chương Khóa luận tốt nghiệp acc = 90 ELSE acc = (a(5)/10 - 323)/10 - 58 'HAM TUYEN TINH ENDIF GOSUB TRANSMIT: ENDSELECT NEXT RETURN 'CHUONG TRINH CON TRUYEN DU LIEU TRANSMIT: 'acc to ASCII N=acc/1000 ' Phan nghin N=N+48 'ASCII code DT=acc//1000 ' Du Phan Tram DT=acc T=DT/100 'phan tram T=T+48 'ASCII code DC=DT//100 'Du phan Chuc C=DC/10 'phan chuc c=c+48 'ASCII code DV=DC//10 DV=DV+48 'ASCII code DEBUG T PAUSE 10 DEBUG C PAUSE 10 DEBUG DV 53 Đinh Duy Chương Khóa luận tốt nghiệp PAUSE 10 RETURN PHỤ LỤC B: CHƯƠNG TRÌNH C ĐỌC DỮ LIỆU VÀ HIỂN THỊ KÝ TỰ LÊN MÀN HÌNH #include #include #include #include #include #include #include ///////////////////////////////////////////////////////////// #define lcr 0x3fb #define lsr 0x3fd #define txdata 0x3f8 ///////////////////////////////////////////////////////////// long x1[48],x2[12]; long xi[3]; long mang[12]; void setup(void) { //che do viet tu dieu khien outportb(lcr,0x80); //10000000 //thiet lap toc do baud outportb(txdata,0x0c); //00001100 54 Đinh Duy Chương Khóa luận tốt nghiệp outportb(txdata+1,0x00); //dinh dang khung truyen outportb(lcr,0x0b); //00001011 } ///////////////////////////////////////////////////////////// long nhan(void) { char trangthai; //kiem tra trang thai lsr den khi bo dem nhan rong do { trangthai=inportb(lsr)&0x01; } while(trangthai!=1); return (inportb(txdata)); } ///////////////////////////////////////////////////////////// void truyen(char ch) { char trangthai; //kiem tra trang thai lsr den khi bo dem truyen rong do { trangthai=inportb (lsr)&0x40; }while (trangthai!=0x40); //khi bo dem truyen rong thi truyen du lieu nam trong tx data outportb (txdata,ch); } ///////////////////////////////////////////////////////////// 55 Đinh Duy Chương Khóa luận tốt nghiệp ///////////////////////////////////////////////////////////// //TACH SO LIEU THU DUOC TU CONG COM RA SO void tachso (long x[48]) { long i,k; k=0; i=0; while (i<48) { x2[k]=x[i]*1000+x[i+1]*100+x[i+2]*10+x[i+3]; i=i+4; k++; } } //NHAN MANG DU LIEU void thumang(void) { char i,j,k,test,kytu; test=1; do { kytu=nhan(); if (kytu=='!') { for (i=0;i<48;i++) 56 Đinh Duy Chương Khóa luận tốt nghiệp x1[i]=nhan() - 48; test=0; } } while (test==1); } //TAO MANG 3 PHAN TU void tongi(long y[12]) { xi[0]=y[0]+y[2]+y[4]+y[6]+y[8]; xi[1]=y[1]+y[3]+y[5]+y[7]+y[9]; xi[2]=y[11]; } #define MAX_CHAR 23 #define con 3 char kytu[MAX_CHAR]={'m','n','q','x','p','g','r','u','c','o','d','D','l','i','t','a','e','s','k','y','h' ,'b','v'}; long xc[MAX_CHAR],yc[MAX_CHAR],zc[MAX_CHAR]; #define MAX_NUM 5 #define THRESHOLD 50 void docDuLieuChuan() //lay du lieu tu file chuan 57 Đinh Duy Chương Khóa luận tốt nghiệp { FILE *f; long i; int x,y,z; f= fopen("chuanc.txt","r"); for (i=0;i<MAX_CHAR;i++) { fscanf(f,"%d%d%d",&x,&y,&z); xc[i]=x; yc[i]=y; zc[i]=z; } fclose(f); } //SO SANH GIA TRI THU DUOC VOI GIA TRI CHUAN long dis(long x,long y,long z,long x1,long y1,long z1) { long tong; tong=(x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1); return sqrt(tong); } 58 Đinh Duy Chương Khóa luận tốt nghiệp void subclass(int x,int &k ,int &l) { if (x<2400) { k=0; l=2; } else if (x>2400&&x<2800) { k=3; l=6; } else { k=7; l=22; } } //NHAN DANG KY TU char NhanDang(long x,long y,long z, int k, int l) { long i,min,imin; long temp; min=dis(x,y,z,xc[k],yc[k],zc[k]); 59 Đinh Duy Chương Khóa luận tốt nghiệp imin=k; for (i=k;i<l+1;i++) { temp=dis(x,y,z,xc[i],yc[i],zc[i]); if (temp<min) { min=temp; imin=k; } } return kytu[imin]; } long Stable(long x[MAX_NUM],long y[MAX_NUM],long z[MAX_NUM]) { long error; long i; error=0; for (i=0;i<MAX_NUM-1;i++) error+=dis(x[i],y[i],z[i],x[i+1],y[i+1],z[i+1]); error=sqrt(error); if (error<THRESHOLD) return 1; else return 0; 60 Đinh Duy Chương Khóa luận tốt nghiệp } void Average(long xl[MAX_NUM],long yl[MAX_NUM],long zl[MAX_NUM],long &x,long &y,long &z) { long i; long xs,ys,zs; xs=ys=zs=0; for (i=0;i<MAX_NUM;i++) { xs+=xl[i]; ys+=yl[i]; zs+=zl[i]; } x=xs/MAX_NUM; y=ys/MAX_NUM; z=zs/MAX_NUM; } void LaySoLieu(long &x,long &y,long &z) { x=y=z=0; thumang(); tachso(x1); tongi(x2); 61 Đinh Duy Chương Khóa luận tốt nghiệp x=xi[0]; y=xi[1]; z=xi[2]; } //CHUONG TRINH CHINH void main() { int k,l; long x,y,z; long xt,yt,zt; long i; long xl[MAX_NUM],yl[MAX_NUM],zl[MAX_NUM]; char ch; clrscr(); docDuLieuChuan(); setup(); for (i=0;i<MAX_NUM;i++) xl[i]=yl[i]=zl[i]=0; while (!kbhit()) { LaySoLieu(xt,yt,zt); 62 Đinh Duy Chương Khóa luận tốt nghiệp for (i=0;i<MAX_NUM-1;i++) { xl[i]=xl[i+1]; yl[i]=yl[i+1]; zl[i]=zl[i+1]; } xl[MAX_NUM-1]=xt; yl[MAX_NUM-1]=yt; zl[MAX_NUM-1]=zt; if (Stable(xl,yl,zl)) { Average(xl,yl,zl,x,y,z); subclass(z,k,l); ch=NhanDang(x,y,z,k,l); cout<<ch; } } } 63

Các file đính kèm theo tài liệu này:

  • pdfXây dựng hệ thống nhận biết ngôn ngữ dấu hiệu sử dụng cảm biến vi cơ điện tử.pdf
Luận văn liên quan