Hiện tại tôi đang thực tập tại một công ty phần mềm và một trong những nhiệm vụ của tôi là triển khai công nhận cử chỉ của chuột. Một trong những nhà phát triển cao cấp đã giúp tôi bắt đầu và cung cấp mã/dự án sử dụng $ 1 Unistroke Recognizer http://depts.washington.edu/aimgroup/proj/dollar/. Tôi nhận được, theo cách rộng, Bộ nhận dạng Unistroke 1 đô la đang hoạt động như thế nào và cách thức hoạt động nhưng hơi bị choáng ngợp khi cố hiểu tất cả các chi tiết bên trong/chi tiết hơn của nó.Làm thế nào để xác định tất cả các đoạn đường từ một danh sách các điểm được tạo ra từ một cử chỉ con chuột?
Vấn đề của tôi là tôi đang cố gắng nhận ra cử chỉ di chuyển chuột xuống, sau đó lên trên. $ 1 Unistroke Recognizer xác định rằng cử chỉ mà tôi tạo ra là một cử chỉ hướng xuống, điều đó là không thể thực hiện được những gì nó phải làm. Những gì tôi thực sự muốn nó làm là nói "Tôi nhận ra một cử chỉ downards VÀ THEN một cử chỉ trở lên."
Tôi không biết liệu sự thiếu hiểu biết của Trình nhận dạng Unistroke 1 đô la có khiến tôi gãi đầu hay không, nhưng có ai có ý tưởng nào về cách nhận biết hai cử chỉ khác nhau khi di chuyển chuột xuống dưới không? Đây là ý tưởng của tôi mà tôi nghĩ có thể giúp tôi nhưng rất thích một người chuyên gia hoặc thậm chí biết nhiều hơn một chút so với tôi để cho tôi biết suy nghĩ của bạn. Bất kỳ trợ giúp hoặc tài nguyên nào mà bạn biết sẽ là rất nhiều đánh giá cao.
Làm thế nào ứng dụng của tôi hiện đang hoạt động:
Cách mà ứng dụng hiện tại của tôi làm việc là tôi chụp điểm từ nơi con trỏ chuột là khi người dùng giữ nút chuột trái. Một danh sách các điểm sau đó được đưa đến một trình nhận dạng cử chỉ và sau đó nó phát ra những gì nó cho là hình dạng/cử chỉ tốt nhất mà cooresponds đến các điểm bị bắt.
Idea của tôi:
Những gì tôi muốn làm là trước khi tôi ăn điểm với nhận dạng cử chỉ là bằng cách nào đó đi qua tất cả các điểm và phá vỡ chúng xuống dòng riêng biệt hoặc đường cong. Bằng cách này, tôi có thể cho mỗi dòng/đường cong vào từng dòng một và từ các chuyển động cơ bản của xuống, lên, trái, phải, đường chéo và đường cong, tôi có thể xác định hình dạng/cử chỉ cuối cùng.
Một cách tôi nghĩ sẽ tốt khi xác định xem có các dòng riêng biệt trong danh sách các điểm của tôi là lấy mẫu các điểm và nhìn vào độ dốc của chúng hay không. Nếu độ dốc của một nhóm điểm lấy mẫu khác với X% từ một số nhóm lấy mẫu khác thì sẽ an toàn khi cho rằng thực sự có một dòng riêng biệt.
gì tôi nghĩ là có thể xảy ra vấn đề trong suy nghĩ của tôi:
ở đâu để tôi xác định khi kết thúc một dòng và sự bắt đầu của một dòng riêng biệt? Nếu tôi sử dụng ý tưởng kiểm tra độ dốc của một nhóm điểm và sau đó xác định rằng có một dòng riêng biệt hiện tại không có nghĩa là tôi đã không tìm thấy được độ dốc của một đường riêng biệt. Ví dụ: nếu bạn vẽ một chữ "L" thẳng với góc vuông và lấy mẫu độ dốc của các điểm xung quanh góc "L", bạn sẽ thấy rằng độ dốc sẽ cho dấu hiệu cộng hưởng có một dòng riêng biệt nhưng những điểm đó không tương ứng với sự bắt đầu của một dòng riêng biệt.
Làm thế nào để đối phó với độ dốc thay đổi bao giờ của đường cong? Trình nhận dạng cử chỉ mà tôi sử dụng các đường cong xử lý đã theo cách tôi muốn.Nhưng tôi không muốn phương pháp của tôi mà tôi sử dụng để xác định các đường riêng biệt tiếp tục tìm kiếm những dòng này được gọi là các đường riêng biệt trong một đường cong bởi vì độ dốc của nó thay đổi tất cả thời gian khi tôi lấy mẫu các điểm. Tôi có thể dừng các điểm lấy mẫu khi độ dốc thay đổi nhiều hơn X% nhiều lần liên tiếp không?
Tôi không sử dụng đúng "loại" toán học để xác định các dòng riêng biệt. Toán học không phải là môn học mạnh nhất của tôi nhưng tôi đã làm một số nghiên cứu. Tôi đã cố gắng nhìn vào Dot Products và xem liệu điều đó có thể chỉ cho tôi theo một hướng nào đó hay không, nhưng tôi không biết liệu nó có thành công hay không. Có ai sử dụng Dot Prodcuts để làm một cái gì đó như thế này hay một số phương pháp khác?
Suy nghĩ cuối cùng, chú thích, Và Thanks:
Một phần của vấn đề của tôi, tôi cảm thấy thích là tôi không biết làm thế nào để compeletly hỏi câu hỏi của tôi. Tôi sẽ không ngạc nhiên nếu vấn đề này đã được yêu cầu (bằng cách này hay cách khác) và một giải pháp tồn tại có thể là Google. Nhưng kết quả tìm kiếm của tôi trên Google không cung cấp bất kỳ giải pháp nào vì tôi không biết chính xác cách đặt câu hỏi của mình. Nếu bạn cảm thấy như nó là khó hiểu xin vui lòng cho tôi biết ở đâu và tại sao và tôi sẽ giúp làm rõ nó. Khi làm như vậy, các tìm kiếm của tôi trên Google sẽ trở nên chính xác hơn và tôi sẽ có thể tìm ra giải pháp.
Tôi chỉ muốn cảm ơn lần nữa vì đã đọc bài đăng của tôi. Tôi biết nó dài nhưng không thực sự biết nơi khác để hỏi nó. Imma nói chuyện với một số người khác xung quanh văn phòng nhưng tất cả các giải pháp tốt nhất của tôi tôi đã sử dụng trong suốt trường học đã đến từ cộng đồng StackOverflow vì vậy tôi nợ nhiều nhờ bạn.
Chỉnh sửa To This Post:
(7/6 4:00 PM) Một ý tưởng tôi nghĩ về được so sánh tất cả các điểm trước khi một điểm Min/Max. Ví dụ, nếu tôi di chuyển chuột downards sau đó trở lên, điểm bắt đầu của tôi sẽ là điểm Max hiện tại trong khi điểm mà tôi bắt đầu di chuyển con chuột trở lên trở lên sẽ là điểm tối thiểu của tôi. Sau đó tôi có thể tiếp tục và xem xét xem có bất kỳ điểm nào sau điểm tối thiểu và nếu có thể nói rằng có thể có một dòng tiềm năng mới. Tôi không biết nó sẽ hoạt động tốt như thế nào trên các hình dạng khác như sao nhưng đó là một điều khác mà Im sẽ xem xét. Có ai đã làm một cái gì đó tương tự như thế này trước đây?
Bạn có hài lòng không nếu Trình nhận dạng của bạn nhận ra đây là một cử chỉ đơn lẻ "XUỐNG LÊN", hay bạn thực sự muốn nó bẻ cử chỉ xuống một chuỗi hai cử chỉ nguyên thủy, {DOWN, UP}? – Beta
Nếu tôi hiểu chính xác bạn đã có một chuỗi các dòng, được xác định bởi mỗi cặp điểm, nhưng muốn đơn giản hóa - chỉ là các dòng "dự định". Tôi đề nghị bạn hãy xem thuật toán đơn giản hóa dòng Douglas-Peucker. Nó sẽ cung cấp cho bạn những gì bạn đang tìm kiếm. http://www.cs.sunysb.edu/~algorith/implement/DPsimp/implement.shtml –
Tôi sẽ hài lòng nếu nó nhận ra nó như là một cử chỉ duy nhất "DOWN-UP".Nhưng nó vẫn sẽ là quan trọng để biết làm thế nào để làm một cái gì đó như viết lên trong bài gốc của tôi trong trường hợp đó là không thỏa đáng nữa. Cảm ơn Vitor. Hãy nhìn vào điều đó ngay bây giờ. : D – Chris