Find Circular edge 3

Tematyka związana z tworzeniem aplikacji w LabVIEW do obsługi wizji oraz wszelkich operacji na obrazie.
SNT
Posty: 55
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Find Circular edge 3

Post autor: SNT » 26 lis 2013 16:03

Witam. Używam funkcji Find circular edge 3 do wyszukania okręgu. Wszystko działa dobrze tylko potrzebuję się dostać do punktów (ich współrzędnych), które są używane do "fitowania" okręgu. Prawdopodobnie gdzieś są zapisane, bo ustawiając w Options show edge found= True widzę na rysunku żółte punkty. Próbowałem je kopiować (imaq copy overlay) i wyciągnąć właściwości (get overlay property) ale to nic nie pomogło.
Ktoś wie czy da się to zrobić, a jak tak, to jak to można zrobić?
Pozdrawiam.

folon
Posty: 19
Rejestracja: 03 sty 2008 09:43
Wersja środowiska: LabVIEW 2012
Lokalizacja: Wrocław

Find Circular edge 3

Post autor: folon » 26 lis 2013 18:58

Czy Ty szukasz współrzędnych tych punktów aby zweryfikować działanie funkcji Find circular edge?

1) Jeśli nie i wszystko działa ok (zresztą tak jak piszesz): to ta funkcja zwraca Ci punkty X i Y centrum oraz radius, więc jesteś w domu i możesz sobie je sam wyznaczyć...

2) Jeśli tak: to na mój blokerski rozum jest to nielogiczne, więc albo funkcja, której używasz jest zła, albo jej ustawienia (typu threshold, strenght, coś co określa "jakość" lub "wyrazistość" tego obiektu). Jak się temu przyjrzeć to tak jakbyś dodał dwie liczby, dostał wynik, a później od tego wyniku odjął pierwszą z tych liczb i zobaczył czy aby wyjdzie druga…

ad.1) Jeśli ten sposób Ci się nie podoba, to przychodzi mi do głowy inny, ale dość karkołomny. Zaznaczam, że być może istnieje VI na wyciągnięcie tych punktów, ale takiego sobie nie przypominam więc...można się pobawić. Przed wyszukaniem okręgu kopiujesz ten obrazek, później na oryginalnym obrazku wykonujesz Find circular edge i nadpisujesz otrzymany overlay na ten obraz (IMAQ Merge Overlay). W efekcie overlay staje się częścią oryginalnego obrazka. Następnie używasz operatora odejmowania obrazków i powinieneś (?) dostać obrazek w którym widać tylko punkty overlaya. Następnie już dość łatwo powinieneś znaleźć te punkty...Spróbuj i daj znać:)

SNT
Posty: 55
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Find Circular edge 3

Post autor: SNT » 26 lis 2013 22:56

Na początku dzięki za zainteresowanie.
Może trochę źle się wyraziłem pisząc, że wszytko działa dobrze. Już wyjaśniam:
1)Tak, szukam tych punktów, żeby zweryfikować, czy powstały okrąg jest tym właściwym.
Algorytm wygląda miej więcej tak, że rozpoczynam szukanie mniej więcej tam, gdzie powinien być okrąg, sprawdzam pierwszy znaleziony (dostaje centrum X i Y oraz radius), idę w to miejsce i po raz kolejny szukam okręgu. Jeżeli współczynnik błędu będzie bardzo mały to jest to prawdopodobnie ten okrąg. Jeżeli natomiast współczynnik błędu jest duży to powtarzam szukanie z początkowej pozycji + jakiś krok.
2)Problem polega na tym, że może zostać wykryty okrąg na podstawie kilku np.trzech punktów. Błąd może być bardzo mały (punkty leżą na okręgu), ale oczywiście to nie będzie pożądany okrąg. Dlatego chcę dotrzeć do informacji, na podstawie ilu punktów został wyznaczony okrąg (taka informacja jest np. przy fitowaniu prostej na podstawie punktów).
ad1. Próbowałem użyć tej funkcji ale widocznie robiłem to w zły sposób. Sprawdzę jutro jeszcze raz i dam znać.
Natomiast jak na razie sam napisałem funkcję wykrywającą okrąg na podstawie funkcji wykrywania krawędzi. Linie rozchodzą się promieniście w pierścieniu. Jeszcze użyję funkcji fit circle i powinno działać. Jutro zrobię screena i wrzucę.
Pozdrawiam.

SNT
Posty: 55
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Re: Find Circular edge 3

Post autor: SNT » 27 lis 2013 09:16

Tak wyglądają moje funkcje:
Załączniki
szukanieOkregu.png

SNT
Posty: 55
Rejestracja: 18 lip 2013 13:23
Wersja środowiska: LabVIEW 2013

Find Circular edge 3

Post autor: SNT » 27 lis 2013 10:58

folon,
ad.1) Jeśli ten sposób Ci się nie podoba, to przychodzi mi do głowy inny, ale dość karkołomny. Zaznaczam, że być może istnieje VI na wyciągnięcie tych punktów, ale takiego sobie nie przypominam więc...można się pobawić. Przed wyszukaniem okręgu kopiujesz ten obrazek, później na oryginalnym obrazku wykonujesz Find circular edge i nadpisujesz otrzymany overlay na ten obraz (IMAQ Merge Overlay). W efekcie overlay staje się częścią oryginalnego obrazka. Następnie używasz operatora odejmowania obrazków i powinieneś (?) dostać obrazek w którym widać tylko punkty overlaya. Następnie już dość łatwo powinieneś znaleźć te punkty...Spróbuj i daj znać:)
Ten karkołomny sposób nie jest aż taki zły. Wystarczy użyć wspomnianej funkcji IMAQ Merge Overlay => daje biały obraz z overlay'em (w moim przypadku są to żółte punkty). Później wystarczy znaleźć te punkty. Uwaga! Na jeden punkt może przypadać kilka pikseli! Należy zwrócić na to uwagę przy wyszukiwaniu.
Załączniki
punkty.png

ODPOWIEDZ