Instrukcja 01

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Wydział Inżynierii

Mechanicznej i Robotyki

Katedra Robotyki i Mechatroniki

Przetwarzanie sygnałów i identyfikacja w sterowaniu


urządzeń mechatronicznych

Temat: Wprowadzenie do przetwarzania obrazów w programie


MATLAB
Cel ćwiczenia: Zapoznanie studentów z pracą z danymi macierzowymi i obrazami
w środowisku programistycznym MATLAB. Zapoznanie studentów z
histogramami obrazów.
Zagadnienia:
1. Podstawowe funkcje do przetwarzania obrazów w środowisku obliczenio-
wym MATLAB,
2. Histogramy obrazów i wyrównywanie histogramu.

Prowadzący: dr inż. Krzysztof Holak


1. Podstawowe funkcje do przetwarzania obrazów w środowisku obliczeniowym
MATLAB.

Przydatne komendy na początku każdego m-pliku: cls, clear all, close all,

Wczytanie obrazu: A = imread(‘ścieżka dostępu’);


Podajemy ścieżkę dostępu do obrazka lub nazwę obrazka z rozszerzeniem, gdy obrazem
znajduje się w katalogu w którym aktualnie pracujemy.

Wczytanie rozdzielczości oraz liczby kanałów zapisanego obrazka:


im_size = size(A);
Co oznaczają i od czego zależą liczby zwracane przez funkcję?

Wyświetlenie obrazka: imshow(A);

Zmiana obrazka z kolorowego na skalę szarości: A_gray = rgb2gray(A);


Jak zmienia się wektor zwracany przez funkcję size()?

Zapis zmodyfikowanego obrazka na dysk:


imwrite(A_gray, ‘ścieżka dostępu’);
Znów możemy użyć całej ścieżki dostępu do nowego pliku lub tylko nazwy nowego pliku z
rozszerzeniem.

Wycinanie fragmentów obrazków za pomocą indeksowania:


Należy podać zakres wierszy i kolumn z macierzy obrazu, które zostaną przeniesione do
nowej macierzy, np. B = A(20:100, 50:150);
Należy pamiętać, że pierwszy indeks oznacza numer wiersza macierzy, a drugi numer
kolumny. W MATLABIE początek układu współrzędnych obrazu znajduje się w lewym
górnym narożniku obrazka. Dlatego indeksy wierszy rosną w dół obrazka, a indeksy kolumn
z lewej do prawej.

Aby odczytać współrzędne piksela obrazu (i wartości jasności tego piksela) używa się funkcji:
[x y value] = impixel(A)
Należy wskazywać myszą interesujące nas piksele i klikać LPM. Na zakończenie wyboru
należy nacisnąć enter.

Funkcja wycinająca fragment obrazka:


1) Ręczne wskazanie fragmentu do wycięcia. Należy wskazać lewy górny narożnik wycina-
nego prostokąta, zaznaczyć prostokąt, kliknąć RPM na jego krawędzi i wybrać z menu
crop image.
[A_small rectangle] = imcrop(A);

2) Automatyczne wycięcie, gdy znany jest rozmiar wycinanego fragmentu. Liczby x i y


oznaczają współrzędne lewego górnego narożnika, a parametry width i height długość
boków prostokąta.
A_small = imcrop(A, [x y width height]);

2. Histogram Obrazu

Obliczanie histogramu obrazu.


Do obliczenia i wizualizacji histogramu obrazu służy funkcja imhist(A). Argumentem funkcji
jest macierz reprezentująca obraz w skali szarości (nie jest to obraz kolorowy!).
Co przedstawia histogram obrazu? Jaki ma kształt dla różnych rodzajów obrazu (ciemny, jasny,
mały kontrast, duży kontrast).

Wyrównywanie histogramu.
Aby wyrównać histogram obrazu (w celu otrzymania obrazu charakteryzującego się lepszym
kontrastem niż obraz wejściowy) należy użyć funkcji histeq(A). Argumentem funkcji jest
obraz w skali szarości.

Zadania:

1. Wczytaj obraz ze zbioru udostępnionego na zajęciach. Utwórz małe obrazy z fragmentów


obrazu wskazanych przez prowadzącego zajęcia. Wyświetl histogramy wszystkich ma-
łych obrazów. Czym one się charakteryzują?
2. Utwórz losowy obraz w skali szarości używających różnych generatorów liczb losowych
udostępnionych w programie MATLAB. Wyświetl histogramy tych obrazów. Czy kształt
histogramu był do przewidzenia? Liczby losowe pochodzące z różnych rozkładów staty-
stycznych można generować korzystać z toolboxa Statistics w
MATLABIE.
3. Wczytaj obrazy i przeprowadź na nich operację wyrównywania histogramu. Wyświetl hi-
stogramy przed i po wykonaniu wyrównania. Jaka jest różnica pomiędzy wykresami?

You might also like