inżynieria obrazów cyfrowych wiczenie 3 · pierwsza z nich to modele, które mają zastosowanie w...

13
Studia Podyplomowe Techniki Wizualizacji Wrocław 2007 Inżynieria obrazów cyfrowych Ćwiczenie 3 Wybrane modele kolorów i ich zastosowania Celem ćwiczenia jest zrozumienie i poznanie zastosowań praktycznych niektórych modeli kolorów. Spośród wielu znanych modeli opracowanych dla specyficznych zastosowań zwrócono uwagę na dwie grupy modeli. Pierwsza z nich to modele, które mają zastosowanie w procesie wyświetlania barw o znanym opisie liczbowym na monitorach oraz do wyrażania przy pomocy liczb w jakiś sposób wyobrażanych sobie barw. Druga grupa to modele opisujące obrazy barwne w kategoriach luminancja-chrominancja. Opisy liczbowe barw stosowane w modelach luminancja- chrominancja wywodzą się z podstawowego dla teorii barw modelu CIE-XYZ i mają fundamentalne znaczenie w algorytmach kompresji obrazów barwnych oraz telewizji analogowej i cyfrowej. Zaproponowane w ćwiczeniu przykłady dotyczyły będą właśnie tych dziedzin. Rozważane trzy modele barw: RGB, HSV, Model luminancja chrominancja, 1. Model RGB Model RGB służy głównie do opisu procesu wyświetlania obrazu barwnego na monitorze. Obraz na monitorze niezależnie od tego czy jest to monitor CRT, LCD czy plazmowy powstaje jako wynik kombinacji efektów procesów świecenia bardzo małych punktów, emitujący światło w trzech kolorach podstawowych, czerwonym, zielonym i niebieskim. W procesie wyświetlania obrazu zachodzi, więc sumowanie barw i w związku z tym model ten nosi często nazwę modelu addytywnego. Najczęściej model RGB przedstawia się w postaci sześcianu jednostkowego o krawędziach położonych na trzech osiach układu współrzędnych prostokątnych (Rys. 1.), które reprezentują trzy barwy podstawowe. W modelu RGB barwę definiuje się, więc jak przy pomocy trójki liczb (r, g, b), przy czym r, g, b [0, 1]. Doc. dr inż. Jacek Jarnicki Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej [email protected]

Upload: buiminh

Post on 01-Mar-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Inżynieria obrazów cyfrowych

Ćwiczenie 3

Wybrane modele kolorów i ich zastosowania

Celem ćwiczenia jest zrozumienie i poznanie zastosowań praktycznych niektórych modeli

kolorów. Spośród wielu znanych modeli opracowanych dla specyficznych zastosowań

zwrócono uwagę na dwie grupy modeli. Pierwsza z nich to modele, które mają zastosowanie

w procesie wyświetlania barw o znanym opisie liczbowym na monitorach oraz do wyrażania

przy pomocy liczb w jakiś sposób wyobrażanych sobie barw. Druga grupa to modele

opisujące obrazy barwne w kategoriach luminancja-chrominancja. Opisy liczbowe barw

stosowane w modelach luminancja- chrominancja wywodzą się z podstawowego dla teorii

barw modelu CIE-XYZ i mają fundamentalne znaczenie w algorytmach kompresji obrazów

barwnych oraz telewizji analogowej i cyfrowej. Zaproponowane w ćwiczeniu przykłady

dotyczyły będą właśnie tych dziedzin.

Rozważane trzy modele barw:

RGB,

HSV,

Model luminancja –chrominancja,

1. Model RGB

Model RGB służy głównie do opisu procesu wyświetlania obrazu barwnego na monitorze.

Obraz na monitorze niezależnie od tego czy jest to monitor CRT, LCD czy plazmowy

powstaje jako wynik kombinacji efektów procesów świecenia bardzo małych punktów,

emitujący światło w trzech kolorach podstawowych, czerwonym, zielonym i niebieskim. W

procesie wyświetlania obrazu zachodzi, więc sumowanie barw i w związku z tym model ten

nosi często nazwę modelu addytywnego. Najczęściej model RGB przedstawia się w postaci

sześcianu jednostkowego o krawędziach położonych na trzech osiach układu współrzędnych

prostokątnych (Rys. 1.), które reprezentują trzy barwy podstawowe. W modelu RGB barwę

definiuje się, więc jak przy pomocy trójki liczb (r, g, b), przy czym r, g, b [0, 1].

Doc. dr inż. Jacek Jarnicki

Instytut Informatyki, Automatyki i Robotyki

Politechniki Wrocławskiej

[email protected]

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Rys. 1. Model RGB przedstawiony jako sześcian

Model ma kilka istotnych własności:

przekątna sześcianu biegnąca od punktu [0, 0, 0] do punktu [1, 1, 1] reprezentuje tak

zwaną oś szarości zwierającą ciągłą skalę stopni szarości od czarnego [0, 0, 0] do

białego [1, 1, 1],

barwy inne niż szare, które można utworzyć z kombinacji składników r, g, b

reprezentowane są przez punkty wewnątrz sześcianu leżące poza przekątną,

model nie zawiera wszystkich barw postrzeganych przez człowieka,

wyświetlenie opisanej w modelu RGB barwy na monitorze jest łatwe,

opisanie przy pomocy składowych r, g, b barwy, którą sobie w jakiś sposób

wyobrażamy, lub mamy zadaną w postaci próbki jest raczej trudne.

Wyświetlenie barwy opisanej składowymi r, g, b

Przed przystąpieniem do napisania kolejnego programu wygodnie będzie wprowadzić

pojęcie funkcji. W języku systemu MATALB funkcja jest jednym z podstawowych

elementów składni programu. Funkcja umożliwia strukturalizację programu a tym samym

ułatwia programowanie i analizę kodu. W dotychczas pisanych programach funkcje były

wielokrotnie używane, lecz jeszcze ani razu nie były samodzielnie definiowane. Dla

sprawniejszego wykonania kolejnych zadań dogodnie będzie zapoznać się ze sposobem

określania własnych funkcji. Aby napisać nową funkcję należy wykonać następujące

czynności:

(0, 1, 0)

(1, 0, 0) (0, 0, 1)

R B

G

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Po uruchomieniu środowiska MATLAB otworzyć okno edytora i przygotować się do

pisania nowego programu wykonując polecenia File, New, M-file

W oknie edytora wpisać treść kodu funkcji stosując następująca składnię.

Wykonać polecenie SaveAs i zapisać program w folderze roboczym pod nazwą

nazwa_funkcji (powstanie w ten sposób plik tekstowy o nazwie

nazwa_funkcji.m). Nazwa musi być unikalna, to znaczy taka jakiej nie ma

jeszcze żadna inna funkcja zdefiniowana wcześniej.

Aby wykonać program opisany przez funkcję należy w linii komend środowiska

MATLAB wpisać:

>> [y_1, y_2,...,y_n] = nazwa_funkcji(arg_1, arg_2,..., arg_m)

i nacisnąć klawisz Enter. Oczywiście można także użyć takiej funkcji do pisania

dowolnego programu, czy innej funkcji, tak jak poprzednio używano gotowych

funkcji, znajdujących się w środowisku programistycznym MATLAB i w pakiecie

Image Processing Toolbox.

Wracając do problemu wyświetlania barw opisanych w kategoriach modelu RGB należy

na początku zrealizować proste zadanie, polegające na napisaniu funkcji wyświetlającej obraz

barwny, którego wszystkie punkty mają ten sam kolor opisany przy pomocy składowych

r, g, b. Projektowana funkcja o nazwie n.p. display_rgb powinna wyświetlać obraz o

rozmiarze 256x256 punktów, składający się z pikseli o tym samym kolorze, opisanym przez

trzy składowe r, g, b przy założeniu, że r, g, b [0, 1]. Pierwszą linię programu definiującego

funkcję można zapisać więc tak:

[] = display_rgb(r, g, b)

Dwa niewypełnione nawiasy [] oznaczają, że funkcja nie „zwraca” niczego, bowiem

zgodnie z założeniem jej zadaniem jest jedynie wyświetlenie obrazu a nie obliczanie jakiegoś

wyniku.

Dalszą część kodu funkcji należy napisać stosując następujące wytyczne:

Zadeklarować zgodną z rozmiarami obrazu tablicę o elementach typu (double)

zawierająca same zera.

Wypełnić odpowiednie elementy tablicy składowymi r, g, b.

%**********************************************************************

% Szablon funkcji w języku MATLAB

%**********************************************************************

function [y_1, y_2,...,y_n] = nazwa_funkcji(arg_1, arg_2,..., arg_m)

% . . .

% treść kodu funkcji

% . . .

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Wyświetlić obraz odpowiadający utworzonej tablicy.

Wynik powinien być taki jak na rysunku 2

Rys. 2. Obraz wypełniony punktami o kolorze r = 0.12, g = 0.23, b = 0.47

2. Model HSV

Model HSV (Hue, Saturation, Value) znacznie lepiej niż model RGB nadaję się do

opisania barwy zadanej w postaci próbki lub barwy „wyobrażanej”. Model ma postać

odwróconego stożka wypełnionego barwnymi punktami (Rys. 3). Barwa opisywana jest w

tym przypadku przy pomocy trzech liczb (h, s, v), przy czym h, s, v [0, 1]. Pierwsza

składowa h określa odcień barwy i jej zmiana o 0 do 1 odpowiada to zmianie od czerwonego

przez żółty, zielony, cyjanowy, niebieski, fioletowy i z powrotem do czerwonego (tak jak

pokazują strzałki na rysunku 3.). Druga składowa s reprezentuje nasycenie barwy i jej zmiana

od 0 do 1 odpowiada zmianie od szarości do barwy czystej. Trzeci element modelu, składowa

v opisuje jasność barwy, 0 reprezentuje barwę najciemniejszą a 1 najjaśniejszą.

Typowy algorytm ustalania składowych opisu barwy zadanej na przykład w postaci próbki

jest taki:

Ustawić wszystkie składowe na 1,

Zmieniać składową h (odcień) tak, aby osiągnąć wrażenie maksymalnego

podobieństwa z analizowaną próbką

Zmieniać s (nasycenie),

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Zmieniać v (jasność)

Rys. 3. Model HSV wyobrażony jako odwrócony stożek

Zastosowanie modelu HSV do opisania barwy zadanej w postaci próbki

Zadanie ma na celu napisanie funkcji wyświetlającej obraz wypełniony punktami o kolorze

opisanym przez zadane składowe h, s, v. Funkcja powinna ponadto wyświetlać na konsoli

składowe r, g, b, odpowiadające zadanemu kolorowi. Podobni jak w poprzednim zadaniu

powinien być to obraz o rozmiarze 256x256 punktów a funkcja może nazywać się display_hsv.

Algorytm realizacji zadania jest następujący:

Zadeklarować zgodne z rozmiarami obrazu dwie tablice o elementach typu (double)

zawierające same zera. Jedna tablica będzie przeznaczona na obraz opisany w modelu

HSV a druga w RGB

Wypełnić odpowiednie elementy tablicy opisującej obraz w modelu HSV składowymi

h, s, v.

Wypełnić tablicę opisującą obraz w modelu RGB wartościami składowych r, g, b

przeliczonymi z modelu HSV (należy zastosować funkcję hsv2rgb()).

Wyświetlić na konsoli składowe r, g, b jakiegoś punktu obrazu.

Wyświetlić obraz opisany w modelu RGB.

0

1

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Dla sprawdzenia można wyświetlić obraz, którego punkty opisano składowymi h = 0.34,

s = 0.83, v = 0.77, powinien on wyglądać mniej więcej tak:

Rys. 4. Obraz wypełniony punktami o kolorze h = 0.34, s = 0.83, v = 0.77

Ostatnia część zadania polega na znalezieniu opisu w modelu RGB barwy, której próbka

pokazana została na rysunku 5.

Rys. 5. Próbka barwy z logo Politechniki Wrocławskiej

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Do rozwiązania problemu wygodnie będzie wykorzystać funkcję napisaną samodzielnie

funkcję display_hsv()oraz algorytm ustalania barwy w modelu HSV opisany na

początku niniejszego punktu.

3. Modele luminacja - chrominancja

Modele luminacja – chrominancja najczęściej przedstawiane są w postaci zależności

pozwalających przeliczyć wartości składowych określających barwę w kategoriach modelu

RGB na inne trzy liczby. Pierwsza z nich nosi nazwę luminancji i zwykle oznaczana jest

literą Y. Luminancja określa jasność punktów obrazu i wyświetlona w stopniach szarości

bardzo dobrze prezentuje obraz barwny jako monochromatyczny. Pozostałe dwie składowe,

różnie definiowane i oznaczane, noszą nazwę chrominancji i zawierają informację, która

łącznie z luminancja określa obraz barwny. Poniżej podano wzory opisujące trzy najbardziej

popularne modele:

Model YUV stosowany jest w systemie telewizji PAL

Model YIQ określony dla systemu telewizji NTSC

Model YCbCr stosowany w systemach telewizji cyfrowej i telewizji cyfrowej wysokiej

rozdzielczości HDTV

Można zauważyć, że wszystkie trzy modele opisane są jako przekształcenia liniowe.

Można sprawdzić także, że dla każdego z nich istnieje przekształcenie odwrotne pozwalające

przeliczyć barwę ze składowych luminancja - chrominancja z powrotem na składowe w

B

G

R

...

...

...

V

U

Y

100051706170

434028801460

114058702290

B

G

R

...

...

...

Q

I

Y

311052802120

321025701680

114058702290

B

G

R

...

...

...

C

C

Y

r

b

082041805000

500033101680

114058702290

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

modelu RGB. Trzecia wspólna cecha to fakt, że luminancja Y dla każdego modle wyrażona

jest tak samo, przy pomocy równania

Równanie to określa, w jakich proporcjach trzeba zmieszać barwy podstawowe R,G, B,

aby uzyskać barwę białą. Współczynniki w równaniu wynikają z wykresu CIE-XYZ

prezentowanego na wykładzie i można je wyznaczyć na przykład wykreślni opierając się na

pokazanej na rysunku 6 konstrukcji.

Rys. 6. Luminancja wyrażona jako kombinacja składowych R. G, B

Zakładając, że dane są trzy barwy podstawowe reprezentowane na wykresie przez punkty

R, G i B oraz barwa biała wyrażona przez punkt C o współrzędnych chromatycznych

(0.333…, 0.333…). Postępowanie można opisać tak:

Zmieszać barwy R i G w takich proporcjach tak, aby uzyskać barwę reprezentowaną przez

punkt P, która po zmieszaniu znów w odpowiednich proporcjach z barwą B da w efekcie

barwę białą C.

B.G.R.Y 114058702290

R

G

B

P

C = (0.33, 0.33)

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Symulacja uproszconego toru telewizji transmisji obrazu w telewizji cyfrowej

Modele luminancja – chrominancja mają różne zastosowania. Jednym z ważniejszych jest

technika telewizyjna. Poniższy przykład pokazuje jak można, przez zamianę obrazu z modelu

RGB na model YCbCr ograniczyć ilość informacji przesyłanej przez kanał transmisyjny,

praktycznie bez straty jakości obrazu.

Na rysunku 7 pokazano zasadę, według której funkcjonuje tor transmisji obrazu. Na

początku w koderze, przeprowadzana jest konwersja obrazu z modelu RGB na model YCbCr.

W dalszej części toru sygnały luminacji i chrominancji traktowane są różnie. Sygnał luminacji

Y przesyłany jest bez zmiany poprzez kanał transmisyjny do odbiornika. Natomiast dwa

pozostałe sygnały opisujące, chrominancję, czyli Cb i Cr poddawane są następującym

przekształceniom.

C

Rys. 7. Uproszczony schemat toru transmisji obrazu w systemie telewizji cyfrowej

W koderze tablice opisujące składowe Cb i Cr poddawane są procesowi tak zwanego

downsamplingu (zwanego też czasem podpróbkowaniem), schemat tej operacji pokazano na

rysunku 8. Downsampling powoduje ograniczenie liczby informacji w sygnale, bowiem z

tablic Cb i Cr pozostaje jedynie ¼ opisu punktów obrazu. Tak, więc dla przykładu, jeśli obraz

zapisany jest przy pomocy trzech tablic R, G, B o rozmiarze 256 x 256 to informacja na

wyjściu kodera będzie zajmował 1 tablicę o wymiarze 256 x 256 (składowa Y) oraz dwie

tablice o rozmiarach 128 x 128. Można łatwo policzyć, że w ten sposób osiąga się

zmniejszenie informacji do przesłania w kanale transmisyjnym o połowę.

RGB

do

YCbCr

R

G

B

Y

Cb

Cr

YCbCr

do

RGB

Y R’

G’

B’

Downsampling

Downsampling

Upsampling

Upsampling

Cb/4

Cr/4

Cb/4

Cr/4

Y

KANAŁ

TRANSMISYJNY

Y

C’b

C’r

KODER DEKODER

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Rys. 8. Schemat ilustrujący downsamling

W dekoderze przeprowadzana jest operacja odwrotna do downsamplingu zwana

upsamplingiem (nadpróbkowanie). Operacje została wyjaśniona na rysunku 9. Tablice

opisujące składowe Cb i Cr zostają uzupełnione przez powielanie do pierwotnych rozmiarów.

Oczywiście różnią się one od pierwotnych gdyż w procesie upsamplingu część informacji

została bezpowrotnie stracona.

Rys. 9. Schemat ilustrujący upsampling

Ostatnim etapem wykonywanym w dekoderze jest konwersja informacji opisującej obraz

z powrotem do modelu R, G, B. Jest oczywiste, że będzie to obraz trochę inny niż źródłowy,

gdyż tablice opisujące, chrominancję są inne niż źródłowe. Okaże się jednak dalej, że różnice

są praktycznie niedostrzegalne dla obserwatora a jak już zauważono wcześniej liczba

informacji do przesłania przez kanał transmisyjny jest przy tym sposobie kodowana o połowę

mniejsza.

Fakt ten może potwierdzić następujący eksperyment. Należy napisać program symulujący

działanie toru transmisyjnego pokazanego na rysunku 7.

Algorytm jest taki:

Przeczytać obraz źródłowy z pliku Lena_color_256.tif i umieścić go w

odpowiedniej tablicy.

Przeprowadzić konwersję obrazu do modelu YCbCr posługując się funkcją rgb2ycbcr()

6 23

55 7

6 13

54 23

23 7

12 9

55 76

42 73

7 23

75 58

downsampling

6 23

55 7

6 6

6 6

23 23

23 23

55 55

55 55

7 7

7 7

upsampling

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Wyświetlić obraz źródłowy i składowe Y, Cb, Cr , wynik powinien wyglądać mniej

więcej tak:

Rys. 10. Obraz źródłowy i jego rozkład na składowe Y, Cb, Cr

Dla składowych Cb i Cr, wykonać operację downsamplingu (użyć funkcji

down_sampling(), która wykonuje to co pokazano na rysunku 8, czyli

przekształca kwadratowy obraz w obraz 4 razy mniejszy wycinając ¾ punktów).

Dla tablic uzyskanych w wyniku downsamplngu w punkcie poprzednim, wykonać

upsamplng (użyć funkcji up_sampling(), która wykonuje to, co pokazano na

rysunku 9, czyli przekształca kwadratowy obraz w obraz 4 razy większy, powielając

punkty).

Wyświetlić efekt w postaci obrazu źródłowego, składowej luminacji Y i

zrekonstruowanych w wyniku upsamplingu składowych Cb i Cr . Efekt powinien być

taki jak na rysunku 11. Należy porównać wizualnie obrazy składowych Cb i Cr na

rysunkach 10 i 11 (na ekranie monitora różnice będą widoczne).

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Rys. 11. Obraz źródłowy, składowa Y i zrekonstruowane w dekoderze składowe Cb, Cr

Wykonać konwersję obrazu opisanego luminancją Y i zrekonstruowanymi w

dekoderze składowymi Cb i Cr na obraz opisany w modelu RGB używając funkcji

ycbcr2rgb(),

Wyświetlić obraz źródłowy i zrekonstruowany w dekoderze obok siebie i porównać na

ile obraz odebrany przez odbiornik różni się od obrazu źródłowego. Wynik powinien

wyglądać tak jak na rysunku 12.

Rys. 12. Obraz źródłowy i obraz zrekonstruowany w odbiorniku

Studia Podyplomowe – Techniki Wizualizacji

Wrocław 2007

Na zakończenie, można przeanalizować podobny tor transmisyjny, lecz bez konwersji

z modelu RGB na YCbCr. Schemat takiego toru może na przykład wyglądać tak jak na

rysunku 13.

Rys. 13. Tor transmisyjny bez uwzględnienia konwersji na model

luminancja- chrominancja

Po wykonaniu eksperymentu (bardzo łatwo jest go wykonać komentując jedynie

fragmenty kodu w napisanym poprzednio programie) okaże się, że obraz otrzymany na

wyjściu dekodera znacząco różni się od obrazu źródłowego.

Zadanie dodatkowe:

Zmodyfikować funkcje down_sampling() i up_sampling(), tak że jedna próbka

z tablic składowych chrominancji obrazu wejściowego pobierana będzie nie dla 4 lecz dla 16

pikseli, czyli 4 razy rzadziej niż w poprzednim przypadku. Sprawdzić, jak zmieni się jakość

obrazu odtworzonego przy takim sposobie ograniczenia informacji niesionej przez składowe

chrominancji.

R

G

B

G’

B’

Downsampling

Downsampling

Upsampling

Upsampling

KANAŁ

TRANSMISYJNY

KODER DEKODER

R

G/4 G/4

B/4 B/4