Operatory matematyczne: + - * / ^ == równość = podstawienie (:=)
Definiowanie macierzy:
Wiersze w macierzy oddzielamy średnikami ( ; )
natomiast kolumny w macierzy oddzielamy przecinkami lub spacjami ( , )
macierz K o wymiarach 3 x 4 wpisując:
K=[4 0 0 1; 2 1 7 -1; 0 -1 1 2];
Macierz może być również definiowana jako macierz blokowa (zbudowana z innych macierzy)
warunkiem jest by zgadzały się wymiary macierzy.
np.: D = [A B; C];
lub w sposób kombinowany, np.:
D = [A B;[1 3 0 9; 0 0 1 1]];
Inne możliwości:
K(2,3) – wybór elementu z 2-go wiersza z 3-ej kolumny macierzy K
K(:,4) -wybór całej kolumny 4
K(3,:) -wybór całego wiersza 3
C = K(2,3:4) -wybór z wiersza nr 2, el od 3 do 4
C1 = K(2:3,1) -wybór el od 2:3 z kolumny 1
Dwukropki oznaczają, że przetwarzamy wszystkie wiersze i wszystkie kolumny obrazu
Inne pomocnicze sposoby definiowania macierzy:
M=zeros(3,6) – definiujemy macierz złożoną z samych zer,
M=ones(3,4) – definiujemy macierz złożoną z samych jedynek,
M=eye(3,3) – macierz z jedynkami na przekątnej.
Komendy:
Polecenie clc służy do czyszczenia okna poleceń.
Polecenie clear usuwa wszystkie utworzone do tej pory zmienne.
imfinfo(‘nazwa pliku.roz’) - służy do odczytania informacji o pliku graficznym służy funkcja
I = imread(‘test_2.jpg’); - służy do wczytania obrazu do zmiennej
figure(2); służy do otwierania nowego okna
imshow(I); służy do wyświetlania obrazu / wykresu w otwartym oknie
imhist(I); służy do wyświetlania histogramów w odcieniach szarości
improfile(I,[XA,XB],[YA,YB]) – funkcja określająca poziomy jasności wzdłuż
zdefiniowanej linii A-B. Funkcja zwraca wektor P przechowujący dane o jasności kolejnych pikseli
wzdłuż profilu.
hold on – pozwala zamrozić obraz w oknie w celu wyświetlenia dwóch elementów pokrywających się (np. zdjęcie i wykres)
I = plot(H,’-g’); wyświetlanie zawartości macierzy w formie wykresu (wcześniej otworzyć okno)
Podział obrazu na składowe barwne (utworzenie nowych macierzy R,G i B):
R = I(:,:,1); %%macierz w wyizolowanym kanale czerwonym itd.
G = I(:,:,2);
B = I(:,:,3);
Zamiana kompozycję RGB na BGR:
%% przypisanie poszczególnym kanałom macierzy I innych kolorów
I(:,:,1) = B;
I(:,:,2) = G;
I(:,:,3) = R;
Wycinanie z obrazu I pierwszych 100 wierszy i kolumn:
Fragment = I(1:100,1:100,:);
Dwukropek oznacza wybór wszystkich kanałów.
[W K C] = size(I); służy do odczytu wymiaru tablicy I, gdzie W to ilość wierszy, K to ilość kolumn, C to ilość kanałów. Dla obrazu szarego: [W K] = size(I);
Jeżeli size(); przypiszemy do pojedynczej macierzy to otrzymamy dwuelementową macierz gdzie pierwsza kolumna oznacza ilość wierszy, natomiast druga kolumna oznacza ilość wierszy. Jeżeli chcemy wyizolować wartości dla W i dla K to należy opisać to jak wyżej.
rgb2gray(I) ‐ konwersja obrazu RGB na obraz w skali szarości,
im2bw(I,próg) ‐ konwersja obrazu w skali szarości na obraz binarny, próg z zakresu 0..1. próg mówi od jakiej wartości ma być granica czerni i bieli
mat2gray(I) - konwersja macierzy na obraz.
imadd(I,J) – dodawanie obrazów,
imsubtract(I,J) – odejmowanie obrazów,
imcomplement(I) – obliczenie uzupełnienia obrazu.
max, min, mean, sum – podstawowe funkcje arytmetyczne,
np. mean(R)– wektor wierszowy zawierający (domyślnie) średnie wartości każdej z kolumn.
Jeżeli chce się świadomie obliczyć średnie z wszystkich kolumn należy polecenie sformułować następująco: mean(R,1)
Aby obliczyć średnie z wszystkich wierszy należy : mean(R,2)
Aby obliczyć średnią wartość dla całej tablicy musimy daną funkcję zastosować dwukrotnie np.: mean(mean(R))
streching obrazu: ??
imadjust(I,[low_in,high_in], [low_out,high_out],gamma)
[low_in,high_in] – wektor określający zakres wejściowy poziomów jasności,
[low_out,high_out] – wektor określający zakres wyjściowy poziomów jasności,
gamma – współczynniki korekcji wykładniczej „gamma” (domyślnie 1)
W nawiasach kwadratowych muszą być wartości z przedziału [0,1].
Filtracja obrazów
G = imfilter(A, w), gdzie
A – obraz wejściowy,
w – zadana przez nas macierz filtru,
G – obraz wynikowy
w = fspecial('type', parametry opcjonalne).
Uśredniający = wygładzający
Pierwszy parametr, 'type' definiuje rodzaj wybranego filtru i może przyjąć następującą postać:
• 'average' ‐ filtr uśredniający o domyślnym rozmiarze 3 x 3,
• 'disk' ‐ kołowy filtr uśredniający wewnątrz macierzy kwadratowej o domyślnym promieniu 5,
• 'gaussian' ‐ uśredniający filtr gausowski o domyślnym rozmiarze 3 x 3 i odchyleniu standardowym 0.5,
• 'laplacian' ‐ filtr Laplace'a,
• 'log' ‐ połączony filtr Laplace'a i Gaussa,
• 'prewitt' – filtr Prewitta do wykrywania krawędzi o domyślnym rozmiarze 3 x 3; standardowo filtr
wykrywa krawędzie pionowe. W celu wykrycia poziomych należy otrzymaną macierz transponować,
• 'sobel' ‐ analogiczny filtr Sobela do wykrywania krawędzi,
• 'unsharp' ‐ filtr podkreślający krawędzie obiektów.
Z filtrów nieliniowych najczęściej używany jest medianowy, wywoływane przez następującą funkcję:
M = medfilt2(A, [m n]), gdzie
M = wiener2(A, [m n]), - usuwa zakłócenia (uśrednia wartości)
[m,n] – rozmiar filtru.
M – obraz wyjściowy
Filtr medianowy jest to filtr stosowany do usuwania zakłóceń z obrazu w postaci szumów.
Filtry morfologiczne
Termin morfologia oznacza m. in. badanie „struktury i kształtu”.
Metody morfologii matematycznej pozwalają rozpoznawać budowę obiektów, a także przetwarzać ich kształt poprzez analizę badanego obrazu za pomocą specjalnych obiektów tzw. elementów strukturalnych.
Najpopularniejszymi z tej grupy filtrami jest erozja i dylatacja. W MATLAB’ie funkcje te definiuje się w
następujący sposób:
e = imerode(A, se)
d = imdilate(A, se), gdzie
se –element strukturalny.
Złożenie obu funkcji tworzy (zależnie od kolejności złożenia) operacie otwarcia i zamknięcia:
e = imopen(A, se)
d = imclose(A, se).
Inną częściej stosowaną funkcją morfologiczną stosowaną na obrazach binarnych jest:
M = bwmorph(BW,’operacja’),
BW – binarny obraz wejściowy.
Operacje to m. In.:
‘dilate’, ‘erode’, ‘thin’ – ścienianie, ‘fill’ – wypełnianie. Inne opcje należy sprawdzić w helpie.
Zmiana geometrii obrazu
Zmiana rozmiaru:
Imresize(image, scale);
– przy skali 2 wymiary zostaną zwiększone 2x, przy skali 0.5, wymairy zostaną zmniejszone dwukrotnie
Imresize(image, [numrow numcol]);
- podajemy ile wierszy i kolumn ma mieć nowa macierz
Imresize(image, [numrow numcol], method);
rodzaje method:
'nearest' - nearest-neighbor interpolation
'bilinear' - bilinear interpolation
'bicubic' - bicubic (domyslna)
Zmiana skali:
Imrotate(images, angle, method, bbox);
uwaga! Kąt jest w układzie kartezjańskim (przeciwnie do ruchu wskazówek zegara w stopniach.
Metoda – jak wyżej; bbox – może być crop (przycięty do wielkości obrazu wejściowego), loose (pozostawienie rozmiaru),
Przesunięcie:
Nie jest zautomatyzowane – polega na sztucznym dodawaniu czarnych/bialysz fragmetow z okreslonej strony.
Przykład:
I1– obraz wejściowy o „r” ‐ wierszach i „c”‐ kolumnach [r1, c1] ,
I2– obraz wyjściowy [r2, c2],
wektor przesunięcia‐ [r0, c0],
to jeśli [r1, c1] = size (I1); wówczas obraz I2 będzie zdefiniowany:
I0 = zeros([r0 (c0+c1)]
I2=[zeros([r1 c0]), I1; I0)];
Instrkcje i pętle:
instrukcja warunkowa if:
budowa:
if warunek
...
Daria-awaria