44
Vorlesung Grundlagen Videotechnik Psycho-Optik -Geschichte: verschiedene Abstraktionsstufen - Abbildung 3-D auf 2-D - erste Zeichnungen, Höhlenbilder - Zerlegung in Bildpunkte: Photozellen, parallele Übertragung - Zerlegung in zeitlich aufeinander folgende Bildpunkte (Abtastung), oder Bilder für Bewegtbilder (S-W Fernsehen)

Vorlesung Grundlagen Videotechnik Psycho-Optik · Vorlesung Grundlagen Videotechnik Psycho-Optik-Geschichte: verschiedene Abstraktionsstufen - Abbildung 3-D auf 2-D - erste Zeichnungen,

  • Upload
    lamdien

  • View
    230

  • Download
    1

Embed Size (px)

Citation preview

Vorlesung Grundlagen VideotechnikPsycho-Optik

-Geschichte: verschiedene Abstraktionsstufen

- Abbildung 3-D auf 2-D- erste Zeichnungen, Höhlenbilder

- Zerlegung in Bildpunkte: Photozellen, parallele Übertragung- Zerlegung in zeitlich aufeinander folgende Bildpunkte (Abtastung), oder Bilder für Bewegtbilder (S-W Fernsehen)

Psycho-Physik

3-D 3-D

Reale Welt Annahme des Gehirns: 3-Dimensionale Welt!

Modell der Welt

Aber Auge:

Retina Oberfläche (2-Dim), Gehirn rechnet auf 3 Dimensionen zurück

Aus:http://de.wikipedia.org/wiki/Auge

Projektionsmatrix

Lochkamera-Prinzip

Abbildung von den 3-D Koordinaten des Objekts zu den 2-D Koordinaten in der Bildebene erfolgt mittels einer Projektionsmatrix P.

AbbildLochLoch3D-Objekt/Szene

Man verwendet sog. Homogenen Koordinaten, wo eine zusätzliche Koordinate w für die Beschreibung einer Translation (Verschiebung) verwendet wird:

[xyw ]=[

p11 p12 p13 p14p21 .. .. ..p31 .. .. p34

]⋅[XYZW

]⇒ x=P⋅XHier ist P die Projektionsmatrix der Kamera, X sind die 3D

Welt-Koordinaten und x die Koordinaten auf der Bildebene der

Kamera.

Beachte: x , y ,w und x /w , y /w ,1 beschreiben den gleichen

Punkt. (sh. auch http://de.wikipedia.org/wiki/Projektionsmatrix)

Beispiel fuer eine Projektion auf die X,Y Ebene (bei Z=1):

[xyw ]=[

1 0 0 00 1 0 00 0 1 0]⋅[

XYZW

]Die Projektion auf die Bildebene ist hier also: [x , y]=[X ,Y ]/Z

(siehe obige Gleichung fuer gleiche Punkte)

Dies stellt eine mögliche Kamera-Projektion dar.

Durch die Normalisierung auf Z=1 nehmen wir eine Projektion auf die Bildebene bei Z=1 vor.

x

z

z=1

z=0

Aus: http://www.mathe.tu-freiberg.de/~hebisch/cafe/mce/galerie/wasserfall.html

Informationsverlustdurch Projektion von3-D auf 2-D.Beispiel: OptischeTäuschungen.

Aus: www.ee.siue.edu/~sumbaug/CVIPbook_PPLec/Chapter7.ppt

Zerlegung in Bildpunkte

hier wichtig: Gehirn erkennt teils verdeckte Objekte, also auch verdeckt vom Gitter des Punktrasters

- Auge selber nimmt Bilder mit einzelnen Sehzellen wahr,und setzt daraus Bild zusammen.

Wie sehen Sehzellen aus, wie viele und welche Formen gibt es?

Aus: http://www.uni-uebingen.de/uni/pki/skripten/V8_2_4Auge.doc

-2 Typen von Photorezeptoren: Stäbchen und Zapfen: -Stäbchen: ca. 120 Mio. Stäbchen, Hell-Dunkel-Sehen (skotopisches Sehen). -Zapfen: ca. 6 Mio. Zapfen, im sogen. gelben Fleck (macula lutea) konzentriert, Farbsehen bei Tageslicht (photopisches Sehen)

Unterschied der Anzahl wichtig für Übertragung und Kompression.

Aus: http://de.wikipedia.org/wiki/Photorezeptor

Aus: http://www-itiv.etec.uni-karlsruhe.de/opencms/de/research/workgroups/MST_Optik/ophthalmo/IOL_Test/imaging_quality.html

± 1 grad: größte Konzentration

BlinderFleck

Farbe

Aus: J.Lim: „2-Dimensional Signal and Image Processing“

Luminanz, „Luminosity Function“, Helligkeitsempfndung des Auges:

11000

  mm

Spektrale Hellempfindung

Wellenlängen der Grundfarben von Kamera und Monitor

etwas unter

10−3=mi l l i=   11000

10−6  =mi k r o= 1

1000   000 

10−9=nan o=  11000   000   000

Spektrale Empfndlichkeit der Zapfen der Retina

Aus: Video Processing and Communications, Yao Wang, Jörn Ostermann, and Ya-Qin Zhang, Prentice Hall,2002 ISBN 0-13-017547-1

Fuer die unterschiedlichen Grundfrarben probiere auchnochmal:

Überhöhung

Luminanz

Summe der Beiträge der3 Zapfentypen

python videorecdispRGBkey.py

Beachte: An der „Luminosity Function“ sehen wir quantitativ die unterschiedliche Empfndlichkeit des Auges fuer unterschiedliche Wellenlaengen des Lichts. Kameras und Monitore haben ihre Zentren ihrer Durchlassbereiche der Grundfarben-Farbflter bzw. der Grundfarben Farbstofe der Monitore an den gekennzeichneten Stellen des vorherigen Bildes.Dort koennen wir die zugehoerige Emfndlichkeit des Auges ablesen.

Hinzu kommt, dass Monitore und auch Kameras eine nicht-lineare Leucht- oder Emfpindlichkeits-Kennline haben, die etwas exponentiell verlaeuft (langsamer Leuchtanstieg bei geringer Ansteuerung, schneller Anstieg bei staerkerer Ansteuerung).

Die Kombination von Augenempfndlichkeit bei den Grundfaben und der nicht-Linearitaet der Monitore ergibt die Faktoren fuer dieLuminaz-Komponente des Bildes Y, die einfach als Schwarz/WeissVersion des Farb-Bildes angesehen werden kann (unsere virtuellen Staebchen):

Y :=0.299R+0.587G+0.114B

Farbtransformationen: YUV

Um die unterschiedliche Empfndlichkeiten des Auges für Helligkeit (Luminanz) und Farbe (Chrominanz) zu nutzen, führt man nach der Kameraaufnahme Farbtransformationen durch. Diegebräuchlichste ist YUV. Sie ist defniert durch die erwaehnte Luminanz-Komponente:

Y :=0.299R+0.587G+0.114B

Fuer eine gute Trennung von Luminanz und Farbe brauchen wir Farb-Komponenten, die moeglichst zu Null werden wenn Pixel

unbunt sind, also nur schwarz, weiss oder grau sind. Dies war imanalogen TV auch das urspruengliche Ziel, um moeglichst geringe Stoerungen in S/W Fernsehern zu verursachen. Diese Eigenschaft erhaelt man mit den folgenden Farbkomponenten, die wir U und V nennen. Farbkomponenten nennen wir auch „Chrominanz“.

U=B−Y

V=R−Y

Durch diese Defnition erhalten wir zwar keine perfekte Trennung der Helligkeits- und Farbinformation, aber in der Praxis ist es ausreichend.

Im Decoder laesst sich diese Transformation leicht entsprechend umkehren, durch:

B=U+Y

R=V +Y

G=(Y−0.299R−0.114B)/0.587

In Matrix-Schreibweise koennen wir diese 3 neuen Komponenten aus den 3 Grundfarb-Komponenten einfach durch eine Matrix-Multiplikation erhalten. Die Koefzienten der Matrix fuer U und V ergeben sich einfach durch ausschreiben der Komponente Y:

[YUV ]=[

0.299 0.587 0.114−0.299 −0.587 0.8860.701 −0.587 −0.114]⋅∣

RGB∣

Durch die geringere Anzahl der farbempfndlichen Zapfen im Auge koennen nun die Farbkomponenten mit einer geringeren Bandbreite oder Bitrate uebertragen werden.

Z.B. im analogen TV haben U und V Bandbreiten von ca. 1.3 MHz (in PAL), und Y ca. 5 MHz.

Beachte: Im Empfaenger oder Decoder kann diese Farb-Transformation auch umgekehrt werden durch Anwendung der inversen Matrix. Dadurch wird die RGB Darstellung zurueck gewonnen, zur Darstellung auf einem Bildschirm.

Python Beispiel

Das folgende Python Beispiel zeigt die YUV Farbtransformation. Im ersten Fenster ist das Original live Video zu sehen, und in den weiteren die Komponenten YUV.

Beachte: Wenn ein unbuntes Objekt oder Papier vor die Kamera gehalten werden, werden die Videos der U und V Komponenten schwarz, weil deren Pixel zu Null werden.

Aufruf mit:

python videorecprocyuv.py

Hierin werden die Y,U,V komponenten berechnet mit den Zeilen:

Y=(0.114*frame[:,:,0]+0.587*frame[:,:,1]+0.299*frame[:,:,2])/255;

#U=B-Y:

U=frame[:,:,0]/255.0-Y;

#V=R-Y:

V=frame[:,:,2]/255.0-Y;

Beachte: Die benoetigten Multiplikationen und Additionen funktionieren Problemlos mit den ganzen Frames (ohne „for“

Schleifen!). Die Multiplikation eines Wertes mit einer Matrix bzw. einem Array bedeutet dabei die Multiplikation von jedem derer Elemente mit dem Wert.

Python Beispiel zu Farb-Encoder und Decoder:

python videorecencdecyuvkey.py

Hier sieht man die ganze Encoder/Decoder Strecke, und man kann sehen was passiert wenn man einzelne Komponenten ein- und ausschaltet.

Beachte: Wenn wir die Y-Komponente ausschalten und ersetzen durch einen konstanten Wert fuer die Luminanz, erhalten wir ein Video, was zwar die gleiche Ortsaufoesung hat, aber deutlich unschaerfer erscheint, weil das Auge deutlich weniger Farb-empfndliche Zapfen als Hell-empfndliche

Staebchen hat. Daher koennen wir die Farb-Komponenten mit geringerer Ortsaufoesung (weniger Pixeln) uebertragen, ohne dass das Auge es wahrnimmt.

Zum Vergleich: Ein/Ausschalten der original RGB Komponenten mit dem Python Programm

python videorecdispRGBkey.py

Beachte: Selbst wenn wir nur einzelne Fabkomponenten R.G, oder B betrachten, nehmen wir das Video scharf in voller Ortsaufloesung wahr, weil jede dieser Farbkomponenten auch unterschiedliche Helligkeitsverlaeufe hat.

Aus diesem Grund wird die Transformation nach YUV (oder YIQ) vorgenommen.

YIQ

Eine alternative Farbtransformation ist YIQ. Sie ist sogar noch efektiver in der Reduktion der Bandbreiten fuer die Farbkomponenten, war aber in analoger Elektronik schwerer zu realisieren (nur als Matrix berechenbar, nicht durch simple Diferenzen wie bei YUV). Daher wird hauptsächlich im ersten Farbfernsensystem verwendet, im NTSC Farbfernsehsystem (analog).

Die Transformation ist:

[YIQ]=[

0,299 0,587 0,1140.595 −0,274 −0,3210,211 −0,522 0,311 ]⋅[

RGB ]

In beiden Transformationen sehen wir: Wenn R=G=B, dann ist V=U=0 und I=Q=0.

Beachte auch: U,V und I,Q koennen negativ werden!

(Aus:https://en.wikipedia.org/wiki/YIQ)

Beim NTSC Verfahren:YIQ.: Farbram um ca. 30° gedreht, gegenüber YUV.

I: Bereich orange-blauQ: Bereich lila-grün

Auge ist im I-Bereichempfndlicher.

QI

300

V

U

U-V Farbraum

I: 1,3 MHz Bandbreite (ca. 14 Video-Bandbreite)

Q: 0,5 MHz Bandbreite (ca. 110 Video-Bandbreite)

Python Beispiel fuer vorwaerts- und rueckwaerts-Fabrtransformation mit ein/ausschalten einzelner Komponenten:

python videorecencdecyiqkey.py

Beachte: Die I und Q komponenten sehen tatsaechlich entsprechend unterschiedlich von den U und V Komponenten aus.

YCbCr

YcrCb ist eine Farbtransformation die in digitalen Systemen verwendet wird, ueblicherweise mit 8bit Aufoesung pro Komponente. Sie beinhaltet eine Normalisierung und eine

Verschiebung, so dass die Werte aller Komponenten zwischen 0 und 255 liegen (also auch nicht mehr negativ sind).

Aus YUV ergibt sich so die Farbtransformation

[Y 'CbCr ]=[

0128128]+[

0.299 0.587 0.114−0.168736 −0.331264 0.5

0.5 −0.418688 −0.081312]⋅|R'G 'B'|

Y',R',G',B' haben den „'“, weil sie nun auch nur Werte zwischen 0 und 255 haben.

Farbunterabtastung der Pixel in digitalen Systemen

Y'CbCr 4:4:4 Y'CbCr 4:2:2

Y'CbCr 4:2:0 Y'CbCr 4:2:0 MPEG-2-Abtastpositionen

Weiss: Luminanz-Komponente

Grau: Chrominanz-Komponenten

(aus: http://de.wikipedia.org/wiki/Farbunterabtastung)

Beachte: Bei 4:2:0 wird fuer die Farbkomponenten nur jedes 2. Pixel horizontal und vertikal uebertragen.

Auf diese Weise benoetigt eine Farbkomponente ¼ der Pixelzahl wie die Y-Komponente. Die beiden Farbkomponenten zusammen benoetigen daher nur ½ der Pixelzahl der Y-Komponente.

Ein Fabrbild kann so mit der 1,5 fachen Bitrate wie die reine Y-Komponente uebertragen werden. Im Vergleich zur urspruenglichen RGB Darstellung, welche 3 mal so viele Bits wie die Y-Komponente benoetigt, ist dies eine Einsparung um den Faktor 2, ohne sichtbaren Qualitaetsverlust!

Farbmischung

Die Farbe eines Pixels wird bestimmt vom Verhaeltnis der Intensitaeten seiner Grundfarben.

Python Beispiele:

python imagecolordisp.py

Mit Tastatur-Steuerung der Intensitaeten der Grundfarben:

colormix.py

Beachte: Wenn wir alle 3 Farbkomponenten R,G,B mit dem gleichen Faktor multiplizieren, aendert sich nur die Helligkeit abernicht die Farbe!

Wenn uns also nur die Farbe interessiert, koennen wir eine beliebige Festlegung fuer die Helligkeit waehlen, z.B.:

R+G+B=Konstant

(äquivalent zum Festsetzen der Luminanz Y auf einen gegeben Wert)

Frage: Wenn wir eine bestimmte Farbe haben moechten, wie bekommen wir das dazugehoerige Verhaeltnis der Grundfarben zueinander? z.B. auf Webseiten, in HTML, werden Farben als 6-Stellige Hexadezimalzahl angegeben (da jede Grundfarbe mit 8 bit dargestellt wird und 1 Hexadezimalstelle 4 bit sind), z.B.: "#AAFFCC", im Format RGB.

Oder: Wenn wir die Grundfarben eines Monitors oder Kamera kennen, wie bestimmen wir dessen Farbraum?

Hierfuer konstruieren wir einen Farbraum, dessen Achsen die Hypotetischen Outputs der Roten (x) und Gruenen (y) Zapfen sind. Diese sind normalisiert auf den Bereich von 0 bis 1.

Der Output der hypotetischen Blauen Zapfen (z) ergibt sich aus konstanten Summe eins:

x+y+z=1

Damit ergibt sich die sogenannte „CIE-Normfarbtafel“.

CIE-Normfarbtafel

Aus: http://www.led-info.de/grundlagen/farbe/cie-farbtafel.html

Farbtemperatur:

Farbe (glühend) einesschwarzen Körpers(Black-Body) bei dergegebenen Temperatur.

- Glühbirnen: Temperaturetwa 1000-2000K ander Glühwendel-> entsprechende Farbtemperatur

- Sonnenlicht:Farbtemperatur etwa6000K, entspricht etwa Temperatur an Sonnenoberfäche.

Farbmischung mit Normfarbtafel

Um 2 Farben in diesem Farbraum zu mischen, multiplizieren wir ihre Koordinaten mit Faktoren, die zwischen 0 und 1 sind und in der Summe 1 ergeben:

Farbe1=(x1,y1)

Farbe2=(x2,y2)

Mischfarbe=a*Farbe1+b*Farbe2

mit a+b=1, a>=0, b>=0.

Die Summe a+b muss 1 sein, damit die Mischfarbe wieder x+y+z=1 fuer ihre Komponenten als Normierung fuer die Helligkeit erfuellt.

Python Beispiel:

imagecolormixdisp.py

colormix.py

Beachte: Je groesser der Faktor einer Farbe, desto aehnlicher wird die Mischfarbe zu ihr.

Beachte: Auf der CIE Normfarbtafel liegen durch diese Mittelwertbildung alle Mischfarben auf der Verbindungsline der 2 Farben.

Wenn wir noch eine weitere Farbe hinzu nehmen, liegen alle moeglichen Mischfarben entspechend innerhalb des verbindenen Dreiecks der 3 zu mischenden Farben. Auf die Weise laesst sich z.B. der Farbraum eines Monitors ermitteln. Die zu mischenden Farben sind dabei die Farben seiner Grundfarben-Farbstofe (Phosphore bei Bildroehren). Dies ist im folgenden Diagramm dargestellt.

Die in der Abbildung eingezeichnete Farbe F1 hat eine Koordinate von x_1=0,2 und y_2= 0,1.

Die Farbe F2 ist bei

x_2=0,55, y_2=0,35

Wenn wir beide Farben mit dem gleichen Gewicht a=b=0.5 mischen, ergibtsich:

xMisch=(x1+x2)/2=0,375 , yMisch=( y1+ y2)/2=0,225

Da die Gewichte gleich gross sind, liegt sie genau in der Mitte der Verbindungslinie von F1 und F1. Wenn das Gewicht einer Farbe bei der Mischung groesser waere, wuerde die Mischfarbe auf der Verbindungslinieentsprechend dichter an dieser Farbe liegen.

Folgendes Diagramm zeigt die Farbraeume von gaengigen Monitoren mittels der von deren Grundfarben aufgespannten Dreiecke der moeglichen Mischfarben:

Normfarbtafel mit FCC- und EBU-Farbdreieck

Einfuss der unterschiedlichen Grundfarben eines Displays: Unterschiedliche Farbräume sind darstellbar.

Farbe: relatver Anteil der verschiedenen Zapfen.

Mischung mit den Grundfarben eines Displays: Mischfarben alle innerhalb des von dessen Grundfarben aufgespannten Dreiecks

Farbraumtest fuer Monitore

Das folgende Python Skript zeigt den vollen Farbraum des Monitors.

Horizontal auf der x-Achse wird der Wert der Rot-Komponente von 0 bis 1 (volle Aussteuerung) erhoeht (1 ist rechts),

vertikal auf der y-Achse wird der Wert der Gruen Komponente von 0 bis 1 erhoeht (1 ist oben),

Der wert der Blau-Komponente wird so gewahlt dass die Summe

R+G+B=1

erfuellt ist, also B=1-R-G.

Daher erscheinen nur Farben im unteren Dreieck, weil im oberen Dreieck der Wert der Blau- Komponente negativ werden wuerde.

Ausfuehren mit:

python imagecolortriangledisp.py

Beim Vergleich mit unterschiedlichen Monitoren nebeneinander werden wir Unterschiede feststellen.

An diesem Dreieck koennen wir nun auch ablesen, welche Verhaeltnisse unsere Farbkomponenten fuer eine gewuenschte Farbe haben muessen: Wir waehlen den Punkt der gewuenschten Farbe in diesem Farbdreieck aus, und lesen dann an der x-Achse den Wert der Rot-Komponente ab, an der y-Achse den fuer Gruen, und die Diferenz der Summe der beiden zu 1 ist der Blau Wert.

Beachte:

Oben ist das satteste Gruen, unten das blaueste blau, und rechts das roteste Rot.

Dieses Dreieck entspricht den Dreiecken fuer unterschiedliche Monitore in obiger CIE-Farbtafel. Man sieht: Grad im Gruen-Bereich gibt es noch Reserve.