Geometrické trasformace
Přednáška 11
Pro geometrické transformace rastrového obrazu se používá mapování
dopředné – prochází se pixely původního rastru a určuje se barva a poloha pixelu ve výsledném rastru
zpětné – pro pixely výsledného rastru se hledají odpovídající pixely v původním rastru
Při dopředném mapování mohou vznikat prázdná místa ve výsledném rastru.
Úpravy rastrového obrazu
Žára, J., Beneš, B., Felkel, P. Moderní počítačová grafika. Computer Press, Brno, 1998. ISBN 80-7226-049-9. Foley, Van D. Computer Graphics. Principles and Practice. Addison-Wesley,1991.
1
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Otáčení
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
2
Příklad vzniku děr v závislosti na úhlu otáčení
Dochází ke změně rozměrů obrázku (v ojedinělých případech zůstává rozměr stejný) Bezproblémové otáčení o násobky 90° Otáčení o libovolný úhel:
při dopředném otáčení vznikají díry, které je potřeba nalézt a určit jejich barvu z vyplněných sousedů
při zpětném mapování se určí ( š ' , v ' ) = f ( š , v, α )
obrysy, pro jednotlivé body nového rastru se hledají polohy v původní rastru (většinou reálná hodnota) vybranou metodou (volba se promítne do kvality) se určí barva výsledného pixel dle sousedů v původním rastru
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
3
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
4
Změna velikosti
Lineární interpolace (bilineární)
x0 < x < x1
výpočet hodnoty f(x), pokud znám f(x0) a f(x1)
bilineární interpolaci získám postupnou aplikací lineární interpolace v obou směrech Lineární interpolace
⎡ x − x0 ⎤ f ( x) = f X 0 + ⎢ ( f X 1 − f X 0 )⎥ ⎣ x1 − x0 ⎦
pix
barva
Princip: převzorkování – převedení diskrétního signálu na spojitý a provedení nového vzorkování Interpolace nejbližším sousedem
novyRozmer = staryRozmer * koefZmeny Pokud je koeficient zvětšení (zmenšení) k celé číslo, potom každý pixel zopakuji k-krát (kreslí se pouze každý k- tý řádek).
Pro reálný poměr se určí nový rozměr a pro každý pixel v novém rozměru určím nejbližšího souseda v původním obrázku.
Interpolace nejbližším sousedem barva
Interpolace
pix
Kubická interpolace
1
Počítačová grafika, PV, UPCE-KID, [2010/2011]
2
3
Přednáška 11
4
pix
5
5
Kubická interpolace
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
6
Přednáška 11
8
Příklady interpolace
Originál Interpolace nejbližším sousedem
Bilineární interpolace
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Kubická interpolace (bikubická)
vytvoření splajnové kubické křivky
výpočet libovolného bodu na křivce
barva
Přednáška 11
7
Počítačová grafika, PV, UPCE-KID, [2010/2011]
(Lineární) interpolace v ploše … 1
2
2.33
3
1
A
2
… x
n
m 1.5 3
2
B
4
Detekce hran
zvetseniX=3, zvetseniY=2
Pixel [7; 3] v novém rastru je mapován do originálního rastru na pozici [2.33; 1.5] m = 0,333; n = 0.5
Barva se určuje z barev pixelů [2; 1], [3; 1], [2; 2], [3; 2]
y
Výpočet lze provádět
Barva1 Barva2 BarvaA
(224, 255, 255) (44, 255, 255) (164, 255, 255)
Barva3 Barva4 BarvaB
(255, 220, 150) (255, 190, 50) (255, 210, 100)
Založena na zjišťování gradientu jasu v obraze. Hrana je charakteristická výraznou změnou jasu. Vyšetřujeme vždy lokální okolí bodu (gradientové metody, náhrada derivací diferencemi) Na daný bod a jeho nejbližší okolí aplikujeme zvolený operátor (masku) a vytváříme gradientový obraz. Pomocí prahování (optimální variační práh) určíme hrany.
postupně (dvě interpolace v řádku a následně z vypočítaných hodnot provést interpolaci ve sloupci) nebo
jediným výpočtem Barva = (1-n)*((1-m)*Barva1 + m*Barva2) + (n)*((1-m)*Barva3 + m*Barva4)
Barva interpolovaného pixelu (210, 232, 177) Přednáška 11
Počítačová grafika, PV, UPCE-KID, [2010/2011]
9
Masky pro určování hran
10
Barevné transformace
⎡− 1 − 1 − 1⎤ L2 = ⎢⎢− 1 8 − 1⎥⎥ ⎢⎣− 1 − 1 − 1⎥⎦
⎡ 0 −1 0 ⎤ L3 = ⎢⎢− 1 4 − 1⎥⎥ ⎢⎣ 0 − 1 0 ⎥⎦
Konvoluční jádro pro Sobelův operátor ⎡1 0 − 1 ⎤ S = ⎢⎢2 0 − 2⎥⎥ ⎢⎣1 0 − 1⎥⎦
Přednáška 11
Konvoluční jádra pro Laplaceovy operátory ⎡ 1 −2 1 ⎤ L1 = ⎢⎢− 2 4 − 2⎥⎥ ⎢⎣ 1 − 2 1 ⎥⎦
Počítačová grafika, PV, UPCE-KID, [2010/2011]
2 1⎤ ⎡1 Sx = ⎢⎢ 0 0 0 ⎥⎥ ⎢⎣− 1 − 2 − 1⎥⎦
⎡1 0 − 1 ⎤ Sy = ⎢⎢2 0 − 2⎥⎥ ⎢⎣1 0 − 1⎥⎦
S = Sx + S y 2
2
Robertsův operátor
∇f (i, j ) = f (i, j ) − f (i + 1, j + 1) + f (i, j + 1) − f (i + 1, j )
Důsledná kontrola výsledné hodnoty daného kanálu: interval 〈0, 1〉 nebo 〈0, 255〉
Ostření na základě velikosti gradientu: g (i, j ) = f (i, j ) + c.s(i, j ) kde s(i,j) je funkce určující velikost gradientu a c je ostřící koeficient. Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
Model RGB – zjištění složek Odfiltrování barevné složky: nastavení hodnoty dané složky na 0 pro všechny pixely Úprava barevné složky: vynásobení hodnoty dané složky zadaným koeficientem Zesvětlení (ztmavení): odpovídá úpravě všech složek za použití stejného koeficientu Úprava kontrastu (algoritmus – samostudium)
11
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
12
Upozornění! Grafické knihovny některých vývojových nástrojů skládají RGB kanály opačně (např. Delphi)
Barevné složky RGB (Java)
Color c = new Color (255, 0, 128);
TColor
BBBBBBBB GGGGGGGG RRRRRRRR 31.........24
int
int r = c.getRed(); int g = c.getGreen(); int b = c.getBlue();
String rgb = Integer.toHexString(c.getRGB()); rgb = rgb.substring(2, rgb.length());
G := (Color and $FF00) shr 8; // G:= (Color shr 8) and $FF; // G:= (byte) (Color shr 8); B := (Color and $FF0000) shr 16; // B:= (Color shr 16) and $FF; // B:= (byte)(Color shr 16);
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB 7 .......... 0
Počítačová grafika, PV, UPCE-KID, [2010/2011]
GetRValue (Color : TColor), GetBValue (Color : TColor), GetGValue (Color : TColor) RGB (R : byte, G: byte, B : byte) Color : TColor; R, G, B : byte;
R := (Color and $FF); // R:= (byte) Color;
// v hexa AARRGGB // AA standardně nastaveno na 0xFF r = (i & 0xFF0000) >> 16; g = (i & 0xFF00) >> 8; b = i & 0xFF;
23 ......... 16 15 .......... 8
7 .......... 0
Color := B shl 16 + G shl 8 + R;
int i = c.getRGB();
31.........24
23 ......... 16 15 .......... 8
Přednáška 11
13
Úprava jasu
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
14
Přednáška 11
16
Kontrast 255
Při chybné úpravě jasu se mění odstín Snížení kontrastu 127
Zvýšení kontrastu Větší zvýšení kontrastu
0
0
Při správné úpravě jasu se odstín nemění
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
15
127
Počítačová grafika, PV, UPCE-KID, [2010/2011]
255
Černý a bílý bod
Histogram
255
127
Černý bod
0 0
127
Bílý bod
255
Určuje četnost pixelů s jednotlivými hodnotami jasu U obrazů s odstíny šedé má jeden rozměr, u barevných obrazů 3 rozměry Úpravou histogramu lze měnit vzhled obrazu Využívá se při GAMA korekci Mezi používané funkce patří
prahování
zrovnoměrnění
Přednáška 11
Počítačová grafika, PV, UPCE-KID, [2010/2011]
17
Odstranění šumu
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
18
Vytváření embosovaného vzoru
Odstranění šumu většinou způsobí rozostření obrázku Filtrační metoda ⎡1 / 4 1 / 4⎤
zprůměrování m=⎢ ⎥ ⎣1 / 4 1 / 4⎦
vážený průměr
medián – nahrazení hodnoty pixelu mediánem (střední hodnotou) z okolních pixelů
Počítačová grafika, PV, UPCE-KID, [2010/2011]
roztažení
Principem je složení originálu a negativu posunutého v určeném směru o určený počet pixelů.
Postup:
vytvoření negativu
posunutí
sečtení
dělení 2
Příklad pro posunutí vpravo nahoru o 2 pixely: B[i,j]=(A[i,j] + (1 - A[i+2,j-2])) / 2
⎡1 / 16 2 / 16 1 / 16 ⎤ m = ⎢⎢2 / 16 4 / 16 2 / 16⎥⎥ ⎢⎣1 / 16 2 / 16 1 / 16 ⎥⎦
Přednáška 11
19
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
20
Převod na odstíny šedé
Snížení barevného rozsahu
Nejjednodušší způsob redukce barev v obraze Realizuje se postupným přepočtem jasu všech pixelů
Nejpoužívanější metody:
půltónování – nahrazení vícebarevného pixelu několika pixely s omezenou barevností
rozptylování – rozlišení zůstává zachováno náhodné rozptylování maticové rozptylování rozptylování s distribucí chyby
Lidské oko je různě citlivé na jednotlivé barvy (nejvíce na zelenou)
Přednáška 11
21
Negativ a inverze barev
Využití:
při přípravě k tisku na méně barevných zařízeních
snížení paměťové náročnosti
nutnost při ukládání do určitých formátů
Jeden z doporučených vztahů: jas = 0,299*r + 0,587*g + 0,114*b
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
22
Separace barev
Negativní obraz: pro všechny pixely upravíme intenzity barevných kanálů odečtením stávající intenzity od plné hodnoty r =1-r r = (255 - r) g=1-g g = (255 - g) b=1-b b = (255 - b)
Využití především u modelu CMY (CMYK) Pro tisk na vícebarevných strojích Vytvoření tří (čtyř) obrazů v šedých odstínech, představující úroveň jednotlivých barevných kanálů Pro R: r = r, g = r, b = r
Inverze barev:
uspořádání použitých barev (nebo barev palety) podle jasu
vzájemná výměna dvojic barev
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
23
Počítačová grafika, PV, UPCE-KID, [2010/2011]
Přednáška 11
24