Zapoznaj się z wybranymi funkcjami z pakietu matplotlib.pyplot. Utwórz "mały" obraz 2D img = np.arange(24).reshape(4,6). Sprawdź wybrane argumenty funkcji imshow(...) oraz inne funkcje które są pomocne przy wyświetlaniu obrazów dwuwymiarowych (macierzy 2D), np.:
Zapoznaj się z funkcjami, które zapisują i odczytują obrazy do/z plików dyskowych. Sprawdź składnie tych funkcji oraz dostępne formaty plików (.bmp,.png,.pdf,...) dla każdej funkcji (pakietu). Zapoznaj się z odpowiednimi funkcjami z pakietów matplotlib.pyplot i scipy.misc.
Napisz funkcję, która wypisuje podstawowe informacje o obrazie: typ danych, wymiar, rozmiar, liczba pikseli, wartość minimalna, wartość maksymalna, wartość średnia, odchylenie standardowe wartośći (jasności) elementów obrazu.
Napisz funkcję, która generuje poniższe wzory w macierzy o rozmiarze (100,200, dtype='uint8'). Wyniki uzyskaj w dwojaki sposób: za pomocą pętli for oraz macierzowo (z wykorzystaniem "slice'ingu"). Wzory podane są poniżej w omówieniu zadania 4.
Napisz funkcję, która w obrazie wypełnionym zerami o rozmiarze (100x100) 'rysuje' prostokąt o zadanym położeniu (należy podać współrzędne jednoznacznie określające położenie prostakąta), o zadanej wartości (np. val=255, val=1) i typie danych (np. typ='uint8', typ='float32'). Funkcja może wyglądać następująco: rysuj_kwadrat(y1,y2,x1,x2,typ='uint8',val=255)
Za pomocą funkcji rysuj_kwadrat(...) wygeneruj trzy obrazy oraz wyświetl je za pomocą funkcji wyswietl3(...) z Lab. 3:
Wczytaj obraz gdansk.bmp. Wyświetl jego poszczególne składowe: r,g,b. Zamień kolejność kanałów RGB na BGR.
Napisz funkcję która zamienia obraz RGB na obraz w skali szarości wg. wzoru $$ Y = 0.2125 R + 0.7154 G + 0.0721 B$$.
import os
import numpy as np
from scipy.misc import ascent, face
import matplotlib.pyplot as plt
import pp_lab_4 as lab4
import pp_lab_3_pd as lab3_pd
def info(obraz,name='---'):
"""
Funkcja wypisuje informacje o obrazie
[data utworzenia definicji funkcji]
Pamiętaj: to jest miejsce na Twój opis działania funkcji.
"""
Tutaj napisz samodzielnie ciało funkcji, której argumentami są: obraz oraz opis obrazu.
Funkcja ma za zadanie wyświetlać następujące informacje o podanym obrazie:
- typ danych,
- wymiar (wysokość x szerokość)
- rozmiar (liczba elementów w macierzy),
- liczba pikseli,
- wartość minimalna,
- wartość maksymalna,
- wartość średnia,
- odchylenie standardowe wartośći (jasności) elementów obrazu.
# testujemy działanie funkcji:
img1 = ascent()
img2 = face()
lab4.info(img1, 'Obraz Ascent')
print '*' * 10
lab4.info(img2, 'Obraz Face')
def linie_macierzowo():
"""
Funkcja tworzy cztery 'wzorzyste' macierze w sposób macierzowy i je wyświetla w dwóch rzędach i dwóch kolumnach.
[data utworzenia definicji funkcji]
Pamiętaj: to jest miejsce na Twój opis działania funkcji.
"""
Tutaj napisz samodzielnie ciało funkcji, która wygeneruje serie poniższych czterech obrazków. W tym celu:
1. Utwórz cztery macierze. Każda macierz ma rozmiar (100,200, dtype='uint8').
2. Tak zmodyfikuj macierze, metodą 'macierzową', aby po ich wyświetleniu uzyskać poniższe wykresy.
3. Wykorzystaj definicję funkcji z poprzedniego laboratorium służącą do wyświetlenia kilku zmiennych. Nie kopiuj tej definicji do dzisiaj tworzonego skryptu. Wykorzystaj już istniejący plik z definicją i użyj polecenia import.
%matplotlib inline
lab4.linie_macierzowo()
def linie_for():
"""
Funkcja tworzy cztery 'wzorzyste' macierze korzystając z pętli for oraz wyświetla je w dwóch rzędach i dwóch kolumnach.
[data utworzenia definicji funkcji]
Pamiętaj: to jest miejsce na Twój opis działania funkcji.
"""
Tutaj napisz samodzielnie ciało funkcji, która wygeneruje serie poniższych czterech obrazków. W tym celu:
1. Utwórz cztery macierze. Każda macierz ma rozmiar (100,200, dtype='uint8').
2. Tak zmodyfikuj macierze, za pomocą pętli for, aby po ich wyświetleniu uzyskać poniższe wykresy.
3. Wykorzystaj definicję funkcji z poprzedniego laboratorium służącą do wyświetlenia kilku zmiennych. Nie kopiuj tej definicji do dzisiaj tworzonego skryptu. Wykorzystaj już istniejący plik z definicją i użyj polecenia import.
lab4.linie_for()
r = lab4.rysuj_kwadrat(20,60,20,60,'float',1.0)
g = lab4.rysuj_kwadrat(30,70,40,80,'float',1.0)
b = lab4.rysuj_kwadrat(40,80,30,70,'float',1.0)
lab3_pd.wyswietl3([r,g,b],tyt=['r','g','b'])
rgb = lab4.obraz_RGB(r,g,b)
plt.imshow(rgb)
W celu wykonania zadania, ściągnij ze strony przedmiotu, paczkę .zip z obrazami do wczytania: 2016_Dane_2d (paczka zip) i użyj pliku, np.: gdansk.bmp, mak.bmp.
img = plt.imread(os.path.join('dane','gdansk.bmp'))
print img.shape
lab4.pokaz_skladowe_RGB(img)
lab4.pokaz_zmieniona_kolejnosc_skladowych(img)
y = 0.2125*r + 0.7154*g + 0.0721*b
plt.imshow(y,cmap='gray',interpolation='None')
a = lab4.rysuj_kolo(40,40,10)
b = lab4.rysuj_kolo(70,70,25)
c = a + b
lab3_pd.wyswietl3([a,b,c])