Geometria obrazu
Wykład 4
Kolory i segmentacja 1. Modele barw
2. Histogramy
3. Metoda progowa
RGB
Nazwa powstała ze złożenia pierwszych liter angielskich nazw barw
(czerwonej, zielonej i niebieskiej), z których model ten się składa. Jest to model wynikający z właściwości odbiorczych ludzkiego oka, w którym wrażenie widzenia dowolnej barwy można wywołać przez zmieszanie w ustalonych proporcjach trzech wiązek światła o tych barwach.
Do przestrzeni RGB ma zastosowanie synteza addytywna (zjawisko mieszania barw poprzez sumowanie wiązek światła o różnej długości), w której
wartości najniższe oznaczają barwę czarną, najwyższe zaś białą.
Najczęściej stosowany jest 24-bitowy zapis kolorów (po 8 bitów na każdą z barw składowych), w którym każda z barw jest zapisana przy pomocy składowych, które przyjmują wartość z zakresu 0-255. W modelu RGB wartość 0 wszystkich składowych daje kolor czarny, natomiast 255 - kolor biały. W rzadszych przypadkach stosuje się model, w którym przypada po 12 lub 16 bitów na każdą ze składowych, co daje dużo większe możliwości przy manipulowaniu kolorem.
Przykłady.
Mieszanie addytywne. Model RGB.
[http://pl.wikipedia.org/wiki/Synteza_addytywna]
[portaldtp.pl]
RGBA
Ten model czasami jest traktowany jako osobny, jednak w rzeczywistości jest to tradycyjny model RGB , poszerzony o dodatkowe informacje. Został opracowany przez grafików Edwina Catmulla, oraz Alvy'ego Raya Smitha w latach 1971-1972. Umożliwił on wprowadzenie do obrazów obsługi
efektu przezroczystości.
A oznacza kanał będący odpowiednikiem współczynnika pochłaniania światła. Gdy = 0%, to piksel jest całkowicie przezroczysty. Natomiast dla =100% jest całkowicie widoczny (jak w zwykłym RGB).
HSL
HSL – to model , w którym każdej barwie postrzeganej przez człowieka jest przyporządkowany jeden punkt w przestrzeni trójwymiarowej
identyfikowany przez trzy składowe: (h,s,l). Model pojawił się w okresie startu telewizji – pierwsze demonstracje w latach 1926-1930. Zakresy współrzędnych:
H: Hue – barwa, o wartościach z przedziału: od 0 do 360 stopni.
S: Saturation – nasycenie koloru, z przedziału 0...1 albo 0...100%.
L: Lightness – średnie światło białe, z przedziału 0...1 albo 0...100%.
Model HSL ma znaczenie historyczne i bywa nazywany modelem kolorów dla artystów.
[http://en.wikipedia.org/wiki/HSL_and_HSV]
HSV
HSV (ang.Hue Saturation Value) – model opisu przestrzeni barw zaproponowany w 1978 roku przez Alveya Raya Smitha.
Model HSV nawiązuje do sposobu, w jakim widzi ludzki narząd wzroku, gdzie wszystkie barwy postrzegane są jako światło pochodzące z
oświetlenia. Według tego modelu wszelkie barwy wywodzą się ze światła białego, gdzie część widma zostaje wchłonięta a część odbita od
oświetlanych przedmiotów.
Symbole w nazwie modelu to pierwsze litery nazw angielskich dla
składowych opisu barwy: H – odcień światła (ang. Hue) wyrażona kątem na kole barw przyjmująca wartości od 0° do 360°. Model jest
rozpatrywany jako stożek, którego podstawą jest koło barw.
Wymiary stożka opisuje składowa S – nasycenie koloru (ang. Saturation) jako promień podstawy oraz składowa V – (ang. Value) równoważna nazwie B – moc światła białego (ang. Brightness) jako wysokość stożka.
Przyporządkowanie częstotliwości fal świetlnych na kole barw w modelu HSV jest takie samo jak w modelach HSL , tzn. centrum barwy czerwonej odpowiada kąt 0° lub 360°. Centrum barwy zielonej odpowiada kąt 120°.
Centrum barwy niebieskiej odpowiada kąt 240°. Pozostałe barwy pośrednie dla składowej Hue są odpowiednio rozłożone pomiędzy kolorami czerwonym, zielonym i niebieskim.
[scien.stanford.edu]
[http://pl.wikipedia.org/wiki/HSV_(grafika)]
TRGB = record THSV = record
red : byte; hue : word; // przyjmuje wartości od 0 do 359 green : byte; saturation : byte; // przyjmuje wartości od 0 do 240 blue : byte; value : byte; // przyjmuje wartości od 0 do 240
end; end;
---
function KonwertujRGBnaHSV(RGB : TRGB) : THSV;
var
temp : integer;
begin
temp := MIN(MIN(RGB.red, RGB.green), RGB.blue);
// Obliczanie składowej Value
Result.value := MAX(MAX(RGB.red, RGB.green), RGB.blue);
// Zmienna TEMP jest teraz najmniejszą składową, a zmienna Result.value największą składową // Obliczanie składowej HUE
if temp = Result.value then Result.hue := 0 else begin
if RGB.red=Result.value then
Result.hue := 0 + ((RGB.green-RGB.blue)*60 div (Result.value-temp));
if RGB.green=Result.value then
Result.hue := 120 + ((RGB.blue-RGB.red)*60 div (Result.value-temp));
if RGB.blue=Result.value then
Result.hue := 240 + ((RGB.red-RGB.green)*60 div (Result.value-temp));
end;
if Result.hue<0 then
Result.hue := Result.hue+360;
// Obliczanie składowej SATURATION if (Result.value=0) then
Result.saturation := 0 else
Result.saturation := (Result.value-temp)*100 div Result.value; / / Obliczanie składowej VALUE
Result.value := (100*Result.value) div 255;
end;
Przykład konwersji RGB na HSV [wikipedia].
CIELab
CIELab to przestrzeń barw, która została znormalizowana w 1976 przez CIE (Comission Internationale de l'Eclairage - Międzynarodową Komisję
Oświetleniową). Stanowi ona modyfikację przestrzeni barw L, a , b,
stworzonej przez Huntera w 1948 roku, gdzie barwę opisują matematycznie trzy składowe: L - jasność, a – barwa od zielonej do magenty, b – barwa od niebieskiej do żółtej.
[cielab.com.au]
CIELab stanowi matematyczną transformację przestrzeni CIEXYZ.
CIEXYZ jest specjalną paletą barw skonstruowaną przede wszystkim pod kątem postrzegania barw przez ludzkie oko (fotoreceptory).
Barwę w sposób jednoznaczny opisuje się we współrzędnych
trójchromatycznych X, Y, Z, przy czym współrzędne te zależne są od składowych, zwanych również względnymi sprawnościami wizualnymi czopków.
[http://pl.wikipedia.org/wiki/CIEXYZ]
Przestrzeń CIEXYZ można przekształcić na przestrzeń barwną CIELab zgodnie z następującymi zależnościami (X0=94,81, Y0=100, Z0=107,3 są współrzędnymi barwy ciała nominalnie białego):
Transformację tę wprowadzono jako wynik badań nad spostrzeganiem przez oko ludzkie różnicy między barwami. Zakładano, że barwy znajdujące się w przestrzeni CIELab w jednakowej odległości ΔE od siebie będą postrzegane jako jednakowo różniące się od siebie. CIELab miała być równomierną
przestrzenią barw. Jednak różnicy percepcyjnej barw nie można jednoznacznie określić za pomocą ΔE.
CIELab jest obecnie najpopularniejszym sposobem opisu barwy i stanowi podstawę współczesnych systemów zarządzania barwą. Różnica pomiędzy dwiema barwami w przestrzeni CIELab ma postać:
i jest zwykłą odległością euklidesową pomiędzy dwoma punktami w przestrzeni trójwymiarowej.
Można przyjąć, że standardowy obserwator zauważa różnicę barw następująco:
•0 < ΔE < 1 - nie zauważa różnicy,
•1 < ΔE < 2 - zauważa różnicę jedynie doświadczony obserwator,
•2 < ΔE < 3,5 - zauważa różnicę również niedoświadczony obserwator,
•3,5 < ΔE < 5 - zauważa wyraźną różnicę barw,
•5 < ΔE - obserwator odnosi wrażenie dwóch różnych barw.
CMYK
Jest to zestaw czterech podstawowych kolorów farb drukarskich stosowanych powszechnie w druku kolorowym w poligrafii i metodach pokrewnych (atramenty, tonery i inne materiały barwiące w drukarkach
komputerowych, kserokopiarkach itp.). Na zestaw tych kolorów mówi się również barwy procesowe lub kolory triadowe.
Ogólnie mówiąc – nie istnieje jednolity system definiowania kolorów z natury za pośrednictwem kolorów CMYK. Można dokonywać tylko ogólnych uproszczeń. Pewnego zakresu odcieni nie da się w ogóle uzyskać z
powodów technologicznych, a pozostałe kolory muszą być definiowane składowymi CMYK z uwzględnieniem wielu czynników jak: biel podłoża, wsiąkliwość farby, czy cechy farb konkretnego producenta, choć na
świecie istnieje kilka standardów.
[http://blulob.com/2009/03/13/the-cmyk-color-wheel]
Histogram.
Histogram to jeden z graficznych sposobów przedstawiania danych
statystycznych. Składa się z szeregu prostokątów umieszczonych na osi współrzędnych.
Prostokąty te są z jednej strony wyznaczone przez przedziały klasowe
(zakresy zmian) wartości cechy, natomiast ich wysokość jest określona przez liczebności (częstości, gęstość elementów wpadających do określonego
przedziału klasowego).
[songho.ca]
Metoda progowa (threshold method)).
Załóżmy, że mamy dany obraz w różnych odcieniach szarości.
Segmentacja przez progowanie polega na określeniu pewnej wartości pro-gowej T (w skali intensywności obrazu), względem której każdy element piksel obrazu jest przydzielany do jednej z dwóch kategorii – obiekt lub tło.
Otrzymujemy funkcję
W zależności od potrzeb obiekt (tło) odpowiadają punktom o wartości 1 lub 0.
Aby operacja progowania miała sens, piksele obiektu muszą mieć inny zakres intensywności niż tło.
T y x f
T y x f dla y dla
x
g
) , (
) , ( 0
) 1 , (
Przykład.
Progowanie lokalne z maską Gaussa.
X
[www.ii.uj.edu.pl/~rakowski/TOM_prezentacja.ppt]
Niekoniecznie musi być dokładnie jeden próg.
Przy progowaniu wielopoziomowym wartości odpowiednich poziomów
progowania są elementami wektora T=[T1, T2,..., Tn]. W jego wyniku obraz podlega segmentacji na n+1 obszarów o różnych intensywnościach, np.
progowanie dwupoziomowe wyznacza trzy takie obszary:
) , (
) , (
) , ( 0
1 0 ) , (
2
2 1
1
y x f
y x f
y x f dla
dla dla y
x g
T T
T T
[aragorn.pb.bialystok.pl/~boldak/DIP/CPO-W07-v01-50pr.pdf]
Progi możemy definiować na różne sposoby.
Mówimy o progu globalnym, gdy wartość progu jest ustalana na podstawie całego obrazu .
Gdy wartość progu zależy od współrzędnych przestrzennych (x,y) obrazu to mówimy, że próg jest ustalany dynamicznie .
Gdy próg zarówno zależy od intensywności obrazu oraz jego pewnej cechy p(x,y), to próg nazywamy lokalnym. Ma to zastosowanie np. gdy obraz jest nierównomiernie oświetlony (wtedy p(x,y) odpowiada średniej jasności
obrazu w danym otoczeniu).
Ten sam algorytm z różnymi progami będzie (zazwyczaj) określał inne obszary.
Jak zatem można określać progi , aby wynik był zgodny z naszymi oczekiwaniami?
1.Ręcznie (interaktywnie).
2.Automatycznie.
Określenie właściwego progu jest skomplikowanym problemem, na którego rozwiązanie może mieć wpływ np. średnia intensywność szukanego obiektu i tła, ich rozmiary itp..
Progowanie z pomocą histogramu.
Często histogram obrazu wykazuje maksima dla częstości o pewnych intensywnościach.
Granice odpowiednich otoczeń tych maksimów mogą służyć za progi.
Duża amplituda wahań histogramu wskazuje na dobrą separowalność pewnych obiektów.
Duża częstotliwość zmian histogramu umożliwia podział obrazu na wiele obiektów.
Przykład.
[aragorn.pb.bialystok.pl/~boldak/DIP/CPO-W07-v01-50pr.pdf]
Automatyczne wyznaczanie progów.
Metoda geometryczna.
1. Wygładzamy histogram, aby pozbyć się ekstremów będących wynikiem szumów.
2. Wyznaczamy lokalne maksima histogramu .
Gdy maksima leżą zbyt blisko siebie możemy je uwspólnić.
3. Wyznaczamy środki dolin między maksimami.
W tym celu wybieramy lokalne minima lub przybliżamy doliny z pomocą krzywych drugiego stopnia.
Gdy znamy funkcję opisującą rozkład intensywności pikseli obrazu, możemy przybliżyć histogram z pomocą rodziny takich funkcji i zastosować
powyższą metodę .
Przykład. Progowanie obrazów barwnych.
Aby lepiej wybrać barwę należy progować wiele kanałów.
Model HSV lepiej się sprawdza od modelu RGB.
[aragorn.pb.bialystok.pl/~boldak/DIP/CPO-W07-v01-50pr.pdf]
W adaptacyjnym progowaniu wieloprzebiegowym w każdym kroku pewne piksele są klasyfikowane na podstawie ich wartości oraz progu obliczonego na podstawie wartości pikseli z pewnego zdefiniowanego otoczenia. Pozostałe, niesklasyfikowane piksele przechodzą do następnego etapu. Algorytm kończy działanie, gdy wszystkie piksele obrazu zostaną sklasyfikowane.
Przykład.
Lokalny próg dla piksela (x,y) może być liczony według wzoru txy = mxy + vxy, gdy vxy > vmin, gdzie m oznacza wartość średnią a v wariancję. Jeśli vxy < vmin, to wartość progu txy jest równa wartości progu dla poprzednio przetwarzanego piksela.
Praktycznym problemem dającym się rozwiązać przy pomocy progowania adaptacyjnego jest sytuacja, w której na szukany obiekt pada intensywny refleks światła, co czyni jego barwę nieregularną z punktu widzenia kamery.
W takim przypadku dobór pojedynczego progu może być niewystarczający.
Przykład.
[http://www.ee.pw.edu.pl/~czajewsw/studenckie/magisterskie/Daniel_Chade.pdf]