#show link: it => [#text(blue)[#underline[#it]]] #set page( header: box(width: 1fr, stroke: (bottom: 1pt), outset: (bottom: 3pt), [ #smallcaps[Bildverarbeitung] #h(1fr) _Gero Beckmann_ ]), footer: [ #h(1fr) #link("https://source.orangerot.dev/University/bildverarbeitung-etit-cheatsheet") ] ) #set heading(numbering: "1.1") #show heading: it => [ Aufgabe #counter(heading).display(): #it.body ] = Allgemeine Fragen #h(1fr) (20 P) Wie viele Dimensionen hat eine Farbvalenz? Woher kommt die Repräsentation? Was sind metamere Farbreize? Welcher Farbraum eignet sich zur Farbabstandsmessung? *Abtasttheorem nach Shannon* $f_max$ bandbegrenztes Signal aus einer Folge von äquidistanten Abtastwerten exakt rekonstruiert werden kann, wenn es mit einer Frequenz von größer gleich $2 dot f_max$ abgetastet wurde. == Lochkamera #grid( columns: (1fr, 1fr), [ #emph([Vorteile]) - unendliche Schärfentiefe/dünnes Loch (theoretisch) ], [ #emph([Nachteile]) - wenig Licht zum Sensor; lange Belichtung - Loch nicht unendlich dünn $->$ Unschärfescheibchen - Beugung an Blende ] ) #grid( columns: 2, [ Abbildungsformel $1 / f = 1 / g + 1 / b$ Vergrößerung $V = "Bildgröße" / "Objektivgröße" = - b / z_c = - b / g = - f / (g - f) = - 1 / (q / f - 1)$ ], image("res/lense-001.png") ) #image("res/perspective-001.png") #grid( columns: 3 * (1fr,), align: center, [entozentrische Perspektive], [telezentrische Perspektive], [hyperzentrische Perspektive] ) *Chromatische Aberration*: unterschiedliche Wellenlängen werden unterschiedlich gebrochen. - Linsensystem aus zwei/drei Linsen $->$ Brennpunkte der Wellenlängen stimmen überein - Spiegeloptiken: Reflexionsgesetz gilt unabhängig der Wellenlänge - Monochromatisches Licht #pagebreak() #grid( columns: 2, column-gutter: 2cm, [ *Photometrie*: objektive Größen, Physikalisch \ *Radiometrie*: subjektive Größen; sichtbares Licht *photopisch* (Tag): am besten (MAX) bei 555nm \ *skotopisch* (Nacht): am besten (MAX) bei 500nm ], [ *Rezeptoren Auge* - L-Zapfen (Rot-Rezeptoren) - M-Zapfen (Grün-Rezeptoren) - S-Zapfen (Blau-Rezeptoren) - Stäbchen (Licht) ] ) Warum keine Rot-Grün Valenz Sinnesreize der Zapfen werden zu kombinierten Nervensignalen kombiniert (Rot-Grün, Blau-Gelb verschmieren) - R-G Chromanz - Luminanz - B-Y Chromanz *Farbvalenz*: Beschreibung des Farbeindrucks mit 3 Dimensionen *Metamer*: verschiedene Farbreize (Spektren) mit identischer Farbvalenz (Orange = Rot + Gelb) #grid( columns: 2, [ *Weißpunkt*: $x = y = 1 / 3$ *Spektralfarbenkurve*: Rad *Purpurlinie*: untere Linie *additive Mischung*: alle Farben in der konvexen Hülle der zu mischenden Punkte *CIELAB* zur Farbabtastung \ Helligkeit $L^* = root(3, Y)$ \ $a^*$: Rot-Grün \ $b^*$: Gelb-Blau ], image(height: 200pt, "res/color-001.jpg") ) *CMOS vs CCD* 2 Vorteile + 2 Nachteile #table( columns: (1fr, 1fr), table.header([*CMOS*], [*CCD*]), [ Vorteile #set list(marker: [+]) - frei Adressierbar (schnelle Teilbilder) - hoher Dynamikbereich - geringer Energiebedarf - geringe Herstellungskosten - hohe Dichte (geringe Baugröße) ], [ Vorteile #set list(marker: [+]) - lineare Charakteristik - Sättigung ], [ Nachteile #set list(marker: [-]) - Empfindlichkeitsunterschiede in Pixeln (kalibrierbar) - Verstärkungsunterschiede in Pixeln (kalibrierbar) - hoher Dunkelstrom ], [ Nachteile #set list(marker: [-]) - *Blooming*: Überlaufen der Ladung in (vertikalen) Nachbarzellen - *Smear*: Belichtung während des Verschieben der Ladung ] ) Dunkelstrom: falsches Bildsignal durch thermisches Rauschen; durch kühlen beheben #pagebreak() *Histogramm-Spreizung* #align(center, image( height: 80pt, "res/histogramm-001.jpg" )) Histogramm ausreichen, zeichnen $ hat(P)_i = 1 / "MN" sum^(M-1)^(m=0) sum^(N-1)_(n=0) delta^(q_i)_(g_"mn"), i=0,...,K-1 "Kronecker-Delta: " delta^b_a := cases(1 "für" a = b, 0 "für" a != b) $ Histogramm-Spreizung Formen $gamma(g) = (g - g_min) (q_(k-1) - q_0) / (g_max - g_min) + q_0$, $gamma(g_min) = q_0, gamma(g_max) = q_(K-1)$ *Radon-Transformation* (finde geradenhafte Strukturen; Winkel $phi$ = x, Distanz u = y) #pad(bottom: 15pt, align(center,grid( columns: 2, rows: 100pt, column-gutter: 40pt, figure(image("res/hough-001.jpg"), caption: [Originalbild]), figure(image("res/hough-002.jpg"), caption: [Hough-Transformation]) ))) $ g(u, phi) = R{g(x)} := integral.double^inf_inf g(x) delta(x^T e_phi - u) dif x " ,mit" phi in [0, pi), u in R, e_phi = vec(cos phi, sin phi) $ Integrationsgerade $phi$-Gerade: $delta(x^T e_phi - u) = cases(inf "für" x^T e_phi - u = 0, 0 "für" x^T e_phi - u != 0)$ sorgt dafür, dass Bildwerte längs Geraden mit Parametern u (Ursprungsabstand) und $phi$ (Winkel) aufintegriert werden. Enthält $g(x)$ eine $delta$-Gerade $delta(v^T u_phi_0 - u_0)$, so zeigt $g(u, phi)$ ein ausgeprägtes Maximum bei $phi = phi_0, u = u_0$ *Hough-Transformation* Radon-Transformation für Binärbilder Für jeden gesetzten Bildpunkt $g(x) = 1$ wird die Geradengleichung $x^T e_phi - u = 0$ ausgewertet: \ $u = x^T e_phi = x cos phi + y sin phi$ #set box(inset: 4pt) #grid( columns: 3 * (1fr,), grid( columns: 5, box[ ], box[2], rect[1], rect[0], rect[0], box[y], box[1], rect[0], rect[1], rect[0], box[ ], box[0], rect[0], rect[0], rect[1], box[ ], box[ ], box[0], box[1], box[2], box[ ], box[ ], box[ ], box[x], box[ ], ), table( columns: 5, table.header([$x$ \\ $phi$], $0$, $pi / 6$, $pi / 3$, $pi / 2$), $(2,0)^T$, $2$, $2$, $1$, $0$, $(1,1)^T$, $1$, $1$, $1$, $1$, $(0,2)^T$, $0$, $1$, $2$, $2$ ), grid( columns: 6, box[ ], box[3], rect[0], rect[0], rect[0], rect[0], box[ ], box[2], rect[1], rect[1], rect[1], rect[1], box[y], box[1], rect[1], rect[2], rect[2], rect[1], box[ ], box[0], rect[0], rect[0], rect[0], rect[1], box[ ], box[ ], box[0], box[$pi/6$], box[$pi/3$], box[$pi/2$], box[ ], box[ ], box[ ], box[x], box[ ], box[ ] ), ) #v(-1cm) *Karhunen-Loève-Transformation* \ (reduziere Korrelation zwischen Kanälen zu einem mit viel Information) - Schätzung der Kovarianzmatrix $C_"gg"$ der Farbwerte - Lösung des Eigenwertproblems - zeilenweise Anordnung der Eigenvektoren in absteigender Reihenfolge der Eigenwerte $A$ - Subtraktion des mittleren Farbwertes und Transformation $k = A(g - mu_g)$ // #image(height: 5cm, "res/morphologie-001.png") // Rand-Extraktion: $G without (G minus.circle S)$ #page( header: none, footer: none, margin: (y: 15pt) )[ = Bilder zuordnen #h(1fr) (20 P) #grid( columns: (1fr, 1fr), column-gutter: 40pt, table( image("res/images-001.png"), [Schwellenwert (Binarisierung)], [$ cases(1 "für" g(x) > gamma, 0 "sonst") $] ), table( image("res/images-002.png"), [Invertierung], [$ max(g(x)) - g(x)$] ), table( image("res/images-003.png"), [Betragsspektrum], [$abs(integral.double g(x) e^(-j 2 x f^T x) dif x )$] ), table( image("res/images-004.png"), [Verrauschung (additiv, normalverteilt)], [$ g(x) + e(x), e(x) ~ N(0, sigma^2)$] ), table( image("res/images-005.png"), [Radon-Transformation], [$integral.double g(x) delta(x^T e_phi - u) dif x$] ), table( image("res/images-006.png"), [Verschärfung], [$4 dot g(x) - 3 dot "TP"{g(x)}$] ), table( image("res/images-007.png"), [Laplacian-of-Gaussian], [$-Delta("TP"{g(x)})$] ), table( image("res/images-008.png"), [homomorphe Filterung], [$exp("HP"{ln(g(x))})$] ), table( image("res/images-009.png"), [Gradientenbetrag], [$sqrt(((partial g(x))/(partial x))^2 + ((partial g(x))/(partial y))^2)$] ), table( image("res/images-010.png"), [Fensterung (mit Hann-Fenster)], [$g(x) dot w_"Hann"(x)$] ), ) ] = Filterung #h(1fr) (10 P) = Lichtschnittverfahren / Triangulation #h(1fr) (30 P) Wie muss Oberfläche beschaffen sein, damit Triangulation berechnet werden kann? #grid( columns: 2, [ *Spiegelnde Oberfläche*: Kein Licht gelangt auf den Sensor *Teiltransparentes Objekt* (Volumenstreuung) - Aufweitung des Lichtpunkts - Messunsicherheit steigt *Abschattung des Beobachtungsstrahls*: Kein Licht gelangt auf den Sensor *Mehrfachreflexion bei teilspiegelndem Objekt*: Zusätzliche, falsche Messpunkte ], image(height: 7cm, "res/triangulation-001.jpg") ) #grid( columns: 2, column-gutter: 1cm, pad(top: .5cm)[ *Hellfeld*: Gerichtetes Licht, das (bei fehlerfreiem Objekt) direkt in die Kamera gelenkt wird *Dunkelfeld*: Gerichtetes Licht, das (bei fehlerfreiem Objekt) an der Kamera vorbei gelenkt wird *Rotkanal*: koaxiale Hellfeldbeleuchtung, liefert Transmission *Grünkanal*: streifende Beleuchtung in Dunkelfeldanordnung macht streuende Partikel auf der Oberfläche sichtbar *Blaukanal*: Dunkelfeld, macht Kratzer, Fusseln und Blasensichtbar ], image( height: 6cm, "res/dunkelfeld-001.jpg" ) ) #grid( columns: 2, [ $ B_1 / b = (a / 2 - G) / g, - B_2 / b = (a / 2 + G) / g $ Daraus erhält man die Disparität (Parallaxe): $ p := B_1 - B_2 = (a b) / g $ ], image("res/stereo-001.png") ) Zeichne Lichtschnittverfahren Maßnahmen gegen Störlichtunterdrückung - Abdunkeln - Monochromatisches Licht - Referenzaufnahme des Störlichts