Zajęcia 2 - Operacje na pojedynczych pikselach
Zadania
- Stworzyć i wyświetlić obrazek o szerokości 300 pikseli a wysokości 200 i zamalować go na żółto (kanały są w kolejności BGR). Do przypisania wartości można użyć konstrukcji:
obrazek[...] = (niebieski, zielony, czerwony)
- W obrazku z poprzedniego ćwiczenia odjąć od kanału zielonego wartość 100.
- Kolor każdego piksela ustawić w zależności od jego współrzędnych (x,y) następująco:
- kanał czerwony ustawić na wartość y-100,
- kanał zielony ustawić na wartość x,
- kanał niebieski ustawić na wartość x+y.
- Napisać funkcję obliczającą stopień podobieństwa jednego koloru do innego koloru (funkcja z dwoma argumentami - każdy to tablica z 3 elementami B,G,R).
Podobieństwo należy policzyć jako odległość euklidesową w przestrzeni RGB a następnie odpowiednio przeskalować w przedział [0;255]:
- 0 oznacza maksymalną różnicę w kolorach,
- 255 oznacza identyczny kolor.
- Napisać funkcję która jako argument przyjmuje dowolny, kolorowy obraz oraz jakiś kolor (jako tablica/krotka/lista trójelementowa - składowe BGR).
Funkcja ma zwrócić nowy, jednokanałowy (w odcieniach szarości) obraz o tym samym rozmiarze będący "mapą" podobieństwa pikseli oryginalnego obrazu do wskazanego koloru (podobieństwo liczone funkcją z poprzedniego zadania).
- Napisać analogiczną funkcję jak w poprzednim ćwiczeniu ale tym razem wszystkie obliczenia należy przeprowadzać dla całego obrazu równocześnie.
Uwagi:
a**5
- podniesienie do 5 potęgi
- img.sum(2) - sumowanie po 3 osi (pierwsza - wiersze, druga - kolumny, trzecia - kanały)
Przykładowe rozwiązanie zadań