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:
![]() |
![]() |
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.
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?