1 / 84

Kapitel 10: Farbbilder

Kapitel 10: Farbbilder. RGB-Farbbilder Farbräume und Farbkonversion Colorimetrische Farbräume Statistiken von Farbbildern Farbquantisierung. 1 RGB-Farbbilder. Schwerpunkte dieses Kapitels: Programmtechnische Behandlung von Farbbildern

Download Presentation

Kapitel 10: Farbbilder

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Kapitel 10: Farbbilder • RGB-Farbbilder • Farbräume und Farbkonversion • Colorimetrische Farbräume • Statistiken von Farbbildern • Farbquantisierung BV: Kap 10: Farbbilder

  2. 1 RGB-Farbbilder • Schwerpunkte dieses Kapitels: • Programmtechnische Behandlung von Farbbildern • Umwandlung zwischen unterschiedlichen Farbdarstellungen • RGB-Farbschema • Basiert auf Kombination der Primärfarben Rot (R), Grün (G) und Blau (B) • Standardformat für Computer, Digitalkameras, Scanner, Bildbearbeitungsprogramme, … • Additives Farbsystem: ausgehend von schwarz weitere Farben hinzufügen • Intensität der Farbkomponenten bestimmt Ton und Helligkeit der resultierenden Farbe • Auch grau und weiß sind Mischfarben BV: Kap 10: Farbbilder

  3. RGB-Farbraum BV: Kap 10: Farbbilder

  4. RGB-Farbraum • Dreidimensionaler Würfel • Koordinatenachsen: Primärfarben R,G und B • RGB-Werte: positiv, meist [0,255] • Mögliche Farben entsprechen Punkten im Würfel • Häufig: Normalisierung auf Intervall [0,1] • Schwarz: S = (0,0,0) • Weiß: W = (1,1,1) • Grautöne (nicht-bunt): • Gerade zwischen S und W • R = G = B BV: Kap 10: Farbbilder

  5. Farbbild mit RGB-Komponenten als Grauwertbild Früchte - Großteils rot u. gelb - Geringer B-Anteil Tischdecke: - Hoher B-Anteil BV: Kap 10: Farbbilder

  6. 1.1 Aufbau von Farbbildern • Darstellung: Array von Pixel • Alternativen • Vollfarbenbilder: gleichförmig gesamter Farbraum • Indexbilder: beschränkte Anzahl von Farben • Vollfarbenbilder • Jeder beliebige Farbwert • Einsatz: viele, unterschiedliche Farben, z.B. Foto • Mögliche Anordnung • Komponentenanordnung: Array pro Primärfarbe • Gepackte Anordnung: Primärfarben in gemeinsamen Pixel BV: Kap 10: Farbbilder

  7. Komponentenanordnung BV: Kap 10: Farbbilder

  8. Gepackte Anordnung BV: Kap 10: Farbbilder

  9. Indexbilder • Beschränkte Anzahl unterschiedlicher Farben • Einsatz: Illustrationen, Grafiken, … • Format: GIF, PNG • Pixel-Array: Indizes auf Farbtabelle • Farbtabelle im Bild gespeichert BV: Kap 10: Farbbilder

  10. RGB-Indexbild BV: Kap 10: Farbbilder

  11. 1.2 Farbbilder in ImageJ • Zwei alternative Darstellungen • RGB-Vollfarbenbilder (RGB Color) • Indexbilder (8-bit Color) • RGB-Vollfarbenbilder • Gepackte Anordnung • Pro Farbpixel 32 Bit • Je 8 für Transparenz, R, G, B • ImageJ verwendet Transparenz nicht BV: Kap 10: Farbbilder

  12. Zugriff auf Pixelwerte • Pixel laden int c = ip.getPixel(u,v) int r = (c & 0xff0000) >> 16 // rot int g = (c & 0xff00) >> 8 // grün int b = (c & 0xff) // blau • Pixel speichern int r = 169; int g = 212; int b = 17; int c = ((r & 0xff)<<16) | ((g & 0xff)<<8) | b & 0xff); • Zugriff sehr effizient BV: Kap 10: Farbbilder

  13. ImageJ-Alternative int[] RGB = new int[3] RGB = ip.getPixel(u,v,RGB); int r = RGB[0]; int g = RGB[1]; int b = RGB[2]; … ip.putPixel(u,v,RGB); • Zugriff sehr langsam BV: Kap 10: Farbbilder

  14. Bitoperationen auf RGB-Bild getPixels() liefert Referenz auf Pixel-Array, d.h. nur eine for-Schleife BV: Kap 10: Farbbilder

  15. ImageJ-Operationen auf RGB-Bild BV: Kap 10: Farbbilder

  16. ImageJ-Vollfarbenbildern • Unterstützte Arten von Bilddateien • TIFF (nur unkomprimiert): 3x8-Bit-RGB • BMP, JPEG: 3x8-Bit-RGB • PNG (nur lesen): 3x8-Bit-RGB • RAW: File->Import->Raw eigene Formate • Erzeugen von RGB-Bildern int w = 640, h = 480; ColorProcessor cProc = new ColorProcessor(w,h); ImagePlus cWin = ImagePlus("Farbbild",cProc); cWin.show(); BV: Kap 10: Farbbilder

  17. Indexbilder • Struktur entsprechend Folie 10 • Index-Array 8 Bits groß • d.h. 256 unterschiedliche Farben • Unterstützte Arten von Bilddateien • GIF: 3x8-Bit-Farbwerte • PNG (nur lesen): 3x8-Bit-Farbwerte • BMP, TIFF (nur unkomprimiert): 3x8-Bit-Farbwerte • Verarbeitung von Indexbildern • Verarbeitung auf Farbtabelle, z.B. Intensität erhöhen • Keine Verarbeitung auf Pixel-Array • Anwendung von Filtern erfordert Konvertierung in Vollfarbenbild BV: Kap 10: Farbbilder

  18. Intensität in Farbtabelle erhöhen BV: Kap 10: Farbbilder

  19. Indexbild -> Vollfarbenbild BV: Kap 10: Farbbilder

  20. Erzeugen von Indexbildern ByteProcessor makeIndexColorImage( int w, int h, int nColors){ byte[] rMap = new byte[nColors]; byte[] gMap = new byte[nColors]; byte[] bMap = new byte[nColors]; byte[] pixels = new byte[w * h]; IndexColorModel cM = new IndexColorModell(8,nColors,rMap,gMap,bMap); return new ByteProcessor(w,h,pixels,cM); } BV: Kap 10: Farbbilder

  21. Konvertieren von Farbbildern in ImageJ:Konvertieren mittels ImageKonverter BV: Kap 10: Farbbilder

  22. Duplizieren mittels TypeConverter BV: Kap 10: Farbbilder

  23. Anwendung ImageConverter und TypeConverter • Anwendung ImageConverter ImagePlus ipl; ImageConverter ic = new ImageConverter(ipl) ic.convertToRGB(); // ipl ist jetzt Farbbild • Anwendung TypeConverter ImageProcessor ipr1; TypeConverter tc = new TypeConverter(ipr1,false); ImageProcessor ipr2 = tc.convertToRGB(); // ipr1 bleibt unverändert BV: Kap 10: Farbbilder

  24. 2 Farbräume und Farbkonversion • RGB einfache Darstellung auf Computer • Entspricht jedoch nicht der subjektiven Wahrnehmung • Verschiebung von Farbpunkten führt abhängig vom Ausgangspunkt subjektiv zu unterschiedlichen Farbänderungen • Bei jeder Koordinatenänderung ändern sich Farbton, Sättigung und Helligkeit gleichzeitig • Alternative Farbräume, z.B. HSV, stellen subjektive Farbeigenschaften explizit dar • Spezielle Farbräume auch im Druck und der TV-Übertragung BV: Kap 10: Farbbilder

  25. Verschiedene Farbräume Landschaftsbild mit hohem Grün-/Blau-Anteil Sonnenflecken mit hohem Rot-/Gelb-Anteil BV: Kap 10: Farbbilder

  26. 2.1 Umwandlung RGB in Grauwertbilder • Einfachster Fall: Durchschnitt von RGB • Subjektiv: Helligkeit von Rot oder Grün höher als Blau • Luminanz: gewichtete Summe • Gewichte: • Analoges TV: • Digitale Kodierung: BV: Kap 10: Farbbilder

  27. Unbunte Farbbilder • RGB-Bild ist unbunt, wenn für alle I(u,v): R = G = B • Farbe aus RGB-Bild entfernen: gewichtete Grauwerte setzen • Resultierendes Grauwertbild hat subjektiv die gleiche Helligkeit BV: Kap 10: Farbbilder

  28. 2.2 Desaturierung von Farbbildern • Grundlegende Eigenschaften von Farbe: Farbton, Farbsättigung und Helligkeit • Saturation: Farbsättigung, d.h. Ausmaß, in dem sich farbiger Reiz von einem gleich hellen Grau unterscheidet • Desaturierung (kontinuierliche Änderung) des Farbanteils durch lineare Interpolation • Faktor scolЄ [0,1] steuert Farbigkeit • scol = 0: Grauwertbild • scol = 1: unverändertes Farbbild BV: Kap 10: Farbbilder

  29. Desaturierung im RGB-Raum BV: Kap 10: Farbbilder

  30. BV: Kap 10: Farbbilder

  31. 2.3 HSV / HSB- und HLS-Farbraum HSV-Farbraum • H: Hue (englisch) , d.h. Farbton • S: Saturation, d.h. Farbsättigung • V: Value, d.h. Helligkeit • Alternative Bezeichnung: HSB (Brightness) • Darstellung: umgekehrte sechseckige Pyramide • Vertikale Achse: V-Wert • Horizontaler Abstand: S-Wert • Drehwinkel: H-Wert • Schwarz: untere Spitze der Pyramide • Weiß: Zentrum der Basisfläche • Ecken: • Drei Primärfarben: Rot, Grün, Blau • Drei Mischfarben: Gelb, Cyan, Magenta • Alternative Darstellung: zylindrischer Raum BV: Kap 10: Farbbilder

  32. HSV- und HLS-Farbraum BV: Kap 10: Farbbilder

  33. HLS-Farbraum HLS • H: Hue • L: Luminance • S: Saturation • Vergleich HSV: • H identisch • L und S: entsprechen V und S, aber anders berechnet • Darstellung: Doppelpyramide • Schwarz, Weiß: an den Spitzen • Grundfarben: an den Ecken • Alternative Darstellung: zylindrischer Raum • Weiter Details [Burger2005] S.258 – S.262 BV: Kap 10: Farbbilder

  34. Zylindrischer HLS-Farbraum BV: Kap 10: Farbbilder

  35. Konvertierung RGB -> HSV • RGB Є [0..Cmax], typisch: Cmax = 255 • Chigh = max(R,G,B) • Clow = min(R,G,B) • Crng = Chigh – Clow • Sättigung S: • Helligkeit V: BV: Kap 10: Farbbilder

  36. Berechnung H • R=G=B: Crng = 0, SHSV= 0 -> HHSV ist unbestimmt • Crng > 0: Berechnung der Farbkomponenten • Berechnung des Farbtons im Intervall [-1 ..5] • Normierung auf das Intervall [0,1] BV: Kap 10: Farbbilder

  37. Beispiel: Magenta • (R,G,B) = (255,0,255) • Chigh = 255; Clow = 0; Crgn = 255 • S = 255/255 = 1 • V = 255/255 = 1 • R‘ = (255-255)/255 = 0 • G‘ = (255-0)/255 = 1 • B‘ = (255-255)/255 = 0 • H‘ = B‘ – G‘ = 0 – 1 = -1 • H = 1/6 * (-1 + 6) = 5/6 BV: Kap 10: Farbbilder

  38. Zylindrischer HSV-Farbraum BV: Kap 10: Farbbilder

  39. Farbbild mit RGB und HSV als Grauwertbild • Dunkle Bereiche in HHSV: • Rot (0) und gelb (1/6) • Hohe Sättigung • Mittlere Helligkeit BV: Kap 10: Farbbilder

  40. Java-Implementierung • Klasse java.awt.Color: float[] RGBtoHSB(int r,int g,int b,float[] hsv); • Nutzung import java.awt.Color; … float[] hsv = new float[3]; int red = 128; green = 255; blue = 0; hsv = Color.RGBtoHSB(red,green,blue,hsv); float h = hsv[0]; float s = hsv[1]; float v = hsv[2]; … BV: Kap 10: Farbbilder

  41. HSV -> RGB • Farbsektor ermitteln [0,1] -> [0,6[ • Zwischenwerte ermitteln (Ganzzahl, Nachkomma) • v = VHSV • Normalisierte RGB-Werte ermitteln BV: Kap 10: Farbbilder

  42. HSV -> RGB • Skalierung auf ganzzahligen Bereich • Java-Implementierung der Klasse java.awt.Color int HSBtoRGB(float h, float s, float v); BV: Kap 10: Farbbilder

  43. Beispiel: Magenta • (H,S,V) = (5/6,1,1) • H‘ = 5,0 • c1 = 5; c2 = 0 • x = (1 – 1) * 1 = 0 • y = (1 – (1 * 0)) * 1 = 1 • z = (1 – (1 * (1 – 0)) * 1 = 0 • (R‘,G‘,B‘) = (1,0,1) • (R,G,B) = (255,0,255) BV: Kap 10: Farbbilder

  44. Java-Implementierung BV: Kap 10: Farbbilder

  45. 2.4 TV-Komponentenfarbräume – YUV und YCbCr • Standarisierte Aufnahme, Übertragung und Wiedergabe im TV-Bereich • YUV: analoges NTSC und PAL-System • YCbCr : digitales Fernsehen • Gemeinsam: Luminenz Y und zwei Chroma-Komponenten (Farbdifferenzen) • Ziele • Kompatibilität mit Schwarz-/Weiß-Systemen • Optimale Ausnutzung von Übertragungskanälen • Schärfe der Farben weniger relevant als Schärfe der Helligkeit • Farben benötigen ¼ der Helligkeit-Bandbreite • Auch bei Kompression genutzt: JPEG BV: Kap 10: Farbbilder

  46. YUV • Berechnung der Luminanz anhand der bereits gamma-korrigierten RGB-Werte • Berechnung der Farbdifferenzen U und V BV: Kap 10: Farbbilder

  47. Resultierende Matrix-Transformationen • RGB -> YUV • YUV -> RGB BV: Kap 10: Farbbilder

  48. YCbCr • Unterschied zu YUV: Zusammenhang zwischen Gewichtung der RGB-Komponenten und Chroma-Werte • ITU-Empfehlung: wR = 0.299 wG = 0.587 wB = 0.114 • Transformation RGB -> YCbCr : BV: Kap 10: Farbbilder

  49. YCbCr • Transformation YCbCr -> RGB : BV: Kap 10: Farbbilder

  50. Resultierende Matrix-Transformation • RGB -> YCbCr • YCbCr -> RGB BV: Kap 10: Farbbilder

More Related