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)
A obraz wejściowy,
[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
A obraz wejściowy,
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
%instrukcja wykonywana jeżeli warunek jest spełniony
end
instrukcja for, przykładowa konstrukcja:
%% rób pętle od 1 do N (domyslnie z krokiem 1)
for R = 1:N
for C = 1:N
A(R,C) = 1/(R+C-1); %% uzupelnianie po kolei wierszy wartością 1/(R+C-1)
end;
end;
% kiedy chcemy z innym krokiem piszemy np.:
for S = 1.0: -0.1: 0.0, %% wykonuj rozpoczynając od S=1 z krokiem -0.1 aż do wartości 0.0,
%% róznie dobrze liczby można zastąpić zmiennymi
do_some_task_(S),
end;
strcat służy do łączenia kilku znaków w jedne ciąg
przykład:
str1 = Jan Kowa ;
str2 = lski ;
str3 = strcat(str1,str2); %W zmiennej str3 będzie ciąg znaków: Jan
Kowalski
num2str służy do zamiany liczby na ciąg znaków, przykład:
NR = 3;
I = imread(strcat(sum2str(NR), .jpg ));
str2double służy do zamiany ciągu znaków na liczbę
Operacje na plikach:
- plik1=fopen('tekst.txt','w+');otwiera lub tworzy plik do odczytu i zapisu, usuwa zawartość jeśli
była
- fclose(plik1) / fclose( all )- zamyka plik
- zapisanie danych do pliku tekstowego
fprintf(IDpliku, ciąg_znaków, zmiennal, zmienna2,...);
V = 20;
IdObiektu = 9;
Plik = fopen('Obiekty.txt', ' w');
fprintf(Plik,'Obiekt %d ma predkosc %d km/h\n',IdObiektu,V);
fclose(Plik);
W efekcie w pliku Obiekty.txt zostanie zapisana informacja - Obiekt 9 ma predkosc 20 km/h
%d oznacza że w tym miejscu ma zostać wstawiona liczba całkowita (zgodnie z kolejnością podania argumentów) (%s
-string)
\n oznacza przejście do nowej linii
Wyszukiwarka
Podobne podstrony:
MATLAB cw SkryptySłownik PUASIMULINK MATLAB to VHDL Route01 Slownik LACINSKO Polski Kumaniecki K (A)IMiR NM2 Introduction to MATLABwięcej podobnych podstron