Konspekt CPO cw 2

background image

IV ROK GIK. PRZEDMIOT:  CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA 

wersja  130311 

 

CPO ‐ ćw.2. Przetwarzanie obrazów w programie MATLAB  ‐ Wstęp ‐  dr inż. Natalia Borowiec 

Ćwiczenie_2. Przetwarzanie obrazów w programie MATLAB –  Wstęp 

• Cel tematu 

‐ zapoznanie się z interfejsem programu MATLAB 
‐ zapoznanie się z podstawowymi funkcjami do przetwarzania obrazów 
•  Dane do ćwiczeń 

Na  ćwiczeniach  korzystamy  z  danych  (plik:  test_2.jpg)  zlokalizowanych  na  dysku  „I”  w  katalogu:  
\nborowiec\CPO\T2\Dane\  
lub na stronie: 
http://twiki.fotogrametria.agh.edu.pl/bin/view/Dydaktyka/CPOMaterSt  
 
•  Wprowadzenie do programu MATLAB 

Zapoznanie się z interfejsem graficznym programu 

ƒ Założyć katalog Temat2 i skopiować do niego plik test_2.jpg. 
ƒ Po  uruchomieniu  programu  sprawdzić  czy  widoczne  są  okna  Command  Window,  Current 

Directory i Workspace. Poszczególne okna można włączyć korzystając z Menu / Desktop

Okno  Command  Window  służy  wydawaniu  poleceń  i  wywoływaniu  funkcji.  Okno  Current 
Directory
 wyświetla aktualną zawartość folderu roboczego. W oknie Workspace wyświetlane są 
zmienne. 

ƒ Ustawić ścieżkę katalogu roboczego tak by wskazywała katalog Temat2. 
ƒ Sprawdzić czy w oknie Current Directory widoczny jest skopiowany plik. 

 
Definiowanie zmiennych i elementarne działania matematyczne 

ƒ Zdefiniować w oknie Command Window zmienną i nadać jej wartość 2 wpisując: 

c=2

Operator  „=”  to  operator  podstawienia.  Nie  należy  mylić  go  z  operatorem  logicznym  równości, 
który oznaczamy jako „==” (podwójny znak równości). 

ƒ Sprawdzić czy zmienna pojawiła się w oknie Workspace. 

Podstawowe operacje matematyczne wykonujemy używając symboli: +, ‐, *, / ,^. 

ƒ Wykonać przykładowe działanie: 9‐c

1.4

 

Polecenie 

clc

 służy do czyszczenia okna poleceń. 

Polecenie 

clear

usuwa wszystkie utworzone do tej pory zmienne. 

ƒ Wypróbować ich działanie 

 
Macierze ‐ definiowanie 
W MATLAB’ie najczęściej operuje się nie na pojedynczych zmiennych, lecz na macierzach.  Dlatego 
nawet pojedyncza zmienna rozumiana jest w MATLAB’ie, jako macierz 1 x 1. 

ƒ Zdefiniować macierz K o wymiarach 3 x 4 wpisując: 

K=[4 0 0 1; 2 1 7 -1; 0 -1 1 2];

 

background image

IV ROK GIK. PRZEDMIOT:  CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA 

wersja  130311 

 

CPO ‐ ćw.2. Przetwarzanie obrazów w programie MATLAB  ‐ Wstęp ‐  dr inż. Natalia Borowiec 

Poszczególne liczby w ramach danego wiersza oddzielamy spacją lub przecinkiem! 
Jest to podstawowy sposób definiowania macierzy w MATLAB’ie. 
Macierz może być również definiowana jako macierz blokowa (zbudowana z innych macierzy) np.: 

D = [A B; C];

lub w sposób kombinowany, np.: 

D = [A B;[1 3 0 9; 0 0 1 1]];

 

 
Uwaga: 
Jeżeli  po  komendzie  w  języku  MATLAB  nie  występuje  średnik  (;),  to  wynik  jest  od  razu  wyświetlany  na 
ekranie w oknie komend. Należy o tym pamiętać przy działaniach wykonywanych na dużych macierzach np. 
w przypadku obrazów. 

Do odczytu zadanego elementu macierzy służy operator (). 

ƒ Sprawdzić  i  przeanalizować,  w  jaki  sposób  można  wybierać  elementy  macierzy  wpisując 

kolejno poniższe polecenia (pomocne będzie wyświetlenie macierzy A w edytorze – Array 
Editor
 – dwukrotne kliknięcie macierzy w oknie Workspace): 

  

K(2,3)

K(:,4)
K(3,:)
C = K(2,3:4)
C1 = K(2:3,1)

 
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. 

 
•  Podstawowe działania na obrazach w programie MATLAB 

W  programie  MATLAB  do  przetwarzania  obrazów  wykorzystuje  się  wbudowaną  bibliotekę  tzw. 
Image Processing Toolbox, której poszczególne funkcje opisane są helpie. 

 

 
Mówiąc o obrazach należy rozróżnić trzy podstawowe pojęcia: 
‐ typ obrazu, 
‐ format obrazu (pliku), 
‐ typ zmiennej reprezentującej wartości pikseli. 
 
W MATLAB’ie rozróżnić można 4 typy obrazów: 
‐ binarne (Binary Image) 
‐ w barwach szarości (Greyscale Image),  
‐ kolorowe (Truecolor Image np. RGB  ),  
‐ indeksowane (Indexed Image). 
 
Dostępne formaty plików w MATLAB’ie można sprawdzić w Helpie (Functions – Alphabetical List – 
imread). 
 
Przez  typ  zmiennej  należy  rozumieć  sposób  reprezentacji  konkretnej  wartości  jasności  piksela. 
Podstawowe zmienne to: 
‐ logical (0 lub 1 – 1bit), 

background image

IV ROK GIK. PRZEDMIOT:  CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA 

wersja  130311 

 

CPO ‐ ćw.2. Przetwarzanie obrazów w programie MATLAB  ‐ Wstęp ‐  dr inż. Natalia Borowiec 

‐ uint8 (0 do 255 – 8bitów), 
‐ double (liczby wymierne – 64bity). 
Wczytanie obrazu oraz odczytanie informacji o pliku graficznym. 
Do odczytania informacji o pliku graficznym służy funkcja 

imfinfo

.  

Składnia wywołania: 

imfinfo(‘nazwa pliku.rozszerzenie’)

 

ƒ Sprawdzić, jakie dane można pozyskać na temat pliku graficznego test_2.jpg ‐  
Odpowiedzieć na następujące pytania: 
ƒ Z jakim typem obrazu mamy do czynienia? 
ƒ Jaki jest format jego zapisu? 
ƒ Ile bitów użyto do zapisu jasności pikseli na danym kanale? 

 
W  MATLAB’ie  obrazowi  można  przypisać  zmienną  i  traktować  wczytany  obraz,  jako  tablicę.  Do 
wczytania obrazu do zmiennej służy funkcja imread.  

ƒ Wczytać obraz „test_2.jpg” do zmiennej I wykonując poniższe polecenie 

I = imread(‘test_2.jpg’);

 pamiętać o średniku ! 

ƒ Wyświetlić obraz:  

figure(1); imshow(I);

 

ƒ Jakie wymiary ma tablica przechowująca obraz – sprawdź w oknie Workspace 
ƒ Odczytać  kilka  wartości  jasności  pikseli  na  poszczególnych  kanałach  RGB  przy  pomocy 

funkcji dostępnej w pasku nad obrazem 

 .  

 
Rozkład obrazu na składowe barwne 

ƒ W celu podziału obrazu na składowe barwne należy wykonać następujące polecenia: 

R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);

Dwukropki oznaczają, że przetwarzamy wszystkie wiersze i wszystkie kolumny obrazu I 

ƒ Wyświetlić wszystkie składowe, pamiętać o poleceniu figure

 
Zamiana składowych barwnych 
Za  daną  składową  barwną  można  podstawić  dowolny  obraz  tworząc  kompozycję  barwną  w 
kolorach zafałszowanych.  

ƒ Zamienić kompozycję RGB na BGR wykonując polecenia: 

I(:,:,1) = B;
I(:,:,2) = G;
I(:,:,3) = R;

 

ƒ Utworzyć i wyświetlić taką kompozycję aby płatki kwiatu miały kolor zielony 

 
Wybór fragmentu obrazu 
Wyboru fragmentu tablicy dokonujemy określając w nawiasach interesujący nas zakres. 

ƒ Wyciąć z obrazu I pierwszych 100 wierszy i kolumn wykonując polecenie: 

Fragment = I(1:100,1:100,:);

Wyniki wyświetlić. Tym razem dwukropek oznacza, wybór wszystkich kanałów.

background image

IV ROK GIK. PRZEDMIOT:  CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA 

wersja  130311 

 

CPO ‐ ćw.2. Przetwarzanie obrazów w programie MATLAB  ‐ Wstęp ‐  dr inż. Natalia Borowiec 

ƒ Wyciąć  z  kanału  zielonego  fragment  obrazu  odpowiadający  centralnej  części  kwiatu  (bez 

płatków). W celu dokonania odczytu zakresu można posłużyć się narzędziem 

.

 

Sprawdzanie wymiaru tablicy przechowującej obraz 
Do odczytu wymiaru tablicy służy funkcja 

size

.

Składnia wywołania funkcji

size

 w przypadku 

obrazu kolorowego wygląda następująco: 

[W K C] = size(I);

gdzie W to ilość wierszy, K to ilość kolumn, C to ilość kanałów. 
W przypadku obrazu szarego wywołanie funkcji 

size

 wygląda następująco: 

[W K] = size(I);

ƒ Odczytać wymiary fragmentu obrazu wyciętego w poprzednim zadaniu. 

 
Konwersja typów obrazów 
Najczęściej stosowane typy konwersji: 

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 

mat2gray(I)

 – konwersja macierzy na obraz. 

ƒ Wykonać konwersje obrazu kolorowego na obraz w skali szarości. Nowy obraz zapisać jako 

zmienną I1. Wynik wyświetlić.  

 
Arytmetyka obrazowa 

imadd(I,J)

 – dodawanie obrazów,  

imsubtract(I,J)

 – odejmowanie obrazów, 

imcomplement(I)

 – obliczenie uzupełnienia obrazu.  

ƒ Obliczyć uzupełnienie obrazu kolorowego i w barwach szarości. Oba obrazy wyświetlić na 

ekranie. 
 

Podstawowe funkcje arytmetyczne i statystyczne 
W  Matlabie  dostępnych  jest  szereg  funkcji  realizujących  podstawowe  operacje  arytmetyczne  i 
obliczenia statystyczne na tablicach. Należą do nich między innymi: 

max

min

mean

sum

 

Funkcje te, jako wartość zwracają wektor obliczanych wielkości charakteryzujących daną kolumnę 
tablicy. Np. jeżeli wywołamy funkcję

mean

 w odniesieniu do całego obrazu np.: 

mean(R)

to  w  wyniku  otrzymamy  wektor  wierszowy  zawierający  średnie  wartości  każdej  z  kolumn.  Aby 
obliczyć średnią wartość dla całej tablicy musimy daną funkcję zastosować dwukrotnie np.: 

mean(mean(R))

ƒ Obliczyć średnią jasność pikseli dla kanału niebieskiego obrazu 

 
Przekształcenie jasności pikseli z wykorzystaniem funkcji imadjust 
Wyświetlić  histogram  obrazu  w  barwach  szarości  (I2).  Do  wyświetlenia  służy  funkcja 

imhist(I).

   

 
Streching obrazu wykonywany jest przy użyciu funkcji o składni: 

J=imadjust(I,[low_in,high_in], [low_out,high_out],gamma),

  

background image

IV ROK GIK. PRZEDMIOT:  CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA 

wersja  130311 

 

CPO ‐ ćw.2. Przetwarzanie obrazów w programie MATLAB  ‐ Wstęp ‐  dr inż. Natalia Borowiec 

gdzie  

[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” 

ƒ Wykonać  rozciągnięcie  histogramu  obrazu  I1  na  pełen  zakres  jasności  (0‐255)  wybierając 

odpowiedni  przedział  wejściowy  na  podstawie  wyświetlonego  histogramu.  W  nawiasach 
kwadratowych  muszą  być  wartości  z  przedziału  [0,1].  Współczynnik  gamma  przyjąć  jako 
równy 1 

 
Profil jasności 

p = improfile(I,[XA,XB],[YA,YB])

  –  funkcja  określająca  poziomy  jasności  wzdłuż 

zdefiniowanej  linii.  Funkcja  zwraca  wektor  P  przechowujący  dane  o  jasności  kolejnych  pikseli 
wzdłuż profilu. 
Do  wyświetlania  zawartości  macierzy  w  formie  wykresu  służy  funkcja  plot.  Wyświetlanie  linii 
profilu wygląda następująco: 

plot(p,’-g’)

‘-g’

 oznacza, że profil narysowany będzie, jako lina zieloną 

 
 
Zadanie  

ƒ Napisać skrypt, który: 

o

czyści ekran i zmienne  

o

wczytuje wejściowy obraz kolorowy (test_2.jpg), 

o

zamienia obraz wejściowy na obraz w skali szarości, 

o

wyznacza  wartości  profilu  jasności  pikseli  obrazu  szarego  wzdłuż  odcinaka 

zdefiniowanego przez punkty: A = (48,45), B = (534,327), 

o

wyświetla na rysunku nr 1 obraz w barwach szarości wraz z nałożoną prostą, wzdłuż 

której odczytywane są wartości jasności pikseli; wyświetlenie obrazu wraz z prostą 
umożliwia funkcja hold on

plot([[X

A

, X

B

], [Y

A

,Y

B

],’‐‘) – funkcja wyświetlania prostej, 

o

wyświetla na rysunku nr 2 wykres jasności pikseli wzdłuż zdefiniowanej prostej, 

o

oblicza średni poziom jasności linii profilu 

Nowy skrypt tworzymy klikając na ikonę 

. Polecenia w skrypcie wpisujemy analogicznie jak w oknie 

komend.  Skrytp  uruchamiamy  klawiszem  F5  lub  ikoną 

.  Po  uruchomieniu  skryptu  należy  zawsze 

sprawdzić czy w oknie Command zostało zasygnalizowane wystąpnienie błędów. 
 

Skrypt zapisać w swoim katalogu jako linia.m 
 

* Powyższy skrypt uzupełnij o zapis jasności profilu do pliku tekstowego profil.txt 


Wyszukiwarka

Podobne podstrony:
Konspekt CPO cw 5
Konspekt CPO cw 1
Konspekt CPO cw 1
Konspekt CPO cw 3
Konspekt CPO cw 3
Konspekt CPO cw 4
konspekt basen cw. ze współcwicz, fizjoterapia, FIZJOTERAPIA, III SEMESTR, Basen, dla osob starszych
Konspekt do cw. lab.-termowizja, Energetyka Politechnika Krakowska Wydział Mechaniczny I stopień, Mi
cw z pilka konspekt zal ćw muz ruch
konspekt- noga(ćw.oswajaj.), Studia, Fizjoterapia, Studia - fizjoterapia, Kształcenie Ruchowe, piłka
konspekt basen cw. ze współcwicz, fizjoterapia, FIZJOTERAPIA, III SEMESTR, Basen, dla osob starszych
Konspekt ćw 1

więcej podobnych podstron