Mam śledzoną robotkę i kontroluję ją za pomocą iPhone'a. Robot wysyła obraz z kamery na żywo o znanym rozmiarze klatki, a ja wyświetlam go na UIImage.
Dodałem wskaźnik laserowy do robota i naprawiłem go wzdłuż osi robota. Próbuję wykryć kropkę wskaźnika laserowego na obrazie, a tym samym obliczyć bliskość obiektu. Jeśli kropka lasera znajduje się daleko od centrum, wiem, że robot przylgnął do ściany i musi się cofnąć.
Jak mogę wykryć kropkę jasnych biało-czerwonych pikseli na ekranie? Jednym rozwiązaniem byłoby próbkowanie koloru pikseli w pewnym promieniu środka i wykrywanie jasnego koloru kropelki. Czy ktoś może zasugerować algorytm dla tego działania?
Innym podejściem byłoby śledzenie średniej pozycji kropki w ostatnich kilku klatkach, zmniejszając w ten sposób promień orientacji. Jeśli w zdefiniowanym regionie nie ma kropki, region wyszukiwania może zostać rozszerzony.
Wreszcie, chcę nauczyć robota wykrywania dywanu wokół niego. Dywan w pewien sposób odzwierciedla wskaźnik laserowy i chcę zrozumieć, ile ramek wokół robota ma podobne właściwości. Jeśli wiem, gdzie znajduje się wskaźnik laserowy na ekranie, mogę wyciąć mały prostokąt z tego obrazu i porównać je ze sobą. Czy istnieje skuteczny sposób porównywania wielu małych obrazów, aby sprawdzić, czy ich sylwetki pasują do siebie?
Zauważyłem, że laser odbija się od błyszczących powierzchni, a kierunek tego odbicia może mi powiedzieć coś o orientacji powierzchni w przestrzeni, zgodnie z prawami refrakcji.
Dziękuję Ci!