Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wyznaczanie położenia obiektów 3D za pomocą dwóch kamer.

15 Oct 2007 17:40 3856 25
NDN
  • #1
    Anonymous
    Level 1  
  • NDN
  • #3
    Anonymous
    Level 1  
  • NDN
  • #4
    Maly
    Level 32  
    Na Politechnice Łódzkiej powstał projekt robota, który miał rozpoznawać obraz na podstawie różnic obrazów z dwóch kamer. Ale z tego co wiem, algorym był dość skomplikowany i wątpię, aby autor zgodził się go udostępnić. bynajmniej to pracowało i zdawało egzamin.
  • #5
    Fyszo
    Level 37  
    Dopóki nie istnieje technologia dorównująca tkankom biologicznym wszystko co oparte jest o biologiczny sposób identyfikacji nie zda egzaminu. Oko posiada jeszcze coś takiego jak ogniskowanie. I musisz dołożyć jeszcze jedną zmienna 'ogniskową' soczewki kamery. Odległość można wyznaczyć z trójkąta tworzonego z: 1-kamera,2-kamera, obiekt. I przeliczyć kąty patrzenia kamer. Dokładność wykonania powinna byc jak najlepsza. A kamery jak najbardziej oddalone.
  • #6
    Anonymous
    Level 1  
  • #7
    qrdel
    Level 28  
    Zacznij pisać po polsku, to może uwierzymy że potrafisz przeczytać ze zrozumieniem.

    W rzeczywistym świecie potrzebujesz mózgu małpy wstawionego do pojazdu, żeby się orientował.
    Najpierw potrzebny jest "feature detector", proces wyróżniania obiektów z tła, dopiero potem możesz określać ich położenie.
    Proponuję pewne ułatwienia: Całe otoczenie jasno-szare (białe + cienie) a na nielicznych przeszkodach średnio duże czarne kropy.

    Algorytm:
    1. w obrazie jednej kamery znaleźć kropę.
    2. z obrazów obu kamer wyciągnąć po parę linii poziomych (zakładam że kamery rozstawione w poziomie) i uśrednić dane w pionie, w wyniku wychodzą 2 funkcje zależności jasności od przesunięcia.
    3. Znaleźć różnicę położenia kropy na obu obrazach (można potraktować jako różnicę fazy dwóch sygnałów)

    To oczywiście zgrubne pomysły ad hoc , ale chyba realne. Potem możesz w białym świecie wszystkie obiekty malować w pionowe czarne paski (albo tylko krewędzie).

    Zresztą może prościej odwrotnie, w czarnym, wyciemnionym pustym pomieszczeniu z "sufitu" wiszą jedynie żarówki (diody) a robot ma je omijać.
  • #8
    Anonymous
    Level 1  
  • #9
    qrdel
    Level 28  
    No cóż, przy takim podejściu wiele nie pomogę.
    Piękną jest cecha wielkomyślności pozwalająca porywać się na wielkie dzieła, ale tylko w połączeniu z realnym spojrzeniem nie naraża na śmieszność.
    Poczytaj o budowie i funkcjonowaniu siatkówki ((i to raczej nie u człowieka a u muchy [tzn. u niej to oka złożonego]) , można tam znaleźć ciekawe patenty i to już ewolucyjnie przetestowane.
    ---
    A jednak dobrze pamiętałem, muchy mają siatkówkę.
  • #10
    Fyszo
    Level 37  
    atom1477 wrote:
    Niestety takie "uproszczenia" są nie do przyjęcia.
    A jak kamery zobaczą kilka kropek to skąd algorytm ma wiedzieć która kropka to która? To już łatwiej jest rozpoznawać rzeczywiste przeszkody bo one przynajmniej w 99% będą się różniły od siebie.
    Jak już mam dawać kropy to wystarczy jedna kamera a odległość będzie się wyznaczało z wielkości kropy. Ale mi nie o to chodzi.


    Nawet ten sam obraz z 2 innych kamer będzie inny. Różnice w rozrzucie parametrów musisz skorygować, co spowoduje utrate części szczegółów. Procesorek w myszce optycznej obrabia tylko 48 pikseli a u ciebie prawdopodobnie 2xVGA. Nawet jak napiszesz program to nie bedzie działał w czasie rzeczywistym.
  • #11
    qrdel
    Level 28  
    Jeśli chodzi o algorytmy to załączam parę "na szybko" wybranych artykułów o realnie działających systemach:

    na wstęp proponuję:

    http://www.jneurosci.org/cgi/reprint/13/11/4563?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=0&sortspec=relevance&resourcetype=HWCIT

    a potem drobniejsze szczegóły

    http://jn.physiology.org/cgi/reprint/86/2/950

    http://jn.physiology.org/cgi/reprint/77/3/1487

    http://www.nyu.edu/projects/desplan/papers/2004%20Wernet%20review%20Trends%20Cell%20Biol.pdf

    http://www2.cnrs.fr/en/582.htm

    http://www.jgp.org/cgi/reprint/97/4/777.pdf

    http://www.pubmedcentral.nih.gov/picrender.fcgi?artid=1691462&blobtype=pdf

    http://jn.physiology.org/cgi/reprint/77/3/1487

    http://www.jneurosci.org/cgi/reprint/19/3/1122

    http://www.jneurosci.org/cgi/reprint/15/8/5596?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=0&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/22/8/3227?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=0&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/19/18/8049?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=0&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/26/30/7898?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=0&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/11/9/2768?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=30&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/25/46/10577?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=20&sortspec=relevance&resourcetype=HWCIT

    http://www.jneurosci.org/cgi/reprint/25/15/3985?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=retina+fly+move&andorexactfulltext=and&searchid=1&FIRSTINDEX=20&sortspec=relevance&resourcetype=HWCIT

    http://www.pubmedcentral.nih.gov/picrender.fcgi?artid=1691254&blobtype=pdf

    życzę powodzenia w kodowaniu ;-)
  • #12
    Anonymous
    Level 1  
  • #13
    Fyszo
    Level 37  
    Wyobraź sobie że pół zdjęcia masz drzewo w odległości 100m i drugie pół kawałek płotu z odległości 1m. Poza tym nic więcej nie ma, ostrość i kontrast znakomite. Czy twój robot ominie płot czy na niego wjedzie. Tylko nie pisz że ominie, napisz lepiej dlaczego. Co z sytuacją gdy zasłonisz jedna kamerę (np. tym płotem).
  • #14
    Anonymous
    Level 1  
  • #15
    Anonymous
    Level 1  
  • #16
    Anonymous
    Level 1  
  • #17
    Anonymous
    Level 1  
  • #18
    qrdel
    Level 28  
    No rzeczywiscie.
    A to przecie najstraszniejszy problem robotyki.
  • #19
    Fyszo
    Level 37  
    Przeszkadza ci konstruktywna krytyka?
  • #20
    Anonymous
    Level 1  
  • #21
    Anonymous
    Level 1  
  • #22
    Fyszo
    Level 37  
    Nazywaj rzeczy po imieniu - układ kartezjański i układ biegunowy.

    PS. Jak ci się udało otrzymać ścianę na rysunku skoro nie powinna reagować na twój algorytm. I te zdjęcia to robiłeś z góry?
  • #23
    Anonymous
    Level 1  
  • #24
    Fyszo
    Level 37  
    Słuchaj: wyjaśnij co to za zdjęcia, bo na nich masz widoczną płaską ścianę której twój agorytm w takim stanie jak podałeś nie jest w stanie określić (bo obie kamery widzą identyczny obraz). Rzut zdjęć jest z góry, poddawałeś go obróbce?

    Druga sprawa to jakim sposobem na rysunkach wychodzą ci takie ładne kółeczka po butelkach skoro kamerujesz z jednej strony?
  • #25
    Anonymous
    Level 1  
  • #26
    Fyszo
    Level 37  
    Niewidziałem rys1 bo go nie udostepniłeś (sama ramka z nazwą - bez rysunku)