Strona www.adaptive-vision.com używa plików cookie do obsługi użytkowników oraz do celów statystycznych.
Zgodnie z nowymi przepisami mamy obowiązek Państwa o tym poinformować.
Szczegółowe informacje znajdą Państwo w naszej polityce prywatności.

Zamknij tę informację
POL ENG GER 中文

Programowanie graficzne

Ważne: Adaptive Vision Studio nie wymaga od użytkownika doświadczenia w programowaniu niskopoziomowym. Mimo to, jest to wysoko wyspecjalizowane narzędzie dla profesjonalnych inżynierów i pełnowartościowy wizualny język programowania. Potrzebne jest dlatego zrozumienie 4 pojęć: Dane, Filtry, Połączenia i Makrofiltry.

Dane

Adaptive Vision Studio jest środowiskiem do przetwarzania danych, więc dane są jednym z jego głównych pojęć. Najważniejszym faktem dotyczącym danych, na który trzeba zwrócić uwagę, jest rozróżnienie pomiędzy typami (np. Point2D) i wartościami (np. współrzędne (15.7, 4.1)). Typy definiują protokół i kierują konstruowaniem programu, podczas gdy wartości pojawiają się podczas wykonywania programu i reprezentują przetwarzaną informację.

Adaptive Vision Studio wspiera także tablice, tzn. zmiennego rozmiaru kolekcje elementów danych, które mogą być razem przetwarzane. Dla każdego typu danych istnieje odpowiadający mu typ tablicowy. Na przykład, podczas gdy 4 jest wartością typu Integer, kolekcja {1, 5, 4} jest wartością typu IntegerArray. Zagnieżdżone tablice są także możliwe.

Filtry

Filtry są podstawowymi elementami przetwarzania danych w programowaniu opartym na przepływie danych. W typowej aplikacji wizji maszynowej na początku występuje filtr do akwizycji obrazu, po nim następuje ciąg filtrów, które przekształcają obrazy w regiony, kontury, prymitywy geometryczne i wreszcie na końcu w wyniki takie, jak status inspekcji "pass/fail".

Filtr posiada zazwyczaj kilka wejść i jedno lub więcej wyjść. Każdy z portów posiada swój specyficzny typ (np. Image, Point2D itd.) i tylko połączenia pomiędzy portami o kompatybilnych typach mogą być utworzone. Wartości niepołączonych wejść mogę byś ustawione w oknie Właściwości Filtra, które udostępnia także graficzne edytory do dogodnego definiowania danych geometrycznych. Gdy filtr jest wykonany, jego dane mogą być wyświetlane i analizowane w Panelu Podglądów.

Połączenia

Połączenia przesyłają dane pomiędzy filtrami, ale pełnią też ważną rolę w ukrywaniu złożoności typowej dla niskopoziomowych konstrukcji jak pętle i warunki. Różne typy połączeń wspierają: podstawowy przepływ danych , automatyczne konwersje , przetwarzanie for-each oraz przetwarzanie warunkowe . Nie trzeba ręcznie określać typów połączeń – są one wywnioskowywane automatycznie według zasady DWIM (ang. do what I mean, dosł.: rób to, co mam na myśli).

Makrofiltry

Makrofiltry dostarczają środków do budowania dużych rzeczywistych projektów. Są to podprogramy, wielokrotnego użytku, z własnymi wejściami i wyjściami. Gdy makrofiltr jest utworzony pojawia się w oknie Eksploratora Projektu i od tego czasu może być używany dokładnie tak samo, jak zwykłe filtry poprzez przeciągnięcie i upuszczenie.

Większość makrofiltrów (makrofiltry typu Step) jest zamiennikiem dla pewnej grupy połączonych filtrów, który pozwala utrzymywać projekt w porządku i sprawia, że jest on bardziej czytelny. Inne typy makrofiltrów mogą natomiast tworzyć zagnieżdżone pętle do przetwarzania danych (makrofiltry typu Task) lub kierować wykonanie programu do jednej z kilku jasno zdefiniowanych ścieżek (makrofiltry wariantowe typu Step). Konstrukcje te pozwalają w elegancki sposób tworzyć programy przepływu danych o dowolnej złożoności.

Dane i ich typy są bardzo podobne to tego, co jest znane z C++. My także mamy generyczny typ kolekcji – tablicę, który jest bardzo podobny do std::vector. Filtry i makrofiltry są odpowiednikami funkcji, ale, zamiast pojedynczej zwracanej wartości, często mają kilka parametrów wyjściowych. Połączenia odpowiadają zmiennym, które nie muszą być nazwane.
Z drugiej strony, pętle i warunki w Adaptive Vision Studio są dosyć odmienne od C++. Pętle są realizowane za pomocą połączeń tablicowych lub makrofiltrów typu Task, a warunki za pomocą połączeń warunkowych lub makrofiltrów wariantowych.