Śledzenie położenia obiektu

Tematyka związana z tworzeniem aplikacji w LabVIEW do obsługi wizji oraz wszelkich operacji na obrazie.
danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Śledzenie położenia obiektu

Post autor: danielbr3 » 09 mar 2021 00:36

Chcę zrobić stół balansujący umieszczoną na nim kulę. W tym celu za pomocą kamery muszę znajdować położenie tej kuli. Jestem początkującym użytkownikiem LabView. Narazie udało mi się połączyć z kamerą z lapka, wyświetlać na bieżąco obraz, zrobić zdjęcie i po nałożeniu 8 filtrów znaleźć obraz taki, aby widoczna była tylko czarna kula na białym tle. Jestem jednak pewny, że istnieje jakiś lepszy sposób. Chciałem przetestować funkcję tracking object, lecz wyrzuca mi że obraz ma niewłaściwy typ. Niestety próby zmieniania różnych bloków nie powiodły mi się i nie wiem jak to odpalić.

Możecie polecić mi w jakim kierunku mam wogóle szukać informacji, jakie opcje najlepiej jest wykorzystać? Może jesteście w stanie polecić mi jakiś dobry kurs obsługi pakietów dotyczących wizji i obróbki obrazów? Byłbym wdzięczny za jakiekolwiek wskazówki w postaci co mogę wykorzystać, jakie etapy muszę przejść aby zrealizować to zadanie.

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 09 mar 2021 01:59

Wrzuć to co już zrobiłeś - łatwiej będzie można pomóc.
Skorzystaj z Vision Assistant'a celem przetestowania poszczególnych funkcji i ich kolejności, a następnie kliknij w nim Tools/Create LabVIEW VI.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 09 mar 2021 23:31

https://ibb.co/jVDg4pW
https://ibb.co/n3q1ds8

Aktualnie mam coś takiego. Przechwytuję obraz z kamery, przy pierwszym obrazie na sztywno narzucam kwadrat który ma być śledzony (docelowo chcę znajdować to pierwsze polozenie kuli poprzez filtry). Co sądzicie o tym sposobie? Może lepiej wykorzystać coś całkiem innego Nie wiem jak w tym przypadku będzie wyglądała precyzja i szybkość procesów. Chciałbym by w stanie obsłużyć 30klatek na sekunde. Obecnie widzę że ta częstotliwość wynosi ok.10-15 ale być może coś wewnatrz któregoś bloku opóźnia, jeszcze sę temu przyglądam (ten delay widoczny na schemacie ustawiony jest na zero).

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 12 mar 2021 01:06

Nasze forum chętnie przyjmuje VI'e lub Snippet'y (obrazki VI'ów, które po wklejeniu stają się działającymi VI'ami) - wrzuć swój kod w tej postaci, a ktoś wtedy może go włączyć i sprawdzić jak działa.

A, jeszcze jedno, posprzątaj ten kod (wyprostuj druty itd.), a wtedy chętniej ktoś na niego zerknie.

No i zapomniałem o najważniejszym - ciężko się analizuje soft, służący do analizy obrazu, bez obrazu, więc wrzuć jakiś obrazek.

Zerknij też na ten przykład:
LabVIEW\examples\Vision\Tracking\Object Tracking.vi
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 15 mar 2021 00:52

Dzięki za radę, zaraz to poprawię. Tylko mógłby mi ktoś powiedzieć jak wrzucić tutaj plik VI? Jestem nowym użytkownikiem forum i niestety nie widzę takiej opcji w bb-code

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 16 mar 2021 23:31

Wrzucam swój plik do śledzenia obiektu. Ogólnie całość jakoś działa, ale mało dokładnie. Nakierowując kamerę na białą kartkę z pomazanymi różnymi wzorami nie jestem w stanie śledzić np. czarnego narysowanego ołówkiem koła o średnicy ok. 2.5cm. Łatwo wtedy się gubi wskaźnik albo nawet całkowicie znika. Jestem natomiast w stanie przesuwać wskazujący prostokąt po kartce za pomocą długopisu (kwadrat śledzi kartkę i tak jakby ucieka przed długopisem). Na ten moment nie za bardzo wiem jak mogę zwiększyć dokładność, może przez nałożenie filtrów na bezpośredni obraz z kamery?


Chętnie bym też pokazał swoje filtry jakie nałożyłem na obraz w VissionAssistant, lecz z jakiegoś powodu nie działa mi opcja create LabView VI w opcjach Tools. Po kliknięciu w nią nie dzieje się kompletnie nic. Niestety pliku z VissionAssistant nie da się tutaj dodać. Ktoś może wie dlaczego nie działa mi ta opcja tworzenia schematu blokowego?
Załączniki
Tracking.vi
Śledzenie
(69.75 KiB) Pobrany 14 razy

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 17 mar 2021 00:13

Wstawiam chociaż zdjęcie z którego w ramach testu chciałem znaleźć środki kul. Może po prostu jest ono zbyt trudne do analizy ze względu na mocne cienie i nie da się w LabView precyzyjnie znaleźć środki tych kul. Chciałem to wszystko sprawdzić dla niekorzystnych przypadków ale może jednak przesadziłem
Załączniki
obraz-na-plotnie-czerwone-kulki.jpg

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 20 mar 2021 11:51

Zerknij na mój pomysł (przygotowany w Vision Assistant). Koncepcja jest taka, że szukasz blobów, a następnie w pętli FOR przesuwasz Find Cicrural Edge do współprzędnych X,Y, czytając je z Center of Mass X i Y funkcji Particle Analisys (ustawiłem kilka dla przykładu, ale w VI'u zrobisz to w pętli). Oczywiście parametry ustawiłem na szybko, ale wstępnie nawet nieźle to działa.
Eksperymentuj, powodzenia.

PS.: Odnośnie: "Niestety pliku z VissionAssistant nie da się tutaj dodać." - tego formatu rozszerzeń forum nie obsługuje, więc zapakuj do zip'a
Załączniki
Kule.zip
(57.08 KiB) Pobrany 15 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 28 mar 2021 15:10

Dzięki za podpowiedzi, myślę, że będę mógł z nich skorzystać. Mam tylko jeszcze kilka pytań.
Dobrze rozumiem, że początkowe zmiany z blokiem particle analysis służą do tego, żeby orientacyjnie znaleźć położenie obiektów do późniejszego szukania ich za pomocą Find circular edge na obrazie oryginalnym. Pierwszy blok Image Buffer zapisuje obraz po pierwszym przekształceniu rozjaśniania, a drugi blok Image Buffer 2 podaje ten obraz do dalszej analizy?
Tutaj obszar do poszukiwania musi być chyba wyznaczony ręcznie. W VI trzeba będzie użyć do tego danych znalezionych za pomocą Particle Analysis?

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 28 mar 2021 23:35

danielbr3 pisze:
28 mar 2021 15:10
Dobrze rozumiem, że początkowe zmiany z blokiem particle analysis służą do tego, żeby orientacyjnie znaleźć położenie obiektów do późniejszego szukania ich za pomocą Find circular edge na obrazie oryginalnym.
TAK
danielbr3 pisze:
28 mar 2021 15:10
Pierwszy blok Image Buffer zapisuje obraz po pierwszym przekształceniu rozjaśniania, a drugi blok Image Buffer 2 podaje ten obraz do dalszej analizy?
Tutaj obszar do poszukiwania musi być chyba wyznaczony ręcznie. W VI trzeba będzie użyć do tego danych znalezionych za pomocą Particle Analysis?
Find Circular Edge operuje na obrazie w kolorach szarości, a nie binarnym. Stąd Image Buffer. Celem jest zautomatyzowanie procesu, a nie wyznaczanie ręczne obszarów poszukiwania. Niestety ta automatyzacja musi być zrobiona przez Ciebie, właśnie w VI'u w pętli FOR, a współrzędne bierzesz dokładnie z Particle Analysis.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 10 kwie 2021 00:05

Może ktoś będzie w stanie mi powiedzieć co jest nie tak z moim VI? Problem polega chyba w tym że przy tworzeniu klastru wartość Annulus jest automatycznie zmieniana na 7. Umieściłem w VI stałe, ta wyżej powstała przez utworzenie bezpośrednio z Vission Assistant i jak ją podłączę to wszystko działa. Tą niżej utworzyłem na podstawie utworzonego przeze mnie klastra i w takiej postaci niestety wyrzuca błąd niewłaściwego ROI
Załączniki
findingCircles2.vi
(151.77 KiB) Pobrany 4 razy
Zrzut ekranu (308).png

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 12 kwie 2021 00:02

Wina leży w troszkę innym miejscu :)
Zerknij na tablicę Coordinates - ona ma 6 elementów, a nie 4. Dodałem dwa zera jako ostatnie elementy i wszystko śmiga :)
Załączniki
poprawka.png
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 12 kwie 2021 00:54

Dzięki wielkie. Też to właśnie dzisiaj zauważyłem i skończylem już swój program. Działa w miarę przyzwoicie, wykrywa 24 z 26 obiektów, niektóre z mniejszą dokładnością. Zastanawia mnie czy da się dopracować to tak by było niezawodne czy jednak realizując swój projekt będę musiał zadbać o dobre warunki oświetleniowe. Błedy pojawiają się już na etapie filtrowania i zmiany obrazu na binarny, nie udaje się w pełni odczytać kształtu samych kul i obszar poszukiwań jest trochę przesunięty względem obiektu albo zbyt mały. Jakby ktoś miał chęć to może zerknąć, czy da się jeszcze coś poprawić w filtrach, ja niestety po wielu próbach nic lepszego nie wymyśliłem. Chyba że w ogóle istnieje jeszcze jakiś inny sposób do przetestowania.
Jeszcze raz dzięki wszystkim za pomoc :D
Załączniki
findingCircles2.vi
(164.58 KiB) Pobrany 1 raz

Awatar użytkownika
smiga
Administrator
Posty: 751
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk
Has thanked: 5 times
Been thanked: 10 times
Kontakt:

Re: Śledzenie położenia obiektu

Post autor: smiga » 13 kwie 2021 20:14

Dobre oświetlenie to podstawa - zawsze warto od tego zacząć.
Kolejny kierunek do eksplorowania, to zastosowanie algorytmów AI, ML, DL - jak zbudujesz dobry model sieci, to na pewno będziesz w stanie lepiej pozycjonować algorytmy do wyliczania środka koła, a może nawet algorytmy ML/DL dadzą Ci wystarczającą dokładność obliczeń tych środków.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek

danielbr3
Posty: 13
Rejestracja: 09 mar 2021 00:29
Wersja środowiska: LabVIEW 2019
Has thanked: 5 times

Re: Śledzenie położenia obiektu

Post autor: danielbr3 » 13 kwie 2021 22:54

W takim razie jeszcze raz dzięki za pomoc, teraz pozostaje tylko połączyć do tego kamerę co już oddzielnie robiłem i zaczynać składać całe urządzenie. Zauważyłem, że przy tak ustawionych blokach główny czynnik wpływający na odczyt położenia to przede wszystkim różne ustawienia thresholding. :D

ODPOWIEDZ