Strona główna
« Strona główna
  • English
  • Polski
  • O firmie
  • Usługi
  • Projekty badawcze
  • Nauka i technika
  • Publikacje
  • Do pobrania
  • Kontakt
  • BitMan
  • lvODE
  • Waptia

BitMan

Nazwa: 
BitMan (Bitmap Manipulation Library)
Wersja: 
1.0
Typ: 
framework, biblioteka
Wymagania: 
LabVIEW 8.2
BitMan
BitMan

Opis

Biblioteka przeznaczona jest do programowego przetwarzania obrazów w oparciu o specjalnie zdefiniowaną strukturę do przechowywania obrazu i system filtrów. Nie jest ona jednak jedynie zestawem narzędzi  wykonujących konkretne operacje na obrazach, ale także szkieletem ułatwiającym tworzenie własnych funkcji przetwarzania obrazów dzięki mechanizmowi tzw. dynamicznych filtrów.

W kod wbudowanych jest kilka podstawowych filtrów. Nacisk przy ich tworzeniu położony został przede wszystkim na uniwersalność, łatwość użytkowania, oraz przejrzystość kodu. Powoduje to pewien spadek efektywności i w konsekwencji przetwarzanie dużych obrazów przy zastosowaniu standardowych filtrów może okazać się wolne. Nie jest to jednak obciążenie samego szkieletu i możliwe jest tworzenie filtrów użytkownika, które mogą – jako bardziej specjalizowane – działać znacznie efektywniej. Podstawowe filtry za to sprawdzają się świetnie przy przetwarzaniu stosunkowo niewielkich obrazów i mogą służyć np. do wspomagania programowania interfejsów użytkownika, operacji na ikonach, czy tworzenia graficznych dokumentów.

Biblioteka napisana została przy użyciu technik programowania obiektowego (LVOOP). Używanie tej techniki, przynajmniej w podstawowym stopniu, jest także wymagane przy tworzeniu własnych filtrów.

Compatibile with LabVIEWBiblioteka BitMan bierze udział w programie Compatible with LabVIEW firmy National Instruments i jest dostępna w usłudze LabVIEW Tools Network. Oznacza to, że została ona sprawdzona przez producenta środowiska LabVIEW i spełnia stawiane przez niego wymagania.

Funkcjonalność

Najważniejszą klasą biblioteki jest klasa Bitmap. Zdefiniowana jest tu struktura przechowująca obraz (dokładny opis w dokumentacji pod hasłem Bitmap type.ctl) oraz podstawowe metody dostępowe. Głównym założeniem tej struktury jest przechowywanie obrazu w trójwymiarowej tablicy typu U8, której kolejne wymiary oznaczają odpowiednio wysokość (współrzędna y), szerokość (x) oraz kolejny kanał obrazu (channel). Liczba kanałów w obrazie zależy od jego głębi bitowej, dodatkowo zdefiniować można dowolną ilość kanałów użytkownika. Można przechowywać obrazy 1-, 4-, 8-, 24- i 32-bitowe, przy czym przez obrazy 32-bitowe rozumie się tutaj obrazy kodujące kolory przy użyciu modelu CMYK, a nie – jak się to czasem używa – obrazy RGB z przezroczystością. Przezroczystość (tzw. kanał alpha) przechowywany jest w oddzielnym polu struktury. Obsługa obrazów CMYK nie została jeszcze w pełni zaimplementowana.

Przetwarzanie obrazów odbywa się przez zastosowanie systemu filtrów zaimplementowanych w klasie General Filter i pochodnych. Klasa ta przechowuje referencję do znormalizowanego VI przetwarzającego obraz i jego parametry uruchomieniowe. Filtr uruchamia się przy użyciu metody Filter Run, która korzysta z mechanizmu dynamicznego wywołania. Parametry wywołania filtra przechowywane są w jego obiekcie jako zmienna typu Variant, co pozwala na zastosowanie zunifikowanej metody ich przekazywania.

Użytkownik może tworzyć własne filtry na dwa sposoby: przy zastosowaniu metod klasy Dynamic Filter i szablonu filtra lub przez stworzenie nowej klasy dziedziczącej po General Filter. Możliwe jest także stworzenie specjalnych funkcji-interfejsów umożliwiających korzystanie z filtrów jak ze zwykłych funkcji LV. W ten właśnie sposób i przez dziedziczenie napisane zostały wszystkie filtry standardowe (klasa Butli-in filters), dlatego są one także same w sobie swoistym przykładem korzystania z biblioteki.

Szablon do tworzenia własnych filtrów znajduje się w katalogu „typedefs”.

Korzystanie z filtrów dynamicznych wspomaga klasa Filter Library służąca do zarządzania używanymi filtrami. Korzysta ona z mechanizmu functional global przechowując i udostępniając załadowane wcześniej filtry wraz z przypisanymi im nazwami. Dzięki niej można odwoływać się do filtrów za pomocą krótkich nazw w dowolnym miejscu kodu, bez uciążliwego doprowadzania referencji.

Klasą wspomagającą jest także klasa Bitmap with Filters, dziedzicząca po klasie Bitmap i rozszerzająca jej funkcjonalność o przetwarzanie obrazu za pomocą sekwencji filtrów.

Bardziej szczegółowe opisy poszczególnych funkcji i zastosowań znajdują się w ww. dokumentacji i przykładach.

Instalacja

Biblioteki używać można po rozpakowaniu jej w dowolnym miejscu na dysku. Dostęp do wszystkich funkcji możliwy jest wtedy przez otwarcie pliku biblioteki „BitMan Lib.lvlib”. Najwygodniej jednak skopiować cały katalog BitMan do katalogu <LabVIEW x.x>\user.lib. Po restarcie LabVIEW na palecie, w dziale User Libraries, pojawi się wtedy sub-paleta „BitMan”.

Do działania nie są wymagane żadne biblioteki zewnętrzne.

Dokumentacja

Opis wszystkich znajdujących się na palecie funkcji dostępny jest w pliku „docs\BitMan docs.html” (po angielsku). Opisy znajdują się także (dla wszystkich funkcji) w sekcji Documentation okna właściwości danego VI, oraz w analogicznej dokumentacji ważniejszych kontrolek na jego panelu i jako takie dostępne są poprzez system pomocy kontekstowej LabVIEW.

Przykłady

Przykłady zastosowań znajdują się w katalogu „examples” (przykłady użycia samej biblioteki) i w katalogu „examples\Dynamic Filters” (przykłady tworzenia filtrów). Przykłady wraz z opisami umieszczonymi na diagramach stanowią integralną część dokumentacji.

Licencja

Oprogramowanie dostępne jest na zasadach licencji BSD (treść licencji w pliku license.txt)

Pobierz

application/octet-stream iconPakiet do instalacji poprzez VI Package Manager
application/zip iconArchiwum ZIP
© SKA Polska 2013
  • O firmie
  • Usługi
  • Projekty badawcze
  • Nauka i technika
  • Publikacje
  • Do pobrania
  • Kontakt
  • English
  • Polski