2011-11-17 7 views
8

Planuję, aby umożliwić użytkownikowi narysowanie kształtu liczby (od 1 do 9) w kształcie 7-segmentowego wyświetlacza. Jaki jest najlepszy sposób na wykrycie, która liczba została narysowana?Najlepszy sposób rozpoznawania liczby narysowanej palcem użytkownika na ekranie iPhone'a

Wiem, jak wykonać wszystkie czynności dotykowe i UIGestureRecogniser - szukam dobrej logiki.

Do tej pory mam: Gdy dotyk przesuwa się z 1 połowy segmentu na drugi, zaznacz ten fragment. Po zakończeniu dotknięć sprawdź, które segmenty zostały podświetlone i zdecyduj, jaki numer narysować.

Sposoby na ulepszenie: Narysuj kształt ścieżki palca na ekranie. Jeśli linia przecina środek seg, zaznacz ten fragment.

Ktoś ma jakieś wskazówki lub lepsze sposoby na zrobienie tego? Jestem otwarty na wszelkie sugestie - nawet jeśli oznacza to złomowanie całego mojego kodu i zaczynanie od zera.

+0

Wygląda na to, że najpierw musiałbyś trenować aplikację, więc kilka razy narysowaliby od 0 do 9, to jak to robią, to robią to, gdy próbujesz ustalić liczbę . Powodzenia. –

+0

Czy musisz korzystać z tej techniki segmentowania? Byłoby to prawdopodobnie idealne rozwiązanie dla niektórych sieci neuronowych. – janoliver

+0

Dzięki za sugestie. Wypróbuję pomysł sieci neuronowej – Craig

Odpowiedz

6

Użyłem implementacji identyfikatorów $ uderzeń dla rozpoznawania wyciągniętych cyfr.

Oba algorytmy odwołują się do kilku C obiektywnego/iOS realizacji.

Urządzenia rozpoznające porównują dane wejściowe ze wstępnie zdefiniowanymi wzorcami na podstawie różnych algorytmów (szczegółowe objaśnienie dostępne na połączonych stronach). Aby to działało, musisz utworzyć własne wzorce numerów (w zasadzie po prostu narysuj coś i pozwól, aby urządzenie rozpoznające przekształciło je w strukturę danych, którą przechowujesz do późniejszego wykorzystania). Następnie na wejściu użytkownika porównaj wzorce, które wcześniej nagrałeś, aby znaleźć dopasowanie.

Rozpoznacz 1 USD był wystarczający dla mojego wniosku, w którym pozwoliłbym, aby użytkownik najpierw ćwiczył rysowanie liczb. Odbiornik $ N jest w stanie rozróżnić bardziej złożone stery i może akceptować bardziej złożone narysowane liczby. To jest coś, z czym będziesz musiał eksperymentować.

+0

Dziękuję bardzo za te informacje. Niestety, pierwszy odsyłacz projektu obj-c dla czytnika o wartości 1 USD jest zepsuty, ale są też inne, które spróbuję, jak tylko będę mógł! – Craig

+0

Wypróbowałam to dzisiaj: https://github.com/preble/GLGestureRecognizer. Cieszę się, że to działa CAŁKOWICIE. Jeszcze raz dziękuję za fantastyczny link! – Craig

+0

chętnie pomogę –

2

Jeśli chcesz wykryć liczby 1-9, sprawdź numer BGNumericalGlyphRecognizer. Spędziłem kilka miesięcy pracując z rozpoznawaczem $ N-multistroke, aby stworzyć ScribbleMath (aplikację matematyczną, która pozwala dzieciom narysować odpowiedzi na ekranie) i otworzyć główną logikę. Okazuje się, że identyfikatory $ N mają trudność w odróżnieniu od 6 do 9, a także źle rozpoznają bardzo proste litery, takie jak 1 i "-", i stworzyłem logikę, aby lepiej sobie z nimi radzić. To nie jest doskonałe, ale pozwoli ci wyjść dalej niż odbiornik $ N po wyjęciu z pudełka. Cieszyć się!