3. Histogramm und Grauwerttransformationen


Binarisierung als Teil der Bildvorverarbeitung

In der industriellen Bildverarbeitung ist der nächste Schritt nach der Bildaufnahme oft die Trennung der Objekte, die geprüft werden sollen, vom Untergrund. Im einfachsten Fall kann die Prüfaufgabe darin bestehen, die Objekte im Bild lediglich zu zählen. Diese Fragestellung tritt beispielsweise auf, wenn für ein Kugellager die Zahl der eingelegten Kugeln ermittelt werden soll oder wenn bei einem Tablettenblister nach der Befüllung geprüft wird, ob in jeder Mulde eine Tablette liegt.

In vielen Fällen unterscheiden sich die Objekte durch ihren Grauwert signifikant vom Untergrund. Die Häufigkeitsverteilung der Grauwerte in einem Bild, das Histogramm, kann dann Aufschluß darüber geben, welche Grauwertbereiche den Objekten und welche dem Untergrund zugeordnet werden können. Im nächsten Schritt werden die Bildpixel dann entsprechend ihrem Grauwert klassifiziert und entweder den Objekten oder dem Untergrund zugewiesen. Zur Verdeutlichung der Verhältnisse und zur Vereinfachung der Weiterverarbeitung wird dann ein neues Bild erzeugt, das die gleiche Größe wie das Ursprungsbild hat, in dem aber allen Objektpixeln der Grauwert 0 und allen Pixeln im Untergrund der Grauwert 255 zugewiesen wird. Wenn dieses Verfahren funktioniert, liegen im resultierenden Binärbild die Objekte als einheitlich schwarze Bereiche auf einheitlich weißem Untergrund.

In diesem "vereinfachten" Bild können manche Eigenschaften der Objekte, etwa der Umfang oder die Fläche, wesentlich einfacher bestimmt werden als im ursprünglichen Grauwertbild. Das beschriebene Verfahren ist ein Beispiel für eine sog. Binarisierung des Bildes, und das resultierende Bild, in dem nur noch zwei Grauwerte vorkommen, wird als Binärbild bezeichnet. Wenn der Grauwert 255 für Weiß in den Zahlenwert "1" und der Grauwert 0 für Schwarz in den Zahlenwert "0" übertragen wird, können je 8 Pixel zu einem Byte zusammengefaßt werden, so daß der Speicherplatzbedarf für ein Bild etwa um den Faktor 8 reduziert wird. Wenn es auf kurze Ausführungszeiten ankommt, können für so abgelegte Binärbilder manche Algorithmen bei der hardwarenahen Programmierung mit Bitoperationen realisiert werden.

Der Verarbeitungsschritt, bei dem aus dem Grauwert eines Pixels nach einer definierten Vorschrift ein neuer Grauwert berechnet und in einem neuen, gleich großen Bild an derselben Stelle wie im ursprünglichen Bild abgelegt wird, ist ein Beispiel für eine Grauwerttransformation. Für die industrielle Bildverarbeitung gehört diese Vorgehensweise zur Bildvorverarbeitung, und viele Verfahren der Bildverbesserung beruhen auf Grauwerttransformationen. Kenntnisse über das Grauwerthistogramm eines Bildes und der Prinzipien der Grauwerttransformation gehören zu den unabdingbaren Grundlagen der Bildverarbeitung.


Grauwert-Histogramm

Das Histogramm repräsentiert die Häufigkeitsverteilung der Grauwerte in einem Bild. Bei einem 8-bit-tief digitalisierten Bild können die Grauwerte nur die 256 Zahlenwerte von 0 bis 255 annehmen. Bei der Ermittlung der Häufigkeitsverteilung wird ein Vektor mit 256 Spalten erstellt, eine für jeden der Grauwerte 0 bis 255, und in jeder Spalte mit dem Eintrag n = 0 initialisiert. Dann wird das gesamte Bild Pixel für Pixel durchlaufen. Wenn ein Pixel den Grauwert g hat, wird der Eintrag in der Spalte g der Tabelle von n auf n+1 erhöht. Wenn das Bild vollständig durchlaufen ist, steht in jeder Spalte des Vektors an der Stelle g die absolute Häufigkeit n(g), mit der dieser Grauwert im Bild vorkommt. Diese diskrete Funktion n(g) ist die Häufigkeitsverteilung der Grauwerte dieses Bildes. Bei einem Binärbild kommen nur die Grauwerte 0 und 255 vor, folglich sind in der Häufigkeitsverteilung nur die Einträge in den Spalten 0 und 255 von Null verschieden. Die Summe über die Häufigkeiten aller Grauwerte ist übrigens die Gesamtzahl der Pixel in einem Bild.

Zur Veranschaulichung wird meistens die Funktion n(g) graphisch als "Säulendiagramm" dargestellt. Säulen sind es deshalb, weil die Grauwerte, die auf der x-Achse aufgetragen werden, nur ganzzahlige Werte annehmen können. Die Höhe der Säulen, also die Zahl der Pixel, die mit dem jeweiligen Grauwert im Bild vorkommen, ist ebenfalls ganzzahlig. Das Histogramm ist also eine "Treppenkurve". Wenn das Bild aus einer großen Zahl von Pixeln besteht, zeichnet man im Histogramm meist eine glatte, durchgezogene Kurve und suggeriert damit eine kontinuierliche Funktion für die Häufigkeitsverteilung. Man sollte sich aber immer darüber im Klaren sein, daß die Grauwerte und die Häufigkeiten, die im Histogramm vorkommen, nur ganzzahlige Werte annehmen können!

Ein Beispiel können Sie in der AdOculos-Routine bc_vcmir.set mit dem Quellbild barms1.256 anschauen. Dort wird auch eine Binarisierung vorgenommen. Sie können sich selbst davon überzeugen, daß das Histogramm des Binärbildes nur noch zwei Einträge enthält.


Helligkeit und "Schärfe"

Die Information über die räumliche Verteilung der Grauwerte im Bild wird durch das Histogramm nicht mehr wiedergegeben. Verschiedene Bilder können dasselbe Histogramm haben. Hier sind einige einfache Beispiele:










Die Information über die räumlichen Strukturen im Bild geht mit der Berechnung des Histogramms also verloren, trotzdem enthält es aber interessante Informationen über das Bild.

Der Mittelwert über alle Grauwerte im Histogramm, der "mittlere Grauwert", ist ein Maß für die Gesamthelligkeit des Bildes. Beispielsweise werden die oben gezeichneten Schachbrettmuster, aus größerer Entfernung betrachtet, zu einer einheitlichen grauen Fläche verschwimmen, deren Grauwert gerade der Mittelwert der Grauwertverteilung ist. Auch den Median des Histogramms, das ist der Grauwert, bei dem die Hälfte aller Pixel im Bild einen höheren und die Hälfte aller Pixel einen geringeren Grauwert haben, kann man als Maß für die mittlere Bildhelligkeit heranziehen. Einstellhilfen für die Blende am Kameraobjektiv, die in manchen Bildverarbeitungsprogrammen enthalten sind, benutzen oft den Mittelwert oder den Median der Grauwertverteilung als Gütemaß.

Entsprechend werden die Standardabweichung oder die Streuung der Grauwertverteilung oft als Parameter benutzt, um die Scharfeinstellung am Objektiv zu optimieren. Beispielsweise werden bei einer Kante zwischen einem weißen und einem schwarzen Bereich lediglich die Grauwerte 0 und 255 vorkommen, wenn das Bild ideal "scharf" ist. Bei einer unscharfen Aufnahme desselben Bildes wird die Kante verschliffen, und es kommen weitere Grauwerte im Bild vor. Die Streuung der Grauwertverteilung wird sich dadurch ändern. Statistische Eigenschaften der Grauwertverteilung können auch zur Beurteilung des Kontrastes, des Rauschens oder des Informationsgehalts in einem Bild, z.B. im zusammenhang mit der Optimierung von Kompressionsverfahren, herangezogen werden.

Übrigens: Wird die Streuung, die Sie aus der Grauwertverteilung berechnen können, so wie Sie sie in der Mathematik oder der Physik kennengelernt haben, bei einem unscharfen Bild eigentlich größer oder kleiner sein als bei einem scharfen Bild? Drei Beispiele finden Sie als AdOculos-Routinen unter chess.set mit den Quellbildern chess1_1.tif und chess1_2.tif, chess2.set mit den Quellbildern chess2_1.tif und chess2_2.tif sowie unter quadr.set mit den Quellbildern quadr1.tif und quadr1_1.tif.



Ein bimodales Histogramm

Wenn die Objekte in einem Bild sich vom Untergrund im Grauwert deutlich unterscheiden und das Bild mit Hilfe einer einheitlichen Grauwertschwelle binarisiert werden soll, ergibt sich eine geeignete Grauwertschwelle meist aus der Analyse des Histogramms. Im Idealfall zerfällt das Histogramm in zwei deutlich getrennte "Peaks", weil die Grauwerte z.B. für einen hellen Untergrund möglicherweise sämtlich in der Umgebung des Grauwerts 200 und die Grauwerte für die dunklen Objekte sämtlich vielleicht in der Umgebung des Grauwerts 50 liegen, während sich im Bereich zwischen den beiden Maxima der Verteilung ein breiter Bereich von Grauwerten befindet, die im Bild überhaupt nicht oder nur mit sehr geringer Häufigkeit vorkommen. Ein solches Histogramm, das aus zwei Maxima mit einem breiten dazwischenliegenden Minimum besteht, wird als bimodal bezeichnet.












Die Abbildung zeigt ein solches nahezu ideal bimodales Histogramm eines Bildes mit dunklen Objekten auf hellem Hintergrund, das mit AdOculos erzeugt wurde. Bei der Betrachtung liegt es nahe, die Binarisierungsschwelle "in die Mitte" zwischen die beiden prominenten Maxima zu legen, also etwa in den Grauwertbereich von 60 bis 90. Im Histogramm befinden sich eine Reihe von weiteren Mininma und Maxima, so daß es keineswegs trivial ist, einen Algorithmus zu finden, der zuverlässig eine Binarisierungsschwelle in dem Bereich ermittelt, den man durch Inspektion des Histogramms auswählen würde. Oft wird das Histogramm daher vor einer weitergehenden Analyse geglättet.

Bei industriellen Anwendungen werden häufig feste Binarisierungsschwellen verwendet, die einmal bei der Inbetriebnahme des Systems unter den in der speziellen Anwendung vorliegenden Bedingungen ermittelt wird. Bei der Einrichtung steht im Vergleich zum Betrieb in der Linie praktisch beliebig viel Zeit zur Verfügung, so daß in einem "Teach-In-Modus" das Histogramm berechnet und auch mit aufwendigen Verfahren ausgewertet werden kann. Die so berechnete Binarisierungsschwelle wird dann für den laufenden Prüfbetrieb verwendet, ohne daß für jede Aufnahme das Histogramm berechnet und analysiert werden muß. Diese Vorgehensweise ist jedoch nur praktikabel, wenn man sich vorher überzeugt hat, daß die unvermeidlichen Variationen bei der Bildaufnahme nicht zu unakzeptablen Fehlfunktionen des Systems führen. Bei starken Schwankungen in den Aufnahmebedingungen muß die Binarisierungsschwelle dynamisch, also für jedes aufgenommene Bild separat, aus dem Histogramm berechnet werden.


Binarisierung als Grauwerttransformation

Die Binarisierung eines Bildes über eine feste Grauwertschwelle kann man als Transformation der Grauwerte eines Bildes auffassen: Jedem "alten" Grauwerte g aus dem möglichen Grauwertbereich von 0 bis 255 werden nach einer eindeutigen Vorschrift "neue" Grauwerte, ebenfalls aus dem Grauwertebereich von 0 bis 255 zugeordnet. Die Grauwerttransformation wird durch eine Funktion f(g) vermittelt, die für den Fall der Binarisierung stückweise folgendermaßen definiert wird:








Bitte verwechseln Sie den Graph der Transformationsfunktion f(g) nicht mit dem Histogramm! Bei beiden ist auf der x-Achse dasselbe aufgetragen, nämlich die möglichen Werte, die der Grauwert g im ursprünglichen Bild annehmen kann. Im Graph f(g) sind auf der y-Achse jedoch ebenfalls Grauwerte aufgetragen, nämlich die Werte, die die transformierten Grauwerte f(g) annehmen können. Normalerweise, aber nicht immer, fallen diese beiden Bereiche zusammen, und sowohl für g als auch für f(g) sind die ganzen Zahlen von 0 bis 255 möglich. Das Tableau, in dem der Graph von f(g) gezeichnet wird, ist also bei gleichem Maßstab auf der x- und y-Achse ein Quadrat:
















Anstatt einer kann man auch mehrere Binarisierungsschwellen für das ganze Bild benutzen, z.B. in der folgenden Form:



Unterhalb und oberhalb zweier Binarisierungsschwellen werden die Grauwerte auf Null und dazwischen auf 255 gesetzt.

Allgemein versteht man unter "Binarisierung" die Transformation eines vorliegenden Grauwertbildes in ein neues, gleich großes Bild, in dem nur noch zwei Grauwerte vorkommen. Die Berechnung des neuen, binären Grauwerts eines Pixels kann über den Grauwert dieses Pixels erfolgen, es kann jedoch z.B. auch die Umgebung eines Pixels in die Entscheidung einbezogen werden. Es ist in manchen Fällen auch sinnvoll, für verschiedene Regionen eines Bildes unterschiedliche Binarisierungsschwellen zu verwenden, z.B. um den Einfluß von Inhomogenitäten in der Beleuchtungsverteilung zu eliminieren. Dazu wird das Bild in verschiedene Bereiche unterteilt, und in jedem Bereich wird separat ein Histogramm berechnet, aus dem sich die lokale Binarisierungsschwelle ergibt. Wir werden später noch sehen, daß auch einige Filteroperationen als lokale Histogrammauswertungen aufgefaßt werden können.


Rundung und Überlauf

Zur tiefergehenden Diskussion weiterer Grauwerttransformationen betrachten wir zunächst die "triviale" Transformationsfunktion f(g) = g, die jeden Grauwert so läßt, wie er ist. Diese Transformation hat selbstverständlich keinerlei praktische Bedeutung. Ihr Graph ist eine Gerade durch den Punkt (0,0) mit der Steigung 1, also eine "Diagonale" in dem quadratischen Feld, in dem der Graph aufgetragen wird. Die Transformation, die durch "die andere" Diagonale als Graph charakterisiert ist, wird jedoch durchaus benutzt. Dem Grauwert 0 wird der Grauwert 255 und dem Grauwert 255 wird der Grauwert 0 zugeordnet, und dazwischen verläuft die Transformation linear mit der Steigung -1. Diese Transformation, die "Invertierung", erzeugt das "Negativbild".

Was passiert aber, wenn man ausgehend von der "trivialen" Transformation die Steigung der Geraden verändert, z.B. auf den Wert 2? Dann treten zwei Besonderheiten auf. Erstens ist z.B. der Funktionswert 200 für den Grauwert im neuen Bild bereits beim Grauwert 100 aus dem Ursprungsbild erreicht, und für alle Grauwerte ab einschließlich 128 gibt es zunächst keine neuen Grauwerte, die zugeordnet werden könnten. Diese Situation bezeichnet man als "Überlauf", weil die naiv berechneten neuen Grauwerte größer als 255 werden und deshalb außerhalb des möglichen Wertebereichs für Grauwerte liegen. Meist setzt man dann die überlaufenden Werte einfach auf den Maximalwert, hier also auf 255. Strukturen in hellen Bildbereichen gehen damit verloren, weil alle Grauwerte oberhalb von 127 einheitlich auf den Wert 255 abgebildet werden. Zweitens werden einige Grauwerte im neuen Bild gar nicht belegt. Beispielsweise kann der Grauwert 9 im neuen Bild nicht vorkommen, weil er aus dem Grauwert 4,5 hervorgegangen sein müßte. Im Quellbild gibt es aber nur ganzzahlige Grauwerte, folglich bleiben im Ergebnisbild nur noch geradzahlige Grauwerte übrig. Ein ähnliches Problem tritt auch bei Steigungen kleiner als 1 auf. Für die Steigung 0,5 muß man z.B. für den ursprünglichen Grauwert 23 entscheiden, ob als neuer Grauwert die Zahl 11 oder die Zahl 12 gewählt werden soll. Je zwei ursprünglich vorhandene Grauwerte müssen auf einen Grauwert abgebildet werden. Bei der Programmierung von Grauwerttransformationen sollte man deshalb immer Vorkehrungen gegen den Überlauf treffen und die berechneten Grauwerte definiert auf ganze Zahlen runden.


Spreizung

Bei der linearen Grauwerttransformation mit Steigung >1 wird ein eingeschränkter Grauwertbereich aus dem Ursprungsbild im Ergebnisbild auf den vollen verfügbaren Grauwertumfang "aufgeblasen". Einige der möglichen Grauwerte werden im neuen Bild zwar nicht besetzt, aber der Abstand zwischen ursprünglich nahe beieinanderliegenden Grauwerten ist im Ergebnisbild größer geworden. Bei "steilen" Transformationsfunktionen können dadurch für den menschlichen Betrachter Strukturen im Bild sichtbar werden, die im Quellbild wegen der geringen Grauwertdifferenzen nicht zu erkennen waren. Dieses Verfahren wird als "Spreizung" bezeichnet. Der schmale Grauwertbereich aus dem Quellbild, der im Ergebnisbild auf den vollen Grauwertbereich gespreizt ist, kann beliebig ausgewählt werden, er muß nicht beim Grauwert Null beginnen. Grauwerte unterhalb des ausgewählten Grauwertintervalls werden auf den Grauwert 0, Grauwerte oberhalbwerden auf den Grauwert 255 gesetzt, und Grauwerte innerhalb des Intervalls werden linear auf die Werte zwischen 0 und 255 gespreizt. Ohne tiefergehende Überlegungen zum Begriff "Kontrast" anzustellen, könnte man die Spreizung als ein Verfahren zur "Kontrastverbesserung" bezeichnen.

Ein Beispiel für Bildverbesserung durch Spreizung finden Sie in spreizen.set mit dem Quellbild tumsrc.128, das als Beispielbild im Lieferumfang von AdOculos enthalten ist. Eine Spreizung im Bereich von 100 bis 105, also über ein Intervall von nur 6 Grauwerten, führt zu spektakulären Resultaten. Die untere und obere Intervallgrenze für die Spreizung kann man in AdOculos nach Auswahl der Funktion im setup-Fenster im Menuepunkt "Funktion" unter "Parameter" einstellen.


Die Transformationsfunktion der Spreizung


Eine Spreizung wird durch folgende Transformationsfunktion realisiert:







In dieser Funktionsdefinition ist noch nicht berücksichtigt, daß die Ergebnisse der Berechnung für f(g) auf ganze Zahlen gerundet werden müssen. Auch das kann man selbstverständlich formal korrekt formulieren, wir haben aber in dieser Einführung bewußt darauf verzichtet, damit die Definition übersichtlich bleibt. Das gleiche gilt für die weiteren in diesem Kapitel angegebenen Transformationsfunktionen.


Grauwertprofil

Auf einem guten Monitor können Sie einige der Strukturen, die durch die Spreizung hervorgerufen werden, auch im Originalbild erkennen. Ein nützliches Hilfsmittel ist in solchen Fällen manchmal ein Grauwertprofil. Dabei wird eine Gerade mit beliebigem Anfangs- und Endpunkt und beliebiger Orientierung durch das Bild gelegt und der Grauwertverlauf längs dieser Linie in einem Diagramm aufgetragen. Das folgende Beispiel, erzeugt mit AdOculos, zeigt das Grauwertprofil längs einer Bildzeile quer durch ein Strichcodemuster, das aus dunklen Linien auf hellem Untergrund besteht. Auf der x-Achse ist die "Pixelkoordinate" längs der Bildzeile und auf der y-Achse sind die Grauwerte der einzelnen Pixel aufgetragen. Ein solches Grauwertprofil kann in einfacher Weise einen Überblick über Größen geben, die ansonsten mühsam aus dem Bild heraus gerechnet werden müßten, bei diesem Beispiel etwa die Steilheit der Kanten oder die Kontrastunterschiede zwischen Bereichen mit schmalen und mit breiten Balken.














Clipping

Eine häufig benutzte stückweise definierte Transformationsfunktion ist das "Clipping". Innerhalb eines wählbaren Intervalls wird die Grauwertverteilung so belassen wie sie ist, außerhalb wird sie auf einen festen Wert gesetzt, sie wird also "abgeschnitten". Das kann man beispielsweise so realisieren:





Bei anderen Realisierungen werden die Grauwerte unterhalb der unteren Intervallgrenze auf 0, die Grauwerte oberhalb auf 255 gesetzt oder umgekehrt, alternativ kann man die Grauwerte außerhalb des Intervalls auf 255 anstatt auf Null setzen. Es können auch mehrere Grauwertintervalle definiert und die Grauwerte außerhalb der Intervalle auf konstante Werte abgebildet werden. Das "Clipping" wird deshalb oft auch als "Windowing" bezeichnet, weil "Fenster" im Grauwertbereich ausgewählt werden, durch die das Bild betrachtet wird.


Weitere Transformationen

Eine ganze Gruppe von weiteren Transformationsfunktionen entsteht aus der "trivialen" Transformation f(g) = g, deren Graph eine Gerade mit Steigung 1 ist, wenn man sich diese Gerade als Gummiband vorstellt, das zwischen den Punkten (0,0) und (255,255) fest eingespannt ist und auf der quadratischen Ebene, auf der der Graph aufgetragen wird, deformiert werden kann. Eine Deformation "nach oben", also von der Diagonalen in Richtung größerer Grauwerte, führt normalerweise zu einem insgesamt helleren Bild, und die kleineren Grauwerte des Quellbildes werden auf ein größeres Intervall verteilt als die größeren. Eine Deformation "nach unten", d.h. in Richtung kleinerer Grauwerte, erzeugt normalerweise ein insgesamt dunkleres Bild, bei dem die ursprünglich helleren Bereiche stärker gespreizt werden und die dunkleren komprimiert werden.

Diese Deformationen können im Prinzip durch beliebige Funktionen vermittelt werden. Man muß lediglich beachten, daß kein Über- oder Unterlauf auftreten darf, daß die Grauwerte 0 und 255 unverändert bleiben und daß die resultierenden Grauwerte ganze Zahlen sein müssen. Übliche Funktionen sind Wurzel-, Potenz-, Exponential- und Logarithmusfunktion.

Die in vielen Bildbearbeitungsprogrammen verfügbare "Gamma-Korrektur" ist eine Potenztransformation, mit der die nichtlineare Hellempfindlichkeitskurve mancher Kameras für die Bilddarstellung wieder heraus gerechnet wird. In den Übungen wird die genaue Formulierung der Funktionsvorschrift für einige dieser Transformationen behandelt.



Verstärkung und Offset

Eine weitere wichtige Transformationsfunktion ist die allgemeine lineare Transformation. Dabei wird zunächst ein konstanter Wert auf alle Grauwerte addiert oder von ihnen subtrahiert, der "Offset" O. Die resultierenden Grauwerte werden dann mit einem konstanten Faktor multipliziert, den man als Verstärkung ("gain") G interpretieren kann. Beide Operationen können in Hardware am Bildsignal oder bei der Digitalisierung realisiert werden und stehen bei vielen Framegrabber-Karten als einstellbare Parameter zur Verfügung. Die zugehörige Transformationsfunktion ist also:



Selbstverständlich kann man auch zuerst verstärken und anschließend einen konstanten Offset hinzufügen. Bei Über- bzw. Unterlauf wird der entsprechende Grauwert auf 255 bzw. auf 0 gesetzt.


Look-Up-Tables (LUT)

Die bisher behandelten Transformationen werden technisch üblicherweise in sog. "Look-Up-Tables" (LUT) realisiert, sowohl in Hardware als auch in Software. Es ist nicht effizient, jedes Pixel im Bild zu besuchen, seinen Grauwert auszulesen und dann z.B. eine komplizierte logarithmische Transformation für diesen Grauwert zu berechnen. Erstens ist die Berechnung eines Logarithmus zeitaufwendig, und zweitens würde bei einem Grauwert, der bei der Abarbeitung des Bildes mehrfach (oder bei einem genügend großen Bild vielleicht zehntausend mal) vorkommt, dieselbe Berechnung überflüssigerweise mehrfach durchgeführt. Es ist viel geschickter, für alle vorkommenden Grauwerte die Transformationsfunktion einmal auszuwerten und die Resultate in einem Vektor abzulegen, dessen Index der ursprüngliche Grauwert ist. An der Stelle g dieser "Look-Up-Table" steht dann der zugehörige Wert f(g) der Transformationsfunktion. Diese Berechnung muß nicht einmal zur Laufzeit des Programms erfolgen, denn es wird nur die Tabelle benötigt, nicht jedoch die Funktionsvorschrift oder ihre Implementierung. Bei der Durchführung der Transformation in Software wird dann zwar für jedes Pixel der Grauwert ausgelesen, aber dieser Grauwert dient unmittelbar als Index für den Zugriff auf die LUT, so daß der zugeordnete Grauwert der Transformation unmittelbar ausgelesen und dem entsprechenden Pixel des Ergebnisbildes zugewiesen werden kann. Eine LUT kann nach diesem Konzept in einem Framegrabber auch unmittelbar in Hardware realisiert werden, indem hinter dem AD-Wandler ein 8 bit tiefes Register vorgesehen wird, das jedem digitalisierten Grauwert einen neuen Grauwert zuordnet, bevor dieser Grauwert im Bildspeicher abgelegt wird. Der Registerinhalt kann bei solchen Framegrabbern von außen frei programmiert werden. Eine Grauwerttransformation, die über eine LUT gerechnet wird, kann sehr schnell ausgeführt werden und wird deshalb bei industriellen Anwendungen häufig in der Bildvorverarbeitung eingesetzt.


"Beleuchtungskorrektur"

Die bisher behandelten globalen Grauwerttransformationen ordnen einem Grauwert im Quellbild eindeutig einen neuen Grauwert zu, unabhängig von der Lage des betreffenden Pixels im Bild. Es gibt aber Bildverarbeitungsprobleme, bei denen für jedes Pixel eine eigene Transformationsfunktion definiert werden muß. Einige Beispiel werden im Folgenden erläutert.

Wenn die Beleuchtungsverteilung im Objektfeld inhomogen ist, wird das Bild einer weißen Fläche nicht an allen Stellen denselben Grauwert haben. Bei vielen Beleuchtungen nimmt die Bestrahlungsstärke zu den Rändern des beleuchteten Bereichs hin ab. Es kommt auch durchaus vor, daß die Bestrahlungsstärke im Objektfeld von links nach rechts kontinuierlich abnimmt. In solchen Fällen kann es schwierig werden, z.B. dunkle Objekte mit einer festen Binarisierungsschwelle vom hellen Untergrund zu trennen, weil die Schwelle z.B. im linken Bildbereich korrekt zwischen dem Grauwert des Untergrunds und dem Grauwert des Objekts liegt, im rechten Bildbereich aber auch die Hintergrundpixel Grauwerte unterhalb der Binarisierungsschwelle haben und auf "Schwarz" gesetzt werden. Eine Möglichkeit zur Lösung dieses Problems besteht darin, die Inhomogenität der Beleuchtungsverteilung aus dem Bild heraus zu rechnen. Dazu könnte man z.B. das Bild einer homogen weißen Fläche aufnehmen und die Blende bzw. die Beleuchtung so einstellen, daß das Bild voll ausgesteuert ist, die hellsten Bereiche also gerade den Grauwert 255 erreichen. Für jedes Pixel im Bild kann jetzt ein Korrekturfaktor p berechnet werden, der die Abweichung der Bildhelligkeit w an dieser Stelle vom idealen Grauwert 255 erfaßt:





Wenn jetzt ein Bild aufgenommen wird, ergibt sich durch Multiplikation jedes Grauwerts mit p(x,y) das Bild, das bei idealer Beleuchtung entstanden wäre. Ein aufgenommenes Bild wird dabei Pixel für Pixel durch die Bilddaten für die Weißreferenz dividiert und auf 255 für das ideale Weiß skaliert. Ist beispielsweise ein Pixel am Rand wegen der Beleuchtung bei Aufnahme der Weißreferenz nur halb so hell wie eines in der Mitte und hat es deshalb den Grauwert 128, dann wird für alle mit dieser Beleuchtung aufgenommenen Bilder der aufgenommene Grauwert im Randpixel durch 128 dividiert und mit 255 multipliziert, also um den Faktor zwei im Grauwert angehoben. Dieses Verfahren funktioniert allerdings nur, wenn alle Elemente linear arbeiten. Beispielsweise muß der Empfängerchip in der Kamera Bestrahlungsstärken linear in Grauwerte umsetzen, und eine graue Fläche, die im Zentrum des Objektfeldes halb so große Grauwerte zur Folge hat wie die weiße Fläche, muß auch in den Randbereichen halb so große Grauwerte verursachen wie die weiße Fläche. Das muß nicht zwingend der Fall sein, man kann es aber mit Aufnahmen von weißen, grauen und schwarzen Flächen überprüfen.


"Shading-Korrektur"

Problematisch wird die Korrektur der inhomogenen Beleuchtung, wenn auch bei einer weißen Probe sehr dunkle Bildbereiche entstehen. Solche Bereiche können z.B. durch Schatten hervorgerufen werden. An diesen Stellen wird der Korrekturfaktor, mit dem ein aufgenommener Grauwert multipliziert werden muß, sehr groß, und im umgerechneten Grauwertbereich entstehen für kleine Grauwertunterschiede im Quellbild große Differenzen in den Grauwerten im transformierten Bild. Geringfügige Grauwertunterschiede im Objekt können dann gar nicht mehr aufgelöst werden, unter Umständen führt sogar schon das Rauschen im Grauwertsignal zu erheblichen Schwankungen bei den transformierten Grauwerten.

Die beschriebene Beleuchtungskorrektur, die oft auch als "Shading-Korrektur" bezeichnet wird, ist also nur praktikabel, wenn die Inhomogenitäten in der Beleuchtung nicht zu groß sind. Wenn kleine Grauwertunterschiede ausgewertet werden müssen, ist dazu eine ordentliche Beleuchtung ohne Schlagschatten im Objektfeld erforderlich. Schließlich wird auch niemand ernsthaft erwarten, daß man die Zeitung im Dunkeln lesen kann. Information, die an der Quelle vernichtet wird, kann auch mit den besten Algorithmen nicht mehr aus dem Bild entnommen werden.


"Flat-Field-Korrektur"

Auch bei perfekter Beleuchtung muß das Bild, das von einer perfekt weißen Fläche aufgenommen wird, nicht unbedingt an allen Stellen denselben Grauwert aufweisen. Bei genauer Untersuchung stellt sich häufig heraus, daß die Empfindlichkeit eines Empfängerchips von Pixel zu Pixel schwankt. Auch das verwendete Objektiv überträgt die Strahlung, die von einem Punkt der beleuchteten Fläche abgestrahlt wird, nicht für alle Bereiche des Objektfeldes mit der gleichen Effizienz auf den Empfängerchip. Auch das Dunkelsignal und das Rauschen der Detektorpixel können von Pixel zu Pixel erheblich voneinander abweichen. Diese Effekte lassen sich meßtechnisch nur mit hohem Aufwand voneinander trennen. Oft unternimmt man gar nicht erst den Versuch, sondern nimmt unter gleichbleibenden Bedingungen ein Bild von einer weißen, einer schwarzen und einer grauen Fläche auf. Mit diesen Daten kann man dann analog zu p(x,y) eine lineare Korrekturfunktion für jedes Pixel berechnen, die als freie Parameter einen Offset und eine "Verstärkung" enthält. Diese Prozedur wird dann oft als "flat-field"-Korrektur bezeichnet, obwohl mit diesem Begriff im engeren Sinne nur die Umrechnung der unterschiedlichen Empfindlichkeit von Pixel zu Pixel auf konstante Empfindlichkeit gemeint ist.


Eine Kamera ist kein Strahlungsmeßgerät!

Diese Schwierigkeiten im Zusammenhang mit der Bildaufnahme sind jedoch keineswegs ein "Makel" der verwendeten Kameras. Schließlich sind die Kameras, die in der Bildverarbeitung üblicherweise eingesetzt werden, keine Präzisionsmeßinstrumente für den Strahlungsfluß, sondern basieren auf der Videotechnologie und sind dafür gedacht, Bilder aufzunehmen, die von Menschen angeschaut werden. Auf korrekte Wiedergabe geringfügiger Grauwertdifferenzen, konstante Empfindlichkeit über dem gesamten Detektorchip und Reproduzierbarkeit der aufgenommenen Grauwerte von Bild zu Bild mit einer Genauigkeit von weniger als einem Prozent kommt es dabei gewiß nicht an, weil ein menschlicher Betrachter die vorhandenen Unterschiede nicht wahrnimmt. Eine Kamera ist in erster Linie in der Lage, Szenen geometrietreu abzubilden. Die Wiedergabe von Grauwerten ist in diesem Sinne nur ein Hilfsmittel. Folglich sollte man primär geometrische Informationen aus einem Videobild zu entnehmen, also z.B. Abstände, Flächen oder Winkel.

Die Algorithmen in der industriellen Bildverarbeitung müssen möglichst "robust" sein, d.h. sie müssen auch dann noch funktionieren, wenn die äußeren Bedingungen sich wesentlich stärker ändern als das z.B. in einer Laborumgebung der Fall ist. Sie werden deshalb so ausgelegt, daß Helligkeitsschwankungen nur geringen Einfluß auf die Prüfresultate haben. Das ist beispielsweise möglich, wenn lediglich ein kreisförmiges von einem quadratischen Objekt unterschieden werden muß, die genaue Bestimmung des Umfangs oder der Fläche aber nicht erforderlich ist.

Wenn bei einer Prüfaufgabe jedoch "Helligkeiten" vermessen werden sollen, muß sorgfältig ermittelt werden, ob das mit der Kamera, die zum Einsatz kommen soll, mit der gewünschten Genauigkeit überhaupt möglich ist. Es gibt für wissenschaftliche Zwecke ausgelegte Kameras, beispielsweise für die Spektroskopie, die für diesen Zweck geeignet sind. Unter Umständen muß dann eine solche Spezialkamera verwendet werden.


Verzeichnungskorrektur

Durch den Aufnahmevorgang werden nicht nur die Helligkeiten im Bild gegenüber dem realen Objekt verändert. Auch die Geometrie des Bildes wird von den realen Verhältnissen mehr oder weniger abweichen, weil das Bild durch die Abbildungsoptik und auch durch die Perspektive (besonders deutlich bei 3D-Objekten) verzerrt wird. Bei Vermessungsaufgaben mit hohem Anspruch an die Genauigkeit, die in der industriellen Bildverarbeitung durchaus häufig auftreten, müssen solche Verzerrungen heraus gerechnet werden. Diese Korrekturen können jedoch nicht mit Grauwerttransformationen realisiert werden, weil nicht die Grauwerte, sondern die Lage der Pixel im Bild korrigiert werden muß. Die dabei eingesetzten Verfahren gehen über den Inhalt eines Einführungskurses in die Bildverarbeitung hinaus und werden zu einem späteren Zeitpunkt behandelt.

Wie bei der inhomogenen Beleuchtung können auch bei diesen Verfahren nicht beliebig große Abweichungen vom Idealzustand korrigiert werden. Die bessere Strategie ist generell, bereits bei der Aufnahme hochwertige Objektive einzusetzen, damit verzerrungsfreie Bilder entstehen. Auch die perspektivische Verzerrung kann mit speziellen Optiken, den sog. telezentrischen Objektiven, vermieden werden. Selbstverständlich sind solche Optiken nicht so kostengünstig wie Standardobjektive und können weitere Nachteile haben, z.B. eine größere Baulänge oder erheblich größere Massen. Wie bei jedem Ingenieurproblem muß von Fall zu Fall entschieden werden, ob die technisch "bessere" und damit in der Regel aufwendigere Lösung für die Problemstellung auch wirklich erforderlich ist. Wenn eine Prüfaufgabe auch mit geringerem Aufwand zufriedenstellend erledigt werden kann, wird irgendwann ein Mitanbieter im Markt erscheinen, der diese günstigere Lösung anbietet. Diese Lösung wird das "bessere" System verdrängen - in Wahrheit ist das "bessere" System nämlich gar nicht besser, sondern es ist "overdesigned". Wer fliegt schon mit dem Helikopter zum Supermarkt, wenn der Weg mit dem Fahrrad in fünf Minuten zurückgelegt ist?



T 1.0  April 2001    FH Darmstadt FBMN Studiengang OBV      Bildverarbeitung I    © Prof. Dr. Heckenkamp 2001