Sekwencyjne, Regionalne

Transkrypt

Sekwencyjne, Regionalne
Analiza i Przetwarzania Obrazów Cyfrowych
IIIr Informatyki Stosowanej 2015/2016
copyright: M. Dwornik
[email protected]
Obrazy sekwencyjne i Operacje regionalne
1
Obrazy ruchome (sekwencyjne)
MatLAB pozwala na obsªug¦ obrazów ruchomych zapisanych w formacie *.avi. Do wczytywania sªu»y polecenie: VideoReader(nazwa_pliku) (w starszych wersjach istniaªo polecenie aviread(nazwa_pliku) obsªuguj¡ce formaty AVI, MPG, MPEG, WMV, ASF i
ASX). Dane te s¡ zapisywane w postaci wska¹nika do pliku struktur (klatek).
Inn¡ przydatn¡ funkcj¡ sªu»¡c¡ do wy±wietlania jest polecenie implay(tablica). Pozwala ono na przegl¡danie tablic i animacji klatka po klatce, przewijanie w przód i tyª,
etc.
Kolejn¡ funkcj¡ jest montage(tablica, parametry), które wy±wietla wybrane klatki
obok siebie.
Do zapisu animacji (w starszych wersjach) do pliku sªu»y polecenie movie2avi(animacja,
nazwa pliku, parametry). Do najwa»niejszych parametrów nale»y wybór metody kompresji (zale»na od platformy), pr¦dko±¢ (fps) czy jako±¢ kompresji.
W nowszych wersjach pakietu MatLAB zmieniono form¦ zapisu i odczytu do pliku.
Odbywaj¡ si¦ ona w kilku etapach:
ZAPIS
1. Stworzenie obiektu (struktury) przechowuj¡cego nazw¦ pliku oraz parametry zapisu,
np.
Obiekt = VideoWriter('plik.avi');
Obiekt.FrameRate = 4;
2. Otwarcie pliku do zapisu: open(Obiekt);
3. Zapis kolejnych klatek: writeVideo(obiekt, klatka);
4. Zamkni¦cie obiektu: close(Obiekt);
ODCZYT:
1. Stworzenie obiektu do odczytu: Obiekt = VideoReader('plik.avi');
2. Stworzenie struktury do przechowywania danych:
film = struct('cdata',zeros(Obiekt.Height,Obiekt.Width,3,'uint8'));
3. odczyt klatka po klatce (dla wersji 2014b):
k=1;
while hasFrame(film)
film(k).cdata=readFrame(film);
k=k+1
end
lub dla wersji (2013b):
for k=1:Obiekt.NumberOfFrames
film(k).cdata=read(Obiekt,k);
end
Podstawowe informacje o animacji mo»na uzyska¢ poprzez wykonanie polecenia aviinfo(nazwa_pliku)
lub mmfileinfo(nazwa_pliku). Podaje ono informacje o wymiarach, kompresji, dacie
modykacji, fps czy zastosowanym formacie kodowania.
Na gurach g.1-3 przedstawiono funkcje dost¦pne w Image Processing Toolbox dziaªaj¡ce na sekwencjach obrazów, z uwzgl¦dnieniem specycznych ogranicze« (¹ródªo: Mathworks MATLAB - Image Processing Toolbox 6 - User's Guide, p. 2.21-2.23).
1
Analiza i Przetwarzania Obrazów Cyfrowych
IIIr Informatyki Stosowanej 2015/2016
Rysunek 1:
2
copyright: M. Dwornik
[email protected]
Zbiór funkcji dziaªaj¡cych na obrazach sekwencyjnych
Operacje regionalne
S¡ to operacje dotycz¡ce pewnego fragmentu (regionu) obrazu. Do podstawowych operacji
nale»¡:
• wygªadzanie fragmentu obrazu: Polega to na u±rednieniu fragmentu obrazu w oparciu o warto±ci na brzegu danego obszaru. Sªu»y do tego polecenie roifill(obraz,
maska lub wspóªrz¦dne). Maska jest to obraz logiczny posiadaj¡cy warto±¢ 1 w
miejscu, gdzie ma nast¡pi¢ u±rednienie. Alternatyw¡ mo»e by± podanie dwóch wektorów (odpowiednio x i y) zawieraj¡cych wspóªrzedne naro»ników u±rednianego
obszaru. Je»eli jako parametr podany jest tylko obraz, wówczas wybory miejsca
u±redniania dokonuje si¦ przy pomocy myszki.
• lokalne wyrównywanie histogramu: adapthisteq.
• ltracja fragmentu obrazu: Do ltracji fragmentu obrazu sªu»y polecenie roifilt2.
Posiada ono dwie mo»liwo±ci skªadni:
roifilt2(filtr, obraz, BW) - gdzie ltr to liniowy ltr 2D (np. maska Sobela), a BW to logiczny obraz wskazuj¡cy obszar ltracji.
roifilt2(obraz, BW, funkcja), gdzie funkcja to wska¹nik do funkcji, a BW
to obraz logiczny.
• Do tworzenia maski BW na podstawie wspóªrz¦dnych sªu»y polecenie roipoly(obraz,
Xi , Yi ). Je»eli jako argument podany jest sam obraz, obszar jest wybierany przy
u»yciu myszki.
2
Analiza i Przetwarzania Obrazów Cyfrowych
IIIr Informatyki Stosowanej 2015/2016
copyright: M. Dwornik
[email protected]
Rysunek 2:
Zbiór funkcji dziaªaj¡cych na obrazach sekwencyjnych
Rysunek 3:
Zbiór funkcji dziaªaj¡cych na obrazach sekwencyjnych
3
Analiza i Przetwarzania Obrazów Cyfrowych
IIIr Informatyki Stosowanej 2015/2016
3
copyright: M. Dwornik
[email protected]
Operacje na dwóch obrazach
S¡ to operacje punktowe, które mo»na podzieli¢ na dwie grupy:
3.1
logiczne
Do operacji logicznych, odbywaj¡cych si¦ na ogóª na obrazach logicznych (cho¢ mo»liwe
jest uogólnienie do obrazów monochromatycznych). Do podstawowych operacji nale»y:
iloczyn logiczny - bitand(L1, L2), suma logiczna - bitor(L1, L2) i suma rozª¡czna bitxor(L1, L2) i ró»nica logiczna - bitand(L1, bitcmp(L2,8)). Dziaªanie tych funkcji
na obrazach monochromatycznych przedstawia tab.1. Zalet¡ tych operacji jest fakt, »e
nigdy nie przekraczaj¡ one zakresu wej±ciowego.
Wyniki operacji logicznych dla obrazów monochromatycznych
Tabela 1:
L1 (m, n)
138
201
154
3.2
L2 (m, n)
117
224
154
bitand bitor bitxor sub(L1 , L2 )
7
255
255
130
7
201
23
7
154
154
0
0
Operacje arytmetyczne
Do operacji arytmetycznych zaliczamy takie operacje jak:
•
•
•
•
dodawanie: imadd(L1, L2),
odejmowanie: imdiff(L1, L2),
warto±¢ bezwzgl¦dna ró»nicy: imabsdiff(L1, L2),
odejmowanie z nasyceniem, gdzie warto±ci ujemne s¡ zamieniane na zero: imsubtract(L1,
L2)
• ±rednia wa»ona: imlincomb(waga1, L1, waga2, L2, ...). Dla wag speªnione muP
sz¡ by¢ warunki N
i=1 wagai = 1 i ∀i∈N wagai ­ 0
• mno»enie: immultiply(L1,L2 lub liczba)
• dzielenie: imdivide(L1,L2)
• maksima i minima: max(L1, L2) i min(L1, L2)
4