Poprawa szybkości vi wklejającego bitmapę na bitmapie.

Tematyka związana z tworzeniem aplikacji w LabVIEW do obsługi wizji oraz wszelkich operacji na obrazie.
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Poprawa szybkości vi wklejającego bitmapę na bitmapie.

Post autor: AGF »

W załączniku umieściłem vi z tematu. Ma ona za zadanie zastąpić część bitmapy tła inną bitmapą. Niestety vi dosyć długo się wykonuje dla obrazu tła:1500x1500 pikseli i wklejaniu obrazka 20x20 pikseli to 400 ms (co prawda pracuje na starym (2-3 lata) komputerze :D). Więc pytam:
1. Czy może można poprawić szybkość wykonywania tego vi?
2. Generalnie chodzi o efekt umieszczenia grafiki na innej grafice więc może da się to zrobić (np: korzystając z warstw rysowani, jeżeli takie coś istnieje)

Dodaje że chciałbym to osiągnąć korzystając z LV 2010 PDS raczej bez dodatkowych narzędzi.

P.S. Dodałem jeszcze drugą wersje szybszą o jakieś 10% (ala nadal zbyt wolną)
Załączniki
draw image on background image_v2.vi
wersja druga
(27.31 KiB) Pobrany 343 razy
draw image on background image.vi
(24.99 KiB) Pobrany 343 razy
Awatar użytkownika
smiga
Administrator
Posty: 799
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2016
Lokalizacja: Słupsk

Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.

Post autor: smiga »

Zacznijmy od tego: bawisz się sporymi tablicami - skorzystaj z In Place Element Structure.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.

Post autor: AGF »

Dzięki za trafną uwaga smiga, a już traciłem wiarę w LV i chciałem się przesiąść na VC#.
Oczywiście coś robiłem od rana, więc w związku z ty okazało się że lwią część pracy dla mojego vi zapewniają operację "flatten pixmap.vi" i "unflatten pixmap.vi". Tak wiec gdzie tylko się da tam je usunąłem tak aby pracować na samej tablicy RGB. Oczywiście pozostaje jeszcze wyrysowanie tablicy RGB w kontrolce "picture" co za sprawą "draw unflatten pixmap.vi" też zajmuje sporo czasu.
Jak widzę oryginalne bloczki LV manipulują na samej kontrolce "picture" i dobrze (szybko) im to wychodzi, może by słusznie było wiec podążać taką samą drogą...ciekawe czy to możliwe w rozsądnym czasie...sprawdzę.

Oczywiście vi z tematu wątku jest częścią większej aplikacji gdzie są prezentowane wyniki jego ciężkiej pracy.

Pozdrawiam
Andrzej
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: Poprawa szybkości vi wklejającego bitmapę na bitmapie.

Post autor: AGF »

Trochę pokombinowałem i uzyskałem vi wklejając bitmapę z wykorzystaniem „In place ement modyfi”. Działa on z zadawalającą wydajnością. Jak wcześniej jednak napisałem najwięcej czas zajmuje „przeładowanie” obrazu do kontrolki „picture”.
Tak więc zrezygnowałem z operacji bezpośrednio na bitmapie tła (potencjalnie dużej np: 1000x100 pixeli). Teraz rysuje w kontrolce „picture” piksel za pomocą „Draw Point.vi” i działa to całkiem nieźle.
Rozwiązanie to jest w moim odczuci łopatologiczne, chętnie zrobił bym to lepiej, ale nie wiem i nie mam czasu zgłębić tajemnicy działania kontrolki „picture” (czy jest to udokumentowane? A może po prostu się nie da.)
Jedyny poważnym mankament tego rozwiązania to taki że gdy zrobi się zoom większy od 100% kontrolki „picture” to pomiędzy pikselami wklejonego obrazka powstaje widoczna linia siatki (mimo że pen jest ustawiony na size=1 style=solid).

Zapraszam wszystkich chętnych do krytyki...
Załączniki
draw image on background image_v4.vi
vi rysyjące bitmapę punkt po punkcie
(18.96 KiB) Pobrany 340 razy
ODPOWIEDZ