Strona 1 z 1

Obrazy w IMAQdx jako array

: 11 lis 2009 21:31
autor: mikema72
Witam. Po dwóch dniach prób i szukania rozwiązań poddałem się :-\ . Mój problem polega na tym że chciałem odebrać obraz z kamery DFK 41bf02 podłączonej przez FireWire i trochę go potem obrobić. Dokładniej to mam już podgląd obrazu jako Image i niby jest wszystko w porządku ale gdy włączam opcję czekania na bufor obraz zaczyna migać (przykład na dole), jak ustawie bez czekania na bufor to wszystko jest OK (opcja Immediate w Grab - Legacy). Ale dokładnie mój większy problem polega na tym że przez to że obrazek w IMAQ jest tylko jako referencja to nie umiem stworzyć z tego czegoś arraya np. za pomocą Shift Registerów. Jak zrobić taką tablicę obrazów w pamięci aby można było je potem poobrabiać i pooglądać w trybie "offline". Próbowałem różnych sposobów od zamiany na stringi poprzez zamiane na tablice i zapis do pliku ale to wszystko za wolne. Zaznaczam że interesuje mnie około 15 klatek na sek. w rozdzielczości ~1280x960 rejestrowana w czasie ok 30 sek. Niestety wszystkie moje rozwiązania są za wolne. Proszę o wszelkie możliwe pomysły bo już nie wiem czego się chwycić. :( Jak coś jest niejasne to pytajcie...

Re: Obrazy w IMAQdx jako array

: 11 lis 2009 21:52
autor: coolfon
Napisałem kiedyś program, w którym musiałem zapamiętywać kolejne klatki obrazu (źródło - webcam). Aby uwolnić się od referencji i otrzymać obraz w formie tablicy korzystałem z funkcji IMAQ ColorImageToArray. Kolejne tablice zapamiętywałem właśnie w Shift Register.
Wrzuć jakieś swoje rozwiązanie, które było "za wolne". Może uda się je przyspieszyć ;)

Re: Obrazy w IMAQdx jako array

: 13 lis 2009 13:14
autor: mikema72
Niestety tak jak pisałem użycie klocka IMAQ ColorImageToArray to zwolnienie u mnie do około 3-4 klatek na sek. Niestety to za mało. Ale wymyśliłem coś innego. Może robić kolejne zdjęcia Snap-em i potem zrobić z nich film. Tylko muszę zobaczyć co z czasami. Prośbę swoją ponawiam co do pierwszego problemu (zniekształceń). Nie wiem co to może być...

Re: Obrazy w IMAQdx jako array

: 13 lis 2009 21:44
autor: mikema72
No widzę że odpowiadam sam sobie. Znikąd pomocy? :-s :-w. Niestety nie działa Snap. I tak czas jest chyba uzależniony od możliwości kamery. Ze snapem mogę zrobić tylko 4 klatki na sek. Pomóżcie coś

Re: Obrazy w IMAQdx jako array

: 13 lis 2009 22:25
autor: coolfon
Ile klatek na sekundę uzyskujesz, gdy nic nie robisz z obrazem? Wg informacji które tutaj znalazłem, wymagana przez Ciebie rozdzielczość i frame rate to jest teoretyczne maksimum, na jakie stać ten sprzęt (a teoria w praktyce sprawdza się różnie ;) ).

Możesz trochę zjechać z rozdzielczością i sprawdzić ile wtedy fps będzie?

Re: Obrazy w IMAQdx jako array

: 14 lis 2009 10:22
autor: mikema72
W sumie na razie nie obrabiam obrazu. Widzę że nie zwiększę możliwości kamery. Te 15 klatek na sek. to max. Gorzej że cały czas mam te zniekształcenia. Zauważyłem że są one dopiero powyżej 3,5 fps i w cz-b i w kolorze. A jak zmniejszyć rozdzielczość tej kamery? Chyba się nie da, bo nie mam takich mozliwości na samej kamerze a późniejsze obrabianie w programie niewiele daje bo obraz i tak jest odebrany zniekształcony. Znalazłem coś takiego w necie : http://digital.ni.com/public.nsf/allkb/ ... 0E0052E76A ale to nic nie dało i nie do końca to mój problem..

Re: Obrazy w IMAQdx jako array

: 14 lis 2009 12:34
autor: folon
mikema72 pisze:Zaznaczam że interesuje mnie około 15 klatek na sek. w rozdzielczości ~1280x960 rejestrowana w czasie ok 30 sek.
Ciężko taką ilość w shift registerze przetrzymać: 15klatek * 30 sekund * 1280 * 960 * bitów kolorów, zapis na zwykły dysk też opóźni działanie, ale jeśli zrobiony w osobnej pętli i poprawnie to jakieś rozwiązanie to jest. Jeśli obróbki nie trzeba robić online to jeszcze lepiej.

1) Wykorzystać IMAQ Create tyle razy ile klatek zamierzasz jednorazowo przetrzymywać (każdy strumień musi mieć unikalną nazwę), ile max można otworzyć - musisz potestować.
2) Po każdym zebraniu nowej klatki wykonywać IMAQ Copy na kolejnych referencjach z utworzonej tablicy. Równlolegle zapisywać na dysk (IMAQ Write File), jeśli wystąpią problemy z pamięcią - sugerował bym po zapisie wykonywać IMAQ Dispose (no chyba, że jest potrzeba przetwarzania obrazów online)
3) Po zakończeniu akwizycji zamknąć wszystkie pozostałe referencję poprzez IMAQ Dispose.
4) W przypadku możliwości wykonania przetwarzania offline - odczytywać kolejne klatki z dysku i wykonywać to co dusza zapragnie.

Re: Obrazy w IMAQdx jako array

: 16 lis 2009 23:12
autor: mikema72
Dzięki za pomoc. Trochę ominąłem problem tzn. Te zniekształcenia były przez to że próbowałem wszystko na laptopie. Na zwykłych komputerach z dodatkową kartą FireWire wszystko gra. Więc chyba w rolę wchodzi prędkość procesora albo samego łącza FireWire, grunt że tego problemu już nie ma. A drugi problem rozwiązało zainstalowanie innych sterowników. Niestety te z Labview nie są za dobre. Po instalacji pokazało mi się jeszcze parę innych formatów i fps których pod IMQdx nie było. I na nich też nie ma klatkowania i zniekształceń. Zamykam temat. :)