Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kamera internetowa do rozpoznania polozenia i kształtu....

24 Sty 2007 18:26 1775 9
  • Poziom 15  
    Witam!!

    Czytam forum i czytam i odpowiedzi na powyższy temat nie znalazlem (albo slabo szukałem albo nie ma :))

    Moje pytanie brzmi tak:
    Jak za pomocą kamerki internetowej odczytać obraz np prostopadłościanu (z góry) rozpoznać jego kształt oraz kąt pod jakim jest ułożony względem przyjętego układu współrzędnych?

    Kolejne pytanie:

    Jak przetworzyć ten obraz na komputerze? chodzi mi o jakieś algorytmy najlepiej w VC++.

    Ogólny projekt bedzie wyglądał tak, ze na taśmociągu bedzie rzucony w losowy sposób np prostopadłościan, gdy przedmiot dojedzie na koniec taśmociągu ten sie zatrzyma i zostanie odczytany obraz z kamery internetowej. Nastepnie zostanie przetworzony(rozpoznany kształt i kąt położenia) a następnie na podstawie tego kąta zostanie ustawione odpowiednio ramie robota które sciągnie przedmiot z tasmociagu i włoży do odpowiedniego pudełka.

    Dzieki za zainteresowanie tematem. I prosze o jakiekolwiek wskazówki na ten temat.

    Pozdrawiam....
  • VIP Zasłużony dla elektroda
    Jako software polecam Matlaba - ma sporo gotowego jeśli chodzi o przetwarzanie obrazów i wygodnie się w nim pisze, nie poraża szybkością, ale szybkie kompy są już dość tanie

    Prostopadłościany będą stałego koloru, czy będą różne? Za każdym razem będzie inny kształt czy będzie tylko kilka typów?

    O rozpoznawaniu obrazów napisano wiele książek, ale podejrzewam że gotowca się nie znajdzie
  • Poziom 15  
    McRancor napisał:

    Prostopadłościany będą stałego koloru, czy będą różne? Za każdym razem będzie inny kształt czy będzie tylko kilka typów?


    Beda jednego koloru. Jezeli chodzi o kształt to bedzie 3 góra 4 kształty,ale niezbyt skomplikowane, np, prostopadłościan, sześcian, cos w kształt litery L i cos na kształt litery C...




    A jezeli chodzi o ksiazki to mogłbyś podać pare przykładów... ewentualnie moga byc w jezyku angielskim.

    Mathlab jest faktycznie trochę wolny, ale wiem ęe posiada takie możliwości. Nie znam go na tyle i nie wiem czy można w nim napisać samodzielny program, który będzie pracował jako osobna aplikacja, czy będzie potrzebował do pracy środowiska Mathlab ?

    Pozdrawiam...
  • Poziom 15  
    To ma być właśnie praca żeby zrobić takie urządzenie :) a raczej podobne... Gotowe rozwiązanie raczej nie wchodzi w rachubę....bo byłoby za łatwo.

    Ale i tak dzięki za zainteresowanie :)
  • Poziom 18  
    Pomysł (nie mój):
    1. Bierzemy jedną klatkę obrazu na warsztat.
    2. "Centrujemy obiekt i skalujemy, aby był na środku interesującego nas obszaru i możliwie maksymalnie wypełniał ten obszar.
    Zapewne trzeba by było dokonać jeszcze jakieś dodatkowe operacje na obrazie, aby był dobrej jakości i jednocześnie był jak najprostszy do dalszej obróbki - to już zależy od konkretnego problemu.
    3. wybieramy linie przechodzącą przez środek obszaru, robimy jej FT i zapisujemy do tablicy
    4. obracamy obszar o zadany kont (wedle potrzeby)
    5. powtarzamy od kroku 3. aż do zebrania kompletnych danych (pełny obrót, ale wydaje mi się, że pół mogło by wystarczyć - nie pamiętam w tej chwili)
    W ten sposób mamy zebraną charakterystykę obiektu.

    Porównując z biblioteką analogicznych charakterystyk wzorcowych wiemy co to za obiekt, a sprawdzając przesunięcie w tablicy, wiemy o jaki kąt jest obrócony.


    Jeśli chodzi o kwestie techniczne, jakakolwiek kamera, którą uda Ci się podłączyć i sprzęgnąć z softem, i która będzie dawała obraz o zadowalającej jakości, będzie dobra.


    Jeśli chodzi o stronę algorytmiczną, polecam generalnie OpenCV
  • Poziom 15  
    Witam

    Hmm... no to jest pewne rozwiązanie , ale .... :)

    1. Całość ma zostać przetworzona w czasie nie dłuższym niż 3 sekundy, razem z podaniem współrzędnych robotowi.

    2. Centrowanie nie ma tutaj sensu, bo nikt tego ręcznie nie będzie robił, to ma się dziać automatycznie.

    3. Obracanie obrazu ... (wydaje mi się że ta operacja zajmuje zbyt wiele czasu)

    Mimo to dzięki za zainteresowanie...

    Czekam na dalsze propozycje..... :)
  • Poziom 18  
    No wiesz, warto czasem twórczo i bardziej inteligentnie podejść do problemu ;)

    add 1. 3 sek. to mimo wszystko masa czasu.
    W oparciu o podaną przeze mnie ideę działają niektóre systemy wykrywania w obrazach radarowych samolotów z rozróżnieniem na "nasze" i "obce"

    add 2. Daje się takie rzeczy robić automatycznie i nie zajmuje to wiele czasu. Wszystko jedzie na taśmie, którą traktujesz jako tło. Na tle wykrywasz bloba który obejmuje wszystko co nie jest tłem i masz wszystko jak na tacy. Potem przetwarzasz już tylko interesujący Cie obszar.

    add 3. Tu właśnie kłania się odrobina inteligencji ;)
    To jest tylko algorytm, jak go zaimplemetujesz zależy od Ciebie. Zamiast obrazem, możesz przecież obracać "oknem" wycinającym pasek informacji z obrazu.
  • Poziom 15  
    :)

    No wiesz być może :) jak narazie jestem zielony w temacie.... Czytam różności na WWW i w książkach a i tak za bardzo nie wiem o co jeszcze w tym wszystkim chodzi...

    Jak możesz albo znasz gotowe algorytmy, albo cos podobnego... Jakies strony, ksiażki to napisz.

    Takie ogólne rzeczy to juz mniej wiecej wiem co i jak, ale teraz czas na szczegóły....;)

    Pozdrawiam
  • Poziom 18  
    Jest taka książka:
    "Intelligent Vision Systems for Industry"
    Bruce G. Batchelor, Paul F. Whelan
    ~500str.

    zresztą polecam ten watek:
    https://www.elektroda.pl/rtvforum/topic352683.html


    Jak chcesz to implementować na platformie Intela i nie jest to zagadnienie czysto hobbystyczne,
    to warto rozważyć zdobycie biblioteki IPP Intela.
    Darmowa (okrojona) wersja na Linuxa, albo komercyjna na Win, Linux, etc.
    Znacznie przyspiesza wszelkie operacje matematyczne i bardziej zaawansowane prztwarzanie.