2013-05-20 14 views
6

Pracuję nad projektem w robotyce za pomocą aparatu z Androidem. Robot może poruszać się i czyścić powierzchnię, jeśli na ścieżce znajdują się jakieś przedmioty. Utknąłem w wykrywaniu obiektów na ścieżce, nie używam żadnych czujników, aby znaleźć odległość między kamerą a obiektami. Używam tylko kamery, aby znaleźć obiekty na ścieżce. Nie chcę dowiedzieć się kształtu, typu, koloru obiektu na ścieżce. małe obiekty w ścieżce można ignorować takich jak piasek, trawa itp Nie powinno być żadnych dużych obiektów w ścieżce (w części oznaczonej na rysunku poniżej)Wykrywanie prawdziwego obiektu za pomocą kamery. Możliwości znalezienia prawdziwych obiektów za pomocą kamery

enter image description here

Podczas wykrywania obiektów za pomocą obrazów z kamer , cienie, są wykrywane jako obiekty. Z powyższego rysunku symbol muzyki jest wykrywany jako obiekt. Czy istnieje jakaś płatna lub otwarta biblioteka źródłowa do wykrywania wykrywania obiektów rzeczywistych za pomocą kamery (będzie bardziej przydatna, jeśli będzie użyta w Javie lub w C++). Próbowałem opencv, javacv, jhlabs, jjil, aviary sdk, jiu, imagemagic, itp. Ale nie gdzie mogę znaleźć dokładne rozwiązanie dla mojej potrzeby. Jeśli ktoś pracuje z tym przetwarzaniem obrazu, zasugeruj mi, co mogę zrobić w wykrywaniu obiektów rzeczywistych za pomocą aparatu z Androidem. Jeśli nie jest to możliwe, proszę podać mi wyjaśnienie, dlaczego nie było to możliwe.

Możliwości próbowałem:

  1. algorytm rozpoznawania twarzy (detekcja cecha): - algorytm wykrywania twarzy w oparciu o dopasowanie wzoru. Które nie ma zastosowania w tym przypadku. tzn. obiekt może być cokolwiek lub w dowolnym kształcie. Nie ma wzoru dopasowania.

  2. Rozpoznawanie obiektów: Rozpoznawanie obiektów również robi to samo, co dopasowanie do wzoru. Nie chciałem rozpoznać obiektu, chciałem tylko dowiedzieć się, że jest to obiekt w zaznaczonej części obrazu i jest to obiekt rzeczywisty (tj. Nie są to obrazy podłogi, cienie itp.).

  3. Wykrywanie krawędzi: Wypróbowałem różne algorytmy wykrywania krawędzi, ale które również nie są dla mnie dokładne. tj. obrazy i cienie o krawędziach, więc nie możemy założyć, że krawędzie, które znaleźliśmy, są prawdziwymi przedmiotami.

+1

Rozwiązałeś to? Czy próbowałeś znaleźć typowe obrazy ze zniekształconych obrazów? Łatwo jest wdrożyć rozmycie gaussowskie, ponieważ jest to tylko średnia otaczających pikseli umieszczonych bezpośrednio w matrycy okna? Inne zniekształcenia również nie są zbyt trudne. Jeśli chodzi o czas rzeczywisty, możesz spowolnić działanie bota, gdy coś znajdzie i przetworzy to, co znajdziesz, a następnie kontynuować. Wypróbuj http://www.amazon.com/dp/013168728X/?tag=stackoverfl08-20. Przepraszam, wykonałem swoją pracę w Javie. –

+0

Dzięki Andrew. Sprawdzę to i podzielę się wynikami tutaj. Mam jakieś projekty inne niż teraz, kiedy stanę się wolny, sprawdzę to. – Sujith

Odpowiedz

4

Jeśli ktoś pracuje z tym przetwarzanie obrazu proszę sugerować mi, co mogę zrobić w prawdziwym wykrywania obiektów za pomocą aparatu android. Jeśli nie jest to możliwe, proszę podać mi wyjaśnienie, dlaczego nie było to możliwe.

W czasie rzeczywistym, wykrywanie obiektów w locie jest obszarem intensywnych badań.

W tej chwili nasze istniejące algorytmy umożliwiają jedynie dopasowywanie wzorców i wyszukiwanie wstępnie zdefiniowanych obrazów w ramce kamery.

Problem z wykrywaniem świata rzeczywistego polega na tym, że prawdziwy świat jest zbyt ... prawdziwy. Masz wiele odmian dowolnego rodzaju obiektów lub przedmiotów i niemożliwe jest, aby jedna biblioteka zapewniała im wykrywanie. Wykrywanie prawdziwego świata jest możliwe tylko dzięki obszernym generacjom danych i szkoleniom za pośrednictwem uczenia maszynowego, które wymagają większej mocy obliczeniowej i mocy baterii, niż może zapewnić większość urządzeń mobilnych.

+0

Dzięki Raghav Sood, proszę dać mi znać, jeśli znajdziesz jakieś możliwości dotyczące tego .. – Sujith

1

Zrobiłem dużo poza analizą obrazu w monitoringu wideo. Najpierw musisz określić, jaki jest wskaźnik sukcesu, którego potrzebujesz. Jeśli próbujesz tego wszystkiego na jednym obrazie, prawdopodobnie wiesz, że to nie zadziała :). W analizie wideo możesz wyszukać dobre algorytmy wykrywania ruchu, które zapewnią ci wszystkie ruchome obiekty na pewnym tle.Masz trudniejszy przypadek, w którym się poruszasz. W jakiś sposób musisz wymodelować to tło. Jeśli chcesz, aby twój robot poruszał się po kolorowym tle, takim jak na przykład farba, jak zamierzasz wiedzieć, co jest obiektem bez percepcji głębi. Może spróbuj czegoś z cieniami, ale nie. I w końcu te algorytmy są tak intensywne, im lepszy wynik, tym więcej mocy procesora potrzebujesz. Android nie jest do tego przeznaczony. Możesz zrobić proste przetwarzanie, ale chcesz znacznie więcej niż jest to obecnie możliwe.

Najważniejsze jest to, że musisz nieco zmienić swoje potrzeby/zasoby.

PS. Jeśli uda Ci się to zrobić, jak wcześniej powiedziałeś, zobaczymy cię na jakimś jachcie z pięknymi modelami

Miej nadzieję, że to pomaga i cieszy się Twoją pracą.

+0

Dzięki Marko Lazic. Daj mi znać, jeśli wypróbowałeś jakiekolwiek biblioteki przetwarzania obrazu. To łamie serce, by myśleć, że będę tęsknił za jachtem;) – Sujith

0

myślę, że należy używać więcej niż jednego aparatu ..... dając dwuwymiarowego widoku do obrazu ..... nadzieję, że to pomoże ....

+0

Dzięki temu zamienię. Proszę, pozwól mi, jeśli znalazłeś cokolwiek na ten temat. – Sujith

2

Możesz też zapoznać się z technikami zwana strukturą z ruchu. Jeśli masz serię zdjęć z tej samej kamery, zrobionych w krótkich odstępach czasu, możesz uzyskać kilka informacji 3D o scenie na zdjęciach. Pechowo, nie znam żadnej biblioteki, która zrobiłaby to dla Ciebie po wyjęciu z pudełka, ale jest to dość popularny problem, więc niektóre wyszukiwania mogą dać ci gotowe rozwiązanie.

+0

Dzięki morynicz za informację. Szukałem struktury od ruchu, niesamowitego kolesia pojęciowego. – Sujith

+2

Cześć morynicz, właśnie znajduję kilka próbek struktury z ruchu w nadroid. sprawdź to demo: https://play.google.com/store/apps/details?id=org.boofcv.android. Źródła: https://github.com/FedeCamposeco/Android-SfM-client, https://github.com/lessthanoptimal/BoofAndroidDemo. – Sujith

1

Jeśli kamera jest równoległa do podłoża, a powierzchnia jest zwykle płaska, można oszacować odległość obiektów, biorąc pod uwagę ich położenie na ramie wideo. Zmierz odległość obiektu, bardziej na górze obrazu, który będzie. W rzeczywistości można oszacować wartość w metrach z pewnym hałasem, tak jak my, ludzie.

Myślę, że twój problem rozpoznawania "prawdziwych obiektów" można przetłumaczyć na: "Nie znajduj płaskich (na ziemi) elementów wizualnych, innymi słowy, znajduj obiekty o pewnej wysokości".

Czy rozważałeś podejście stereo? Korzystając z dwóch aparatów, lepiej radzisz sobie z problemami trójwymiarowymi.

+1

Dzięki Marvin za odpowiedź .. Odnalezienie odległości jest rozwiązaniem .. Ale problemem jest to, że nie możemy oszacować odległości od obiektów do kamery w Androidzie .. Nie ma czujnika, aby znaleźć odległość w Androidzie .. – Sujith

Powiązane problemy