przetwarzanie i analiza obrazów w matlabie...1 przetwarzanie i analiza obrazów w matlabie...
TRANSCRIPT
1
Przetwarzanie i analiza
obrazów w Matlabie
Opracował: dr inż. Z. Rudnicki
ZKiEM AGH
MATLAB(MATrix LABoratory)
- pakiet oprogramowania matematycznego firmy
MathWorks Inc. (od roku 1984)
to
język i środowisko programowania
do obliczeń naukowo-technicznych
oraz
obszerny zestaw tematycznych
bibliotek podprogramów (toolbox’ów)
i wiele tysięcy stron
podręczników
2
3
Literatura po polsku:
• Z.Wróbel, R.Koprowski: „Przetwarzanie obrazu w
programie MATLAB”. Wyd. Uniw. Śl., K-ce 2001
• A.Kamińska, B.Pańczyk: „Matlab - przykłady i zadania”
- wyd. Mikom 2002, z serii „ćwiczenia z...” (150 stron)
• Mrozek B, Mrozek Z, MATLAB 6, PLJ Warszawa 2001
• J.Brzózka, L.Dorobczyński: „Programowane w Matlab”
wyd.Mikom 1998. (314 stron)
4
Interaktywne środowisko Matlab’a:
Okno
KOMEND
i wyników
(dialogu)
Bieżący
folderPomoc
(podręczniki)
Historia
(poprzednie
komendy)
3
5
Niektóre cechy MATLABa (wersja 6)
• Przyjazne dla użytkownika, interakcyjne środowisko
• Język programowania wysokiego poziomu
• Zbiór (ok.30) toolbox’ów - zestawów procedur i funkcji
• Zbiór podręczników (ok.70 x kilkaset stron, 433MB)
• MATLAB umożliwia m.in:
– wykonywanie obliczeń naukowych i inżynierskich,
– modelowanie i symulację,
– analizę danych (w tym: sygnałów i obrazów)
– graficzną wizualizację danych i wyników obliczeń.
• Podstawowym typem danych w MATLABie jest tablica
(macierz) o elementach rzeczywistych lub zespolonych.
6
Typy i nazwy zmiennych
�Wszystkie zmienne w MATLABie sa traktowane
jak macierze
�Wektory i skalary są szczególnymi przypadkami
macierzy
�Nazwy zmiennych rozpoczynają się od litery, a
po niej mogą być litery, cyfry i znaki podkreślenia
�Pamiętanych jest 19 pierwszych znaków
4
7
Nazwy i deklarowanie zmiennych
• MATLAB rozróżnia duże i małe litery
– polecenia standardowe należy pisaćmałymi literami
– dla nazw własnych programów i zmiennych można
używać małych i dużych liter
• Deklarowanie typu i wymiarów macierzy odbywa
się automatycznie - przez rozpoznanie rodzaju
wpisanych wartości
oraz maksymalnych wskaźników
8
Znaki specjalne (1)
= znak równości przypisuje zmiennej wartość (wartości) wyrażenia
n.p.: x=2*sin(pi/6)
. kropka poprzedza część ułamkową liczby (lub nazwę pola
rekordu)
, przecinek rozdziela indeksy, argumenty funkcji lub poszczególne
instrukcje (zamiast zmiany linii)
; dajemy po instrukcjach jeśli nie chcemy wyświetlania wyników
ich realizacji w przeciwnym przypadku kończymy instrukcje
zmianą linii lub przecinkiem.
% znak procentu poprzedza komentarze w programach (m-plikach)
5
9
Znaki specjalne (2) - dwukropek
:
1) do definiowania ciągów czyli wektorów na przykład:
5:2:13 oznacza: "ciąg od 5 z przyrostem 2 do 13"
5:10 oznacza: "ciąg od 5 do 10 domyślnie z przyrostem 1”
2) użyty zamiast wskaźnika macierzy zastępuje wszystkie
wartości tego wskaźnika na przykład:
A(2, :) oznacza wszystkie elementy drugiego wiersza,
A(:, 3) oznacza wszystkie elementy trzeciej kolumny
A(:) oznacza wszystkie elementy macierzy przetworzonej na
wektor kolumnowy przez sklejenie poszczególnych kolumn
10
Znaki specjalne (3) - nawiasy:
[ ] - do definiowania macierzy np.: A= [7,5,3; -2,1,0]
A = 7 5 3
-2 1 0
( ) - używane są w wyrażeniach
np.: beta = (a^3 +sin(b)^2) / (4*a)
oraz dla wskaźników macierzy
np.: MX(i, j) = 2*i + j -1
i argumentów funkcji
np.: Przeciwprost = sqrt( a^2 +b^2)
6
11
Łagodny start - kalkulator
Znak gotowości do przyjmowania komend:
>>
Wpisanie w oknie komend 2+3 i [enter] daje wynik:
>> 2+3
ans =
5
>>
Nie wstawiliśmy wyniku do żadnej zmiennej
dlatego MATLAB użył zmiennej „ans”
12
Obliczenia kalkulatorowe c.d.
Możemy wyniki obliczeń podstawiać do zmiennych np.:
>> x=sin(pi/2)
x =
1
>>
Komenda zakończona średnikiem wykona się lecz nie będzie
wyświetlony jej wynik:
>> x=sin(pi/2);
>>
7
13
Jakie funkcje mamy do dyspozycji
- pokaże HELP
14
Ciągi i wektory
Przykłady definiowania ciągów:
>> i=1:6
i = 1 2 3 4 5 6_____________________________
>> a(i)=(i-1)/2
a = 0 0.5 1.0 1.5 2.0 2.5____________________________
>> x=-0.2:0.1:0.3
x = -0.2 -0.1 0 0.1 0.2 0.3____________________________
>> v=[12.1, -3.2, 0.03, 44.4]
v = 12.1000 -3.2000 0.0300 44.4000
8
15
Macierze: wprowadzanie, wyświetlanie
>> A=[4,1,5; 2,3,6]
A =
4 1 5 2 3 6
Dwukropek zastępuje wszystkie wartości wskaźnika
A więc pierwszy wiersz macierzy to:
>> A(1,: )
ans = 4 1 5
Podobnie aby wybrać trzecią kolumnę wpisujemy:
>> A(:,3)
ans = 5
6
>> A(2,2)
ans = 3
16
Operacje na macierzach czy na ich elementach?
Wpisanie x=0 : 0.1 : 0.5 daje macierz wierszową (wektor wierszowy):
>> x=0 : 0.1 : 0.5
x = 0 0.1000 0.2000 0.3000 0.4000 0.5000
Operatory bez kropki to działania macierzowe a mnożenie dwu
macierzy to mnożenie wierszy przez kolumny a więc nie można:
>> y=x^2
??? Error using ==> ^ Matrix must be square.
ani nie da się:
>> y=x*x
??? Error using ==> * Inner matrix dimensions must agree.
trzeba użyć działanie na elementach czyli operator z kropką:
>> y=x .* xy = 0 0.0100 0.0400 0.0900 0.1600 0.2500
9
17
Jak otrzymać wykres funkcji
>> x=0:0.1:4*pi;
>> plot(x,sin(x));
>> grid on
18
Programy czyli ”m-pliki”: skrypty i funkcje
Programy (wieloliniowe) można pisać w edytorze
MATLABa lub w Notatniku
Zapisywane są do plików z rozszerzeniem *.m
Uruchamiane są przez wpisanie nazwy pliku (bez
rozszerzenia „ .m ” w oknie komend
Rozróżniamy:
• skrypty - operujące na zmiennych przestrzeni
roboczej Matlaba
• funkcje - posiadające zmienne lokalne
10
19
Przykład m-pliku skryptowego
% po znaku procentu są tzw. komentarze
% program rozwiazywania równania kwadratowego
a=input('a='); b=input('b='); c=input('c=');
delta = b*b-4*a*c;
if delta<0
disp('Brak pierwiastkow rzeczywistych');
else
x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a);
disp('x1='); disp(x1); disp('x2='); disp(x2);
end
20
To samo napisane jako funkcja prkw(a, b, c):
function [x1, x2] = prkw(a, b, c)
% ta funkcja oblicza pierwiastki x1, x2
% rownania: a*x^2 + b*x + c = 0
delta = b*b-4*a*c;
if delta<0
% dla delta<0 podstawimy NaN = "nieokreslone"
x1=NaN; x2=NaN
else
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
end
11
21
Tematyka toolbox-ów Matlaba
SIMULINK - Symulacja układów
dynamicznych
Układy Sterowania
Przetwarzanie i analiza Sygnałów
Przetwarzanie i analiza Obrazów
Sieci Neuronowe;
Logika rozmyta
Statystyka;
Finanse i giełda
Akwizycja danych
Projektowanie filtrów
Bazy danych
Matematyka symboliczna
Identyfikacja systemów
Analiza falkowa i Fourier'a
Optymalizacja
Równania różniczkowe
Sterowanie nieliniowe
Sterowanie predykcyjne
Analiza chemiczna
Geografia i mapy
Funkcje sklejane (splajny)
Metoda elem. skończonych
Teoria grafów
. . . . . . . .
22
Image Processing Toolbox
to zbiór funkcji do przetwarzania i analizy obrazów w
Matlabie:
– 263 funkcje (w wersji 5 dla Matlaba 7)
– obsługa różnego typu obrazów
– przetwarzanie punktowe i operacje kontekstowe (filtrowanie)
– charakterystyki graficzne (histogramy, profile, ...)
– wyznaczanie liczbowych parametrów i miar
– możliwość montowania animacji (plików *.avi)
– podręcznik ponad 1000 stron (w jęz. angielskim)
12
23
Typy obrazów w Matlabie
Matlab obsługuje 4 typy obrazów:
1) czarno-białe czyli binarne (BW image)
2) szare (gray, intensity image)
3) barwne typu RGB (Red, Green , Blue)
4) barwne indeksowane
24
Postaci cyfrowych zapisów obrazu różnego
typu o rozmiarach M x N pikseli:Obraz czarno-biały jest macierzą o rozmiarach M x N zawierającą
tylko zera i jedynki (0=czarny, 1=biały piksel)
Obraz szary to macierz o rozmiarach M x N o wartościach ze
zbioru [0,255] (typ uint8) lub [0, 1] (typ double) co odpowiada
256 odcieniom szarości.
Obraz barwny RGB to macierz trójwymiarowa (M x N x 3), a jej
trzy składowe macierze podają jasności składowych barw pikseli:
R – czerwony (Red), G – zielony (Green), B – niebieski (Blue).
Obraz indeksowany jest zapisany dwoma macierzami. Pierwsza o
wymiarach M x N podaje indeksy (numery) kolorów dla każdego
piksela. Druga macierz przechowuje paletę kolorów. Posiada trzy
kolumny odpowiadające odcieniom trzech barw podstawowych i
tyle wierszy ile kolorów w palecie
13
25
Wyświetlanie nazw plików graficznych
i informacji o nich (w Matlabie)
• Po wybraniu odpowiedniego
foldera jako bieżącego,
komenda:
dir *.bmp
wyświetli nazwy plików typu
BMP
Na przykład:
>> imfinfo('r10k3.bmp')
Filename: 'r10k3.bmp'
FileModDate: '15-Apr-
2005 15:27:14'
FileSize: 198
Format: 'bmp'
Width: 10
Height: 10
BitDepth: 4
ColorType: 'indexed'
NumColormapEntries: 16
Colormap: [16x3
double]
. . . . . . . . . .
>> dir *.bmp
CIEN.BMP PIRAMID.BMP
GRACE_K.BMP R10G3.BMP
M432.BMP R10K3.BMP
MT24.bmp R10K7.BMP
MT8.bmp
NIEBO.BMP
•Informacje o pliku można
uzyskać komendą: imfinfo(‘nazwa_pliku)
26
Wczytywanie obrazów i sprawdzanie typu
Ogólna postać instrukcji wczytywania obrazu z pliku do
macierzy dla obrazów szarych i czarno-białych:
nazwa_macierzy = imread(nazwa_pliku);
dla obrazu kolorowego typu indeksowanego funkcja ta wczytuje
także drugą macierz - paletę (mapę) kolorów.
Wczytamy przykładowy obraz o rozmiarach 10x10 pikseli:
[A map]=imread('r10k3.bmp');
Typy (klasy) wszystkich zmiennych możemy sprawdzićkomendą whos a typ pojedynczej - funkcją class:
>> whos
Name Size Bytes Class
A 10x10 100 uint8 array
map 16x3 384 double array
Grand total is 148 elements using 484 bytes
>> class(A)
ans = uint8
14
27
Wyświetlanie obrazów
do wyświetlenia obrazu służy instrukcja:
imshow(macierz_obrazu, macierz_palety);
a dla obrazów szarych wystarczy:
imshow(macierz_obrazu);
w naszym przypadku wpiszemy: imshow(A,map)
ale aby ten malutki obrazek powiększył się zastosujemy:
imshow(A,map,'notruesize');
28
Obraz indeksowany - postać cyfrowaa) macierz indeksów b) macierz mapy kolorów
A =
9 9 15 15 15 15 15 15 15 15
9 9 9 15 15 15 15 15 15 15
0 9 9 9 15 15 15 15 15 15
0 0 9 9 9 15 15 15 15 15
0 0 0 9 9 9 15 15 15 15
0 0 0 0 9 9 9 15 15 15
0 0 0 0 0 9 9 9 15 15
0 0 0 0 0 0 9 9 9 15
0 0 0 0 0 0 0 9 9 9
0 0 0 0 0 0 0 0 9 9
map =
0 0 0
0.7490 0 0
0 0.7490 0
0.7490 0.7490 0
0 0 0.7490
0.7490 0 0.7490
0 0.7490 0.7490
0.7529 0.7529 0.7529
0.5020 0.5020 0.5020
1.0000 0 0
0 1.0000 0
1.0000 1.0000 0
0 0 1.0000
1.0000 0 1.0000
0 1.0000 1.0000
1.0000 1.0000 1.0000
15
29
Konwersja typu obrazu
Do sprawdzania typu obrazu służą funkcje:
isbw(obraz), isgray(obraz),
isrgb(obraz), isind(obraz),
dające wynik 0=nie lub 1=tak.
Do konwersji obrazu wraz z paletą na inny typ mamy
funkcje:
ind2rgb, ind2gray
30
Konwersja: indeksowany na RGB
Przykład: B=ind2rgb(A,map)>> B
B(:,:,1) =
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1
0 0 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 1
B(:,:,2) =
0 0 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
B(:,:,3) =
0 0 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1
0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
a) macierz odcieni
czerwonych
b) macierz odcieni
zielonych
c) macierz odcieni
niebieskich
16
31
Konwersja kolorowego na szary (rgb2gray)
Jeśli chcemy z kolorowego uzyskać obraz szary (bo takimi będziemy
się dalej zajmować) to zastosujemy odpowiednią funkcję:C = rgb2gray(B) - która daje obraz szary typu double:
C=
0.2989 0.2989 1.0000 1.0000 1.0000 1.0000 1.0000
0.2989 0.2989 0.2989 1.0000 1.0000 1.0000 1.0000
0 0.2989 0.2989 0.2989 1.0000 1.0000 1.0000
0 0 0.2989 0.2989 0.2989 1.0000 1.0000
0 0 0 0.2989 0.2989 0.2989 1.0000
0 0 0 0 0.2989 0.2989 0.2989
0 0 0 0 0 0.2989 0.2989
0 0 0 0 0 0 0.2989
0 0 0 0 0 0 0
0 0 0 0 0 0 0
32
Konwersja double ���� uint8
Najczęściej obrazy szare mają typ uint8 i wartości pikseli w zakresie 0 do 255 czyli
jednobajtowe liczby całkowite.
Przekonwertujmy obraz C na typ uint8:
>> A=uint8(C*255)
76 76 255 255 255 255 255 255 255 255
76 76 76 255 255 255 255 255 255 255
0 76 76 76 255 255 255 255 255 255
0 0 76 76 76 255 255 255 255 255
0 0 0 76 76 76 255 255 255 255
0 0 0 0 76 76 76 255 255 255
0 0 0 0 0 76 76 76 255 255
0 0 0 0 0 0 76 76 76 255
0 0 0 0 0 0 0 76 76 76
0 0 0 0 0 0 0 0 76 76
17
33
OBRAZY SZARE
34
Wczytywanie, zmiana jasności, wyswietlanie (1)
Zadanie:
a) wczytać obraz NIEBO.BMP i zbadać typ macierzy:
>>A = imread (‘NIEBO.BMP’); class(A)
ans = uint8
b) wyznaczyć wartość najjaśniejszego i najciemniejszego piksela:
>> Amin=min(A(:)), Amax=max(A(:))
Amin =
0
Amax =
212
c) skorygować jasność:
>> A=A+20;
??? Error using ==> +
Function '+' not defined for variables of class 'uint8'.
BŁĄD !!!Dodawanie i inne działania
arytmetyczne NIE są
dopuszczalne dla liczb klasy
uint8
18
35
Wczytywanie, zmiana jasności, wyświetlanie (2)
c) skorygować jasność:
>> A=uint8(double(A)+20);
d) wyświetlić rezultat:
>> imshow(A)
Poprawiono błąd
przez zastosowanie
konwersji typów
36
Obrazy szare - konwersja uint8 ���� double
Dowolne operacje arytmetyczne na macierzy obrazu
w Matlabie wymagają przekonwertowania
na typ double. Są dwa różne sposoby takiej konwersji.
1) Konwersja tylko typu (klasy) bez zmiany wartości:
- macierz typu double o zakresie [0..255] uzyskujemy z obrazu
funkcją double(..); konwersja odwrotna do klasy uint8 i zakresu
[0..255] musi być wtedy wykonana funkcją uint8(..)
2) Zmiana typu i przeskalowanie wartości z zakresu [0..255] na
zakres [0..1]:
- macierz typu double o zakresie [0..1] uzyskujemy z obrazu
funkcją im2double(..); konwersja odwrotna do klasy uint8 i
zakresu [0..255] musi być wtedy wykonana funkcją im2uint8(..)
19
37
Obraz jako powierzchnia 3DA=imread('NIEBO.BMP');
subplot(1,2,1); imshow(A);
subplot(1,2,2); surf(double(A)); colormap 'gray'
38
Profile obrazunaz='NIEBO.BMP'; A=imread(naz);
[Lw,Lk]=size(A); X0=250;
profil = improfile(A,[X0,X0],[1,Lw]);
subplot(1,2,1); imshow(A); title(naz); line([X0,X0],[1,Lw])
subplot(1,2,2); plot(profil); grid on
20
39
Histogram obrazu% Podaje liczby pikseli dla poszczególnych odcieni
naz='NIEBO.BMP'; A=imread(naz);
subplot(1,2,1); imshow(A); title(naz);
subplot(1,2,2); imhist(A); title(['Histogram ',naz]); grid on;
40
Normalizacja obrazu% rozciąga zakres odcieni do maksymalnegonaz='NIEBO.BMP'; A=im2double(imread(naz));
Amin=min(A(:)), Amax=max(A(:))
B=imadjust(A, [Amin Amax], [0 1]);
subplot(1,2,1); imshow(B); title([naz,' po normalizacji']);
subplot(1,2,2); imhist(B); title(['Histogram ',naz]); grid on;
21
41
„Wyrównywanie histogramu”naz='NIEBO.BMP'; A=imread(naz);
B=histeq(A);
subplot(1,2,1); imshow(B); title([naz,' po wyr.histogr.']);
subplot(1,2,2); imhist(B); title(['Histogram ',naz]); grid on;
42
Filtracja medianowa
naz='NIEBO.BMP'; A=im2double(imread(naz));
B = medfilt2(A,[9 9]);
subplot(1,2,1); imshow(A); title(naz);
subplot(1,2,2); imshow(B); title([naz,' po filtracji 9x9']);
22
43
Wycinanie fragmentu obrazunaz='GRACE_K.BMP'; GR=imread(naz); [Lw Lk]=size (GR);
x1=50; x2=190; y1=130; y2=235; dx=x2-x1; dy=y2-y1;
B=imcrop(GR, [x1, y1, dx, dy]);
subplot(1,2,1); imshow(GR); title(naz);
line([x1 x2],[y1 y1]); line([x2 x2],[y1 y2]);
line([x1 x2],[y2 y2]); line([x1 x1],[y1 y2]);
subplot(1,2,2); imshow(B); title('Wycinek');
44
Przykład przetwarzania
23
45
Program do tego przykładu przetwarzania
% A - obraz oryginalny i jego rozmiary: Lw, Lk
% Do przetwarzania konwertujemy na double:
% Filtracja medianowa tworzy składowąniskoczęstotliwościową L:
% Dla "wyrównania cienia" odejmujemy L od
obrazu a dodajemy 120:
% oraz wykonujemy "wyrównanie histogramu":
% Wyznaczamy profile:
% (1) dla oryginału:
% (2) po wyrównaniu cienia:
% (3) dla obrazu wynikowego:
% Sporządzamy wykres profili
A=imread('cien.bmp'); [Lw,Lk]=size(A)
subplot(2,2,1); imshow(A); title('a) Oryginał');
ha=line([100,100],[1,Lw]); set(ha,'Color','red');
Ad=double(A);
L=medfilt2(Ad,[15 15]);
B=Ad - L+120;
subplot(2,2,2); imshow(uint8(B));
title('b) Po wyrównaniu cienia');
C=histeq(uint8(B));
subplot(2,2,3); imshow(C);
title('c) Po wyrównaniu histogramu');
pr1 = improfile(A,[100,100],[1,Lw]);
pr2 = improfile(B,[100,100],[1,Lw]);
pr3 = improfile(C,[100,100],[1,Lw]);
k=1:Lk-1;
subplot(2,2,4); plot(k, pr1,'r', k,pr2,'g')
title('d) Profile obrazów (a), (b)'); legend('a','b');
46
Nieco inny sposób wyrównywania cienia
24
47
Problemy przetwarzania (1)
48
Problemy przetwarzania (2)
25
49
Problemy przetwarzania (3)
50
Problemy przetwarzania (4)
26
51
Numerowanie obiektów - BWLABEL
Funkcja bwlabel – numeruje (indeksuje) spójne obszary na obrazie
binarnym BW przy założonym sąsiedztwie typu s (domyślnie s=8 czyli
rozpatrywane jest sąsiedztwo 8-miopikselowe)
Składnia:
L = bwlabel(BW,s)
[L, n] = bwlabel(BW,s)
Wynikiem jest macierz o rozmiarach takich samych jak BW w której
liczby wyrażające jasność pikseli zastąpiono numerami kolejnych
obiektów do których te piksele należą. Tło jest obiektem o numerze
zerowym a pozostałe obiekty numerowane są kolejnymi liczbami
naturalnymi od 1 do n.
52
Cechy obiektu - Funkcja imfeature
Składnia: 1) stats = imfeature(L,measurements)
2) stats = imfeature(L,measurements,n)
Oblicza (mierzy) parametry dla każdego indeksowanego regionu
macierzy L.
Dodatnie całkowite elementy macierzy L odpowiadają różnym
regionom na przykład elementy równe 1 odpowiadają regionowi
numer 1, elementy równe 2 – regionowi nr 2 itd.
stats jest tablicą strukturalną o długości max(L(:)). Pola tej tablicy
reprezentują miary regionu wyspecyfikowane w measurements
measurements to zbiór nazw parametrów (typu string):
'Area' 'Image' 'EulerNumber' 'Centroid' 'FilledImage'
'Extrema' 'BoundingBox' 'FilledArea 'EquivDiameter' 'MajorAxisLength'
'ConvexHull' 'Solidity' 'MinorAxisLength' 'ConvexImage' 'Extent'
'Eccentricity' 'ConvexArea' 'PixelList' 'Orientation'
Zamiast listy może być użyte słowo 'all' – rozkaz wyznaczenia wyznaczenie
wszystkich parametrów.