close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

Einbetten
Bildverbesserung





Datenstrukturen für Bilder
Helligkeits- und Kontrastausgleich
Beleuchtungskorrektur
Bildglättung
Positions- und Rotationskorrektur
© 2014 MVTec Software GmbH, München
74
Datenstrukturen für Bilder
 Datentyp eines Pixels ist typischerweise ein Byte:
 typedef unsigned char BYTE
 Bilder sind zweidimensionale Arrays
 In C und C++ sind folgende Datenstrukturen möglich:
 BYTE image[HEIGHT][WIDTH];
 Vorteil: intuitiver Zugriff über image[r][c]
 Nachteil: Nur Bilder mit konstanter Größe möglich
 BYTE *image; /* linearisiertes Array */

Vorteil: Beliebige Größe (mit Allokierungsfunktion)
Nachteil: Zugriff über linearisierte Koordinaten
image[r*WIDTH+c]
BYTE **image; /* Pointer auf Bildzeilen */
Vorteil: Beliebige Größe, Zugriff über image[r][c]

Nachteil: Zusätzlicher Speicherzugriff notwendig



© 2014 MVTec Software GmbH, München
75
Datenstrukturen für Bilder
 Vergleich der Zugriffsarten: Bild mit Grauwert weiß vorbesetzen
BYTE image[HEIGHT][WIDTH];
for (i=0; i<HEIGHT; i++)
for (j=0; j<WIDTH; j++)
image[i][j] = 255;
BYTE **image, *help;
help = malloc(HEIGHT*WIDTH*
sizeof(**image));
image = malloc(HEIGHT*
sizeof(*image));
for (i=0; i<HEIGHT; i++)
image[i] = &help[i*WIDTH];
for (i=0; i<HEIGHT; i++)
for (j=0; j<WIDTH; j++)
image[i][j] = 255;
BYTE *image;
image = malloc(HEIGHT*WIDTH*
sizeof(*image));
for (i=0; i<HEIGHT; i++)
for (j=0; j<WIDTH; j++)
image[i*WIDTH+j] = 255;
© 2014 MVTec Software GmbH, München
76
Datenstrukturen für Bilder
 Optimierungen bei linearisierten Arrays:
 Direkter Zugriff über linearisierte Koordinaten:
BYTE *image;
for (l=0; l<WIDTH*HEIGHT; l++)
image[l] = 255;

Zugriff über Pointer:
BYTE *image, *p, *e;
p = image; e = image+WIDTH*HEIGHT;
for (; p<e;)
*p++ = 255;

Zugriff über Pointer mit Loop-Unrolling
BYTE *image, *p, *e;
p = image; e = image+WIDTH*HEIGHT;
for (; p<e; p+=4) {
p[0] = 255; p[1] = 255; p[2] = 255; p[3] = 255;
}
© 2014 MVTec Software GmbH, München
77
Datenstrukturen für Bilder
640x480-Bild mit weiß initialisieren
16
14
12
10
Pentium II, 400 MHz
MIPS R4400, 250 MHz
UltraSparc-II, 296 MHz
PA-RISC 2.0, 180 MHz
ms 8
6
4
2
0
BYTE [][]
BYTE **
BYTE *,
mult
BYTE *,
lin
BYTE *,
ptr
BYTE *,
unroll
© 2014 MVTec Software GmbH, München
78
Grauwerttransformationen
 Oft ist es notwendig, die Grauwerte eines Bildes zu modifizieren,
um die Merkmale eines Objektes leichter extrahierbar zu machen
 Schwacher Kontrast
 Veränderter Kontrast oder Helligkeit im Vergleich zum
Zeitpunkt, als das System eingerichtet wurde
 Ungleichmäßige Beleuchtung
 Die angewendeten Grauwerttransformationen sind
Punktoperationen, d.h. der veränderte Grauwert t r ,c bestimmt sich
aus dem Eingabegrauwert g r ,c wie folgt:
t r ,c  f ( g r ,c )
 Beispiel: Gamma-Korrektur
1
 g 
f ( g )  255  

 255 
© 2014 MVTec Software GmbH, München
79
Grauwerttransformationen
 Alle Grauwerttransformationen lassen sich für Byte-Bilder am
effizientesten über Look-Up-Tabellen (LUTs) implementieren:
BYTE *in, *out, *p, *q, *e;
BYTE *lut;
for (i=0; i<256; i++)
lut[i] = f(i);
p = in; e = in+WIDTH*HEIGHT; q = out;
for (; p<e;)
*q++ = lut[*p++];
 Wichtigste Transformation: Lineare Grauwertskalierung
f ( g )  ag  b
 Bei Byte-Bildern muß der Grauwert korrekt begrenzt (geclippt)
werden
f ( g )  min(max( ag  b,0),255)
© 2014 MVTec Software GmbH, München
80
Grauwerttransformationen
 Kontrastnormierung: lineare Grauwertskalierung, so daß Kontrast
maximal ist
 Wird eingesetzt, um Algorithmen beleuchtungsinvariant zu machen
(z.B. OCR)
 Sei g min der minimale und g max der maximale Grauwert des Bildes
 Dann ist die Transformation
f (g) 
255
( g  g min )
g max  g min
  a  255 ( g max  g min ) , b   ag min
 Strenggenommen ist die Kontrastnormierung keine
Punktoperation mehr
© 2014 MVTec Software GmbH, München
81
Beispiel für lineare Grauwerttransformationen
Ausgangsbild
Weniger Kontrast (a  1)
Heller ( b  0 )
Mehr Kontrast (a
Dunkler ( b  0 )
 1)
Maximaler Kontrast
© 2014 MVTec Software GmbH, München
82
Robuste Kontrastnormierung
 Problem bei Kontrastnormierung: Oft gibt es einige, wenige Pixel,
die sehr hell oder sehr dunkel sind, z.B. Glanzlichter oder Schatten
 Diese Pixel verhindern, daß das Bild auf den optimalen
Grauwertbereich skaliert wird
 Lösung: Berechnung des Histogramms der Grauwerte, d.h. der
relativen Häufigkeit ( Wahrscheinlichkeit) der im Bild
vorkommenden Grauwerte und des kumulativen Histogramms
( Dichte)
n
hi  i ,
n

i
ci   h j
j 0
g min und g max werden bestimmt, indem die untersten pl % und
obersten pu% der Grauwerte ignoriert werden (p%-Quantil), z.B.
pl  5 und pu  10
 Konzeptuell entspricht dies dem Schnitt des kumulativen
Histogramms mit den Geraden y  pl 100 und y  1  pu
© 2014 MVTec Software GmbH, München
83
100
Beispiel für robuste Kontrastnormierung
0.045
Histogramm
0.04
Relative Häufigkeit
0.035
0.03
0.025
0.02
0.015
0.01
0.005
0
0
50
100
150
200
250
Grauwert
1
Kumulierte Häufigkeit
0.8
Kumulatives Histogramm
p=5%
p=90%
0.6
0.4
0.2
0
0
50
100
150
200
250
Grauwert
© 2014 MVTec Software GmbH, München
84
Shading-Korrektur
 Manchmal ist es nicht möglich, eine gleichmäßige Beleuchtung zu
erreichen, z.B. bei Beschriftungen auf runden Objekten (Flaschen)
 Unter Umständen ist es möglich, die Ungleichmäßigkeit der
Beleuchtung durch ein Modell zu beschreiben, z.B.
f (r , c)  r 2  rc  c 2  r  c
 Die Parameter müssen aus einem Referenzbild, das ein Objekt
konstanter Reflektanz enthält, bestimmt werden
 Zur Laufzeit kann die Ungleichmäßigkeit in jedem Bildpunkt
korrigiert werden
t r ,c  g r ,c  f ( r , c )
 Meistens kann die Ungleichmäßigkeit jedoch nicht durch ein
Modell beschrieben werden
 In diesem Fall kann das Referenzbild f r ,c direkt zur Korrektur
verwendet werden
t r ,c  g r ,c  f r ,c  max f r ,c
r ,c
© 2014 MVTec Software GmbH, München
85
Beispiel für Shading-Korrektur
Referenzbild
Eingabebild
Korrigiertes Bild
© 2014 MVTec Software GmbH, München
86
Helligkeits- und Kontrastausgleich
 Explizite Kontrastnormierung ist nur notwendig, wenn die
resultierenden Grauwerte die entscheidenden Merkmale sind
 Oft genügt es, die Helligkeits- und Kontraständerungen den
weiteren Verfahrensschritten (z.B. der Segmentierung) zur
Verfügung zu stellen
 Vorteil: Die Grauwerttransformation wird eingespart
 Die entsprechenden Parameter können aus — vorzugsweise
homogenen — Referenzgebieten des Bildes bestimmt werden
 Für additive Änderungen genügt ein Referenzgebiet
 Für lineare Änderungen werden zwei Gebiete mit unterschiedlichen
Grauwerten benötigt
 In den Referenzgebieten wird der mittlere Grauwert bestimmt
 Die Parameter der Transformation sind
a
g1  g 2
, b  r2  ag 2
r1  r2
r1 , r2 : Grauwerte im Ausgangsbild
g1 , g 2 : Grauwerte im aktuellen Bild
© 2014 MVTec Software GmbH, München
87
Helligkeits- und Kontrastausgleich
Referenzbild und -region
Segmentierung
Aktuelles Bild
Segmentierung
Korrigierte Segmentierung
© 2014 MVTec Software GmbH, München
88
Bildglättung
 Bildglättungsoperatoren werden verwendet, um Rauschen im Bild
zu unterdrücken
 Als Rauschen werden die zufälligen Änderungen der Grauwerte
des Bildes betrachtet, die auf vielerlei Ursachen beruhen,
insbesondere aber der Zufälligkeit des Photonenflusses
 Rauschen kann als stationärer Zufallsprozeß angesehen werden
 In jedem Pixel: gˆ r ,c  g r ,c  nr ,c , wobei nr ,c eine Zufallsvariable mit
2
Mittelwert 0 und Varianz  ist
 Rauschunterdrückung kann als stochastischer Schätzprozeß
aufgefaßt werden
 Offensichtlichste Methode, um Rauschen zu verringern: Aufnahme
von mehreren Bildern und Mittelung aller Aufnahmen  Mittelung
über die Zeit: Erwartungstreuer Schätzer
 Theorie der stochastischen Prozesse  Falls der Zufallsprozeß
ergodisch ist, kann der Mittelwert über die Zeit durch den
Mittelwert über den Ort ersetzt werden (hier angenommen)
© 2014 MVTec Software GmbH, München
89
Mittelwertfilter
 Mittelung über die Zeit:
g r ,c
1 n
  gˆ r ,c;i
n i 1
 Nachteil: Es werden n Bilder benötigt
 Varianz des Rauschens wird um den Faktor n verkleinert
 Mittelung über den Ort:
g r ,c
n
1


(2n  1)(2m  1) i   n
m
 gˆ
j  m
r i ,c  j
 Varianz des Rauschens wird um den Faktor ( 2n  1)(2m  1)
verkleinert
© 2014 MVTec Software GmbH, München
90
Vergleich räumliche–zeitliche Mittelung
Eingabebild
Mittelung über 20 Bilder
5×5 Mittelwertfilter
Rauschen (5-fach verstärkt)
© 2014 MVTec Software GmbH, München
91
Vergleich räumliche–zeitliche Mittelung
Bildzeile
250
200
Grauwert
Grauwert
200
150
100
50
0
0
5
10
15
20
25
30
35
Position entlang einer Zeile
Räumliche Mittelung
100
0
40
0
5
10
15
20
25
30
35
Position entlang einer Zeile
Bildzeile
Zeitliche Mittelung
Räumliche Mittelung
40
0
5
10
15
20
25
30
Position entlang einer Zeile
40
250
200
Grauwert
200
Grauwert
150
50
250
150
100
50
0
Zeitliche Mittelung
250
150
100
50
0
5
10
15
20
25
30
Position entlang einer Zeile
35
40
0
© 2014 MVTec Software GmbH, München
92
35
Effekt von Line-Jitter
Eingabebild
Eingabebild
Starkes Rauschen an vert. Kanten
Normales Rauschen an horiz. Kanten
© 2014 MVTec Software GmbH, München
93
Implementierung Mittelwertfilter
 1. Implementierung des Mittelwertfilters:
a = (2*n+1)*(2*m+1);
for (r=0; r<height; r++) {
for (c=0; c<width; c++) {
s = 0;
for (i=-n; i<=n; i++) {
for (j=-m; j<=m; j++) {
l = HLinCoor(r-i,c-j,width);
s += in[l];
}
}
l = HLinCoor(r,c,width);
out[l] = s/a;
}
}
 Anzahl Operationen: O (whnm ) , z.B. w=640, h=480, n=m=5 
37.171.200 Operationen
© 2014 MVTec Software GmbH, München
94
Randbehandlung bei Filtern
 Problem: Am Rand des Bildes ragt die Maske des Filters über das
Bild hinaus
 Lösungsansätze:
 Filter nur auf den Pixeln ausrechnen, in denen alle Maskenpixel
im Bild liegen
  Ausgabebild ist kleiner als Eingabebild
 Grauwerte außerhalb des Bildes als konstant ansehen, z.B. 0
  Unerwünschte Randeffekte: Bild wird nach Mittelwertfilterung
am Rand dunkler
 Bild mit dem Grauwert des Randes fortsetzen
  Etwas komplizierte Implementierung
 Bild am Rand spiegeln
  Einfache und effiziente Implementierung (nur für Randpixel!):
#define BC(c) ((c) < 0 ? -(c) : (c) >= width ? (2*width-(c)-2))
image[HLinCoor(BR(r),BC(c),width)]
© 2014 MVTec Software GmbH, München
95
Implementierung Mittelwertfilter
 Hohe Laufzeitkomplexität der 1. Implementierung
 Verbesserung durch „scharfes Ansehen“ der Formel:
g r ,c
n
1


( 2n  1)(2m  1) i   n
m
 gˆ
j  m
r i ,c  j
n  m

1

ˆ
g r i ,c  j 




(2n  1)(2m  1) i   n  j   m

 

zwischenspeichern
 Große Teile der Rechenarbeit können eingespart werden, wenn
Zwischenergebnisse, die immer wieder berechnet werden,
zwischengespeichert werden
 Falls eine Umformung der obigen Art möglich ist, spricht man von
Separierbarkeit
 Anzahl Operationen: O ( wh ( n  m)) , z.B. w=640, h=480, n=m=5 
6.758.400 Operationen
© 2014 MVTec Software GmbH, München
96
Implementierung Mittelwertfilter
 2. Implementierung des Mittelwertfilters:
a = (2*n+1)*(2*m+1);
for (r=0; r<height; r++) {
for (c=0; c<width; c++) {
s = 0;
for (j=-m; j<=m; j++)
s += in[HLinCoor(r,c-j,width)];
tmp[HLinCoor(r,c,width)] = s;
}
}
for (r=0; r<height; r++) {
for (c=0; c<width; c++) {
s = 0;
for (i=-n; i<=n; i++)
s += tmp[HLinCoor(r-i,c,width)];
out[HLinCoor(r,c,width)] = s/a;
}
}
© 2014 MVTec Software GmbH, München
97
Implementierung Mittelwertfilter
 Laufzeitkomplexität der 2. Implementierung kann noch weiter
verbessert werden
 Betrachtung der eindimensionalen Summen:
t r ,c
t r ,c 
gˆ r ,c  m
m
 gˆ
j m
r ,c  j
 t r ,c 1  gˆ r ,c  m  gˆ r ,c  m 1
gˆ r ,c m 1
t r ,c 1
 Es sind nur zwei Operationen pro Zeilen- oder Spaltensumme
notwendig
 Die erste Summe muß jeweils vollständig berechnet werden
 Anzahl Operationen: O (wh ) , z.B. w=640, h=480, n=m=5 
1.238.800 Operationen
 Rekursive Implementierung
© 2014 MVTec Software GmbH, München
98
Implementierung Mittelwertfilter
 3. Implementierung des Mittelwertfilters (Teil 1):
a = (2*n+1)*(2*m+1);
for (r=0; r<height; r++) {
s = 0;
for (j=-m; j<=m; j++)
s += in[HLinCoor(r,j,width)];
tmp[HLinCoor(r,0,width)] = s;
for (c=1; c<width; c++) {
l = HLinCoor(r,c,width);
tmp[l] = tmp[l-1]+in[l+n]-in[l-n-1];
}
}
© 2014 MVTec Software GmbH, München
99
Implementierung Mittelwertfilter
 3. Implementierung des Mittelwertfilters (Teil 2):
for (c=0; c<=width; c++) {
s = 0;
for (i=-n; i<=n; i++)
s += tmp[HLinCoor(i,c,width)];
out[HLinCoor(0,c,width)] = s;
for (r=1; r<height; r++) {
l = HLinCoor(r,c,width);
out[l] = out[l-width]+tmp[l+n*width]-tmp[l-(n-1)*width];
}
for (r=0; r<height; r++)
out[l] /= a;
}
© 2014 MVTec Software GmbH, München
100
Glättungsfilter
Frequenzantwort
 Aus theoretischer Sicht ist der Mittelwertfilter nicht der optimale
Glättungsfilter, da er kein perfekter Tiefpaßfilter ist, d.h. hohe
Frequenzanteile des Rauschens werden nicht vollständig
unterdrückt
 Außerdem ist der Mittelwertfilter nicht rotationsinvariant: diagonale
Strukturen werden weniger stark geglättet als horizontale und
vertikale Strukturen
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.4 -0.2
0
0.2
0.4
-0.2
-0.4
0
0.2
0.4
Frequenzverhalten des 3×3-Mittelwertfilters
© 2014 MVTec Software GmbH, München
101
Glättungsfilter
 Allgemeine Glättungsfilter sind Operatoren L (t , f ) , die das Bild
f ( p) in Abhängigkeit von einem Parameter t glätten (beim
Mittelwertfilter entspricht t der Maskengröße)
 Wünschenswerte Eigenschaften eines Glättungsfilters:
 Linearität: (Mittelwertfilter )
L(t , af ( p)  bg ( p))  aL (t , f ( p))  bL (t , g ( p))

Positionsinvarianz: (Mittelwertfilter )
L(t , f ( p  c ))(q )  L (t , f ( p))(q  c )

Rotationsinvarianz: (Mittelwertfilter )

Halbgruppeneigenschaft: (Mittelwertfilter )

L(t  s, f )  L(t , L( s, f ))  L ( s, L(t , f ))
Vernichtung von Maxima mit größeren t : Formalisierung der
L(t , f ( R ( p)))(q )  L(t , f ( p))( R (q ))
Glättungseigenschaft (Mittelwertfilter )
© 2014 MVTec Software GmbH, München
102
Lineare Filter
 Lineare Filter lassen sich durch Faltung (convolution) berechnen
 Definition im 1D:

f  h  ( f  h)( x) 
 f (t )h( x  t ) dt

 Beispiel Mittelwertfilter:
1 (2 w)
h( x )  
 0
x w
x w
 h heißt Faltungskern (convolution kernel)
 Eigenschaften:
f h  h f
( f  h )  f  h   f   h
© 2014 MVTec Software GmbH, München
103
Faltung
0.4
0.4
g(x)
0.3
0.3
0.2
0.2
Spiegeln &
0.1
0
Verschieben
-0.1
-0.3
-2
-1
0
1
2
3
4
0.4
-0.1
-0.3
-0.4
-4
(f*g)(x)
0.5
0
-0.2
-3
0.6
0.1
-0.2
-0.4
-4
g(1-x)
0.3
0.2
0.1
-3
-2
-1
0
1
2
3
0
4
-0.1
-0.2
-4
1.2
-2
-1
0
1
2
f(x)
1
Multiplizieren
0.8
0.6
Für alle x
0.4
0.2
0.6
0
-0.2
-4
-3
f(x)*g(1-x)
0.5
-3
-2
-1
0
1
2
3
4
0.4
0.3
Integrieren
0.2
0.1
0
-0.1
-0.2
-4
-3
-2
-1
0
1
2
3
4
© 2014 MVTec Software GmbH, München
104
Funktionswert
für ein x
3
4
Faltung
 Faltung für zweidimensionale Funktionen (Bilder):
 
f h 
  f (u, v)h(r  u, c  v) du dv
  
 Faltung im Diskreten:
f h 


 f
i   j  
h
i , j r i ,c  j
 Für reale Bilder muß gelten: hr ,c  0 für hinreichend große r und c
 Mittelwertfilter:
hr ,c
1


  (2m  1)(2n  1)

0
r  n c  m
sonst
© 2014 MVTec Software GmbH, München
105
Faltung
 Falls h( r , c )  s ( r )t (c ) (bzw. g r ,c  sr t c ), heißt h separierbar
 Wie beim Mittelwertfilter wird dadurch eine wesentlich effizientere
Implementierung der Faltung ermöglicht:
 n

f  h    f i , j hr i ,c  j    f i , j sr i tc  j   sr i   f i , j tc  j 
i n j  n
i  n j  n
i  n
 j  n

2
2 2
 Komplexität: O(nk ) statt O ( n k ) ( k : Bildgröße, n : Maskengröße)
n
n
n
n
n
 Nicht jeder lineare Filter kann separiert werden
 Offensichtliche Frage: Kann die rekursive Implementierung des
Mittelwertfilters auf alle linearen Filter verallgemeinert werden?
 Antwort: Leider nein!
 Nur für bestimmte Filtertypen existiert eine rekursive Variante:
m 1
m
u   b f k i   a u

k
i 0

i
i 1
 
i k i
m 1
m
u  b f k i   aiuk i

k
i 0

i
i 1
f  h  u k  uk  uk
© 2014 MVTec Software GmbH, München
106
Gauß-Filter
 Erwünschte Eigenschaften des Glättungsfilters:
Positionsinvarianz, Rotationsinvarianz, Halbgruppeneigenschaft,
Vernichtung von Maxima
 Der Gauß-Filter ist der einzige Filter, der alle Eigenschaften erfüllt
 Eindimensionaler Gauß-Filter:
g ( x ) 
1
e
2 
x2
 2
2
 Zweidimensionaler Gauß-Filter
g ( r , c ) 
1
2
2
e
r 2 c 2

2 2

1
e
2 
r2
 2
2
1
e
2 
c2
 2
2
 g  ( r ) g  (c )
 Gauß-Filter sind separierbar
 Gauß-Filter sind (leider) nur in Näherung rekursiv implementierbar
© 2014 MVTec Software GmbH, München
107
Gauß-Filter
0.4
g (x)
g ( r , c )
0.3
0.16
0.12
0.08
0.04
0
0.2
0.1
-4
0
-4
-3
-2
-1
0
1
2
1D-Gauß-Filter, =1
3
-2
0
4
2
4-4
-2
2D-Gauß-Filter, =1
© 2014 MVTec Software GmbH, München
108
0
2
4
Gauß-Filter im Diskreten
 Häufig gewählte Art der Berechnung der diskreten Koeffizienten
des Gauß-Faltungskerns: Abtastung (sampling) an diskreten
Stützstellen: g i  g (i )
 Maskengröße n bestimmt durch g n  
 Problem: Normierung: Es muß gelten 1  g  1
 Normierung durch
n
g
i  n
i
1
 Andere Möglichkeit der Berechnung der diskreten Koeffizienten:
Bild wird als stückweise konstante Funktion betrachtet 
gi 
i  12
1
1
g
(
t
)
dt


(
i

)


(
i




2
2)

i  12
 Maskengröße n bestimmt durch  ( n)  
 Vorteil: Automatische Normalisierung
© 2014 MVTec Software GmbH, München
109
Rauschunterdrückung bei linearen Filtern
 Wie beim Mittelwertfilter wird die Stärke des Rauschens durch
allgemeine lineare Filter verändert
2
 Sei nr ,c das Bildrauschen mit Mittelwert 0 und Varianz  n
 Das Rauschen des mit einem linearen Filter h ( r , c ) bzw. hr ,c
geglätteten Bildes ist
~  
2
n
 
2
n

 h(r , c) dr dc
2
~  
2
n
bzw.
2
n
  



 hr ,c
2
r  c  
 n×n Mittelwertfilter (n ungerade):
~n2   n2
n 1
2
n1
2
n1
2
2
n1
2
1
 1 
2
2 1
 2  n   4 n 2


n
i   n21 j   n21  n 
i   n21 j   n21 n
 Gauß-Filter:
 
~n2   n2   g (r , c) 2 dr dc   n2
  
1
4 2
 
© 2014 MVTec Software GmbH, München
110
n
2 
Vergleich Mittelwertfilter–Gaußfilter
Eingabebild
Mittelwertfilter
Gaußfilter
250
200
Grauwert
Grauwert
200
150
100
150
100
50
50
0
Mittelwertfilter
Gaußfilter
250
0
5
10
15
20
25
30
Position entlang einer Zeile
35
Mittelwert: 5×5, Gauß: =1,41
40
0
0
5
10
15
20
25
30
Position entlang einer Zeile
35
Mittelwert: 13×13, Gauß: =3,67
© 2014 MVTec Software GmbH, München
111
40
Medianfilter
 Der Mittelwertfilter kann auch als statistischer Schätzer für den
Erwartungswert der Grauwerte innerhalb der Filtermaske
angesehen werden
 Aus der Statistik sind auch andere Schätzer bekannt, z.B. der
Median
 Der Median einer Wahrscheinlichkeitsverteilung ist derjenige Wert,
für den 50% der Werte der Wahrscheinlichkeitsverteilung über dem
Wert liegen und 50% darunter
 Für diskrete Verteilungen (z.B. Grauwerte innerhalb einer
Filtermaske) kann der Median konzeptuell durch Sortieren der
Elemente und durch Auswahl des mittleren Elementes erfolgen
 Seien oi , i  0, , n  1 die sortierten Werte der diskreten Verteilung
g i (n ungerade)
 Dann ist der Median definiert als: median ( g i )  on / 2
© 2014 MVTec Software GmbH, München
112
Medianfilter
 Der Medianfilter kann für rechteckige Masken für Byte-Bilder
rekursiv in O (wh) implementiert werden (Perreault und Hébert,
2007)
 Für allgemeine Filtermasken ist eine rekursive Implementierung
mit der Komplexität eines separierbaren Filters (O (whn) ) möglich
 Der Medianfilter kann neben der Glättung auch zum Entfernen von
Objekten, die weniger als 50%
der Filtermaske abdecken,
verwendet werden
 Der Medianfilter kann dadurch
aber auch unerwartete Ergebnisse
liefern
 Der Medianfilter erhält die
Kantenschärfe besser als der
Mittelwert- und der Gaußfilter
3×3-Medianfilter
© 2014 MVTec Software GmbH, München
113
Medianfilter
Eingabebild
200
Grauwert
Grauwert
200
150
100
150
100
50
50
0
Bildzeile
Medianfilter
250
Bildzeile
Medianfilter
250
0
5
10
15
20
25
30
Position entlang einer Zeile
Medianfilter 5×5
35
40
0
0
5
10
15
20
25
30
Position entlang einer Zeile
Medianfilter 13×13
© 2014 MVTec Software GmbH, München
114
35
40
Positions- und Rotationskorrektur
 In den meisten Anwendungen kann nicht garantiert werden, daß
die zu untersuchenden Objekte in derselben Lage (Position und
Drehung) im Bild erscheinen
 Die Bildverarbeitungsalgorithmen müssen diese Schwankungen
handhaben können
 Manche Algorithmen können Objekte nur in einer bestimmten
Standardlage und -größe verarbeiten, z.B. OCR
  Die Lage des aktuellen Objektes muß durch
Vorverarbeitungsschritte erkannt werden
 Die erkannte Position muß entweder dazu verwendet werden, die
Algorithmen anzupassen, z.B. um Suchbereiche zu modifizieren,
oder die Objekte in die erforderliche Standardlage zu
transformieren
 Lageerkennung erfordert Segmentierung  spätere Vorlesungen
 Hier zunächst: Transformation von Bildern
© 2014 MVTec Software GmbH, München
115
Affine 2D-Transformationen
 Die meisten „interessanten“ Transformationen lassen sich als
affine 2D-Transformationen darstellen
 Verschiebungen
 Rotationen
 Skalierungen
 Scherungen
 Affine Abbildung:
r   a11
~
 ~   
 c   a21
a12  r   t r 
    
a22  c   tc 
 Vereinheitlichte Darstellung durch homogene Koordinaten:
r   a11
~
~ 
 c    a21
1  0
  
a12
a22
0
a13  r 
 
a23  c 
1  1 
© 2014 MVTec Software GmbH, München
116
Affine 2D-Transformationen
 Vorteil homogener Koordinaten: Alle affinen Abbildungen lassen
sich durch einfache Matrixmultiplikation aufbauen
 Letzte Zeile der Vektoren und Matrizen wird natürlich nicht
abgespeichert
 a13 und a23 sind die Translationsparameter t r und tc
 Grundtransformationen:
 1 0 tr 


 0 1 tc 
 sr

0
Translation
 cos 

 sin 
 sin 
cos 
Rotation um 
0
sc
0

0
Skalierung in Zeile und Spalte
0

0
 cos 

 sin 
0 0

1 0
Scherung der Zeilen-Achse um 
© 2014 MVTec Software GmbH, München
117
Affine Transformationen von Bildern
 Bilder werden transformiert, indem für jeden Punkt im Ergebnisbild
berechnet wird, wo er im Eingabebild liegt und ein entsprechender
Grauwert zugewiesen wird
 Der umgekehrte Weg ist nicht möglich, da es extrem kompliziert
ist, sicherzustellen, daß jedes Pixel im Ergebnisbild einen
Grauwert zugewiesen bekommt
 Da einem Pixel im Zielbild normalerweise nicht genau ein Pixel im
Eingabebild entspricht, muß der Grauwert interpoliert werden
Eingabebild
Transformiertes Eingabebild
Ergebnisbild
© 2014 MVTec Software GmbH, München
118
Nearest-Neighbor-Interpolation
 Im einfachsten Fall wird der Grauwert im Ergebnisbild aus dem
Grauwert des nächstgelegenen Pixels im Eingabebild bestimmt
(Nearest-Neighbor-Interpolation)
 Problem: Bei Vergrößerungen und Rotationen treten unerwünschte
„Treppenstufen“ auf
Eingabebild
p00
p01
p10
p11
Auszurechnendes Pixel
Nächster Pixelmittelpunkt
im Eingabebild
© 2014 MVTec Software GmbH, München
119
Nearest-Neighbor-Interpolation
© 2014 MVTec Software GmbH, München
120
Bilineare Interpolation
 Nearest-Neighbor-Interpolation führt zu Unstetigkeiten, da das Bild
als stückweise konstant angesehen wird
 Bessere Lösung: Bilineare Interpolation der Grauwerte
g~  b(ag11  (1  a) g 01 )  (1  b)(ag10  (1  a ) g 00 )
Eingabebild
Abstände zu den Pixelmittelpunkten
im Eingabebild
1-b
p00
Auszurechnendes Pixel
b
p01
a
1-a
p10
© 2014 MVTec Software GmbH, München
121
p11
Bilineare Interpolation
© 2014 MVTec Software GmbH, München
122
Glättung bei Verkleinerungen
 Problem: Bei Verkleinerungen kann es zu sog. Aliasing-Effekten
kommen, bei denen ein falscher Bildinhalt „vorgetäuscht“ wird
Amplitude
Amplitude
Originale Funktion
Alias
t
t
Samples
Unterschiedliche Strichbreiten
© 2014 MVTec Software GmbH, München
123
Glättung bei Verkleinerungen
 Bei Verkleinerungen muß das Bild geeignet geglättet werden
 Vorherige Anwendung eines Glättungsfilters ist nicht befriedigend,
da die Subpixel-Position der zurücktransformierten Punkte im
Eingabebild nicht berücksichtigt wird
 Unterteilung der Pixel nach Grad der Verkleinerung und
Gleichgewichtung: n  d , m  d
 1
Eingabebild

2

d1
1
d2
1
Auszurechnendes Pixel
mit Unterteilung
1
Abtastpunkte
Gewichte
© 2014 MVTec Software GmbH, München
124
1
Glättung bei Verkleinerungen
Keine Glättung
Gleichgewichtete Glättung
© 2014 MVTec Software GmbH, München
125
Glättung bei Verkleinerungen
 Gleichgewichtete Glättung entspricht einer Mittelwertfilterung und
liefert für manche Anwendungen nicht die gewünschten Resultate
 Lösung: Überlappende Unterteilung der Pixel mit ( 2n  1)  ( 2m  1)
statt n  m Abtastpunkten und Verwendung besser glättender
Gewichte wi , j  min(i ,2m  i )  min( j ,2n  j ) (entspricht in etwa
Gaußscher Glättung)
Eingabebild
Auszurechnendes Pixel
1
Vergrößerte Pixelregion
mit Unterteilung
2
4
2
1
Abtastpunkte
1
2
2
Gewichte
© 2014 MVTec Software GmbH, München
126
1
Glättung bei Verkleinerungen
Gleichgewichtete Glättung
Gaußsche Glättung
© 2014 MVTec Software GmbH, München
127
Projektive Transformation von Bildern
 Eine Verallgemeinerung der affinen Abbildungen sind die
projektiven Abbildungen
 In homogenen Koordinaten:
r   h11 h12 h13  r 
~
 
~ 
 c    h21 h22 h23  c 
~   h h h  w 
w
   31 32 33  
 Die Punkte r , c, w und  r , c, w werden als äquivalent
angesehen (falls   0 )
~ geteilt
 Zur Transformation in inhomogene Punkte muß durch w
werden
 Projektive Transformation in inhomogenen Koordinaten
T
T
r
 h11r  h12 c  h13 
~
1


 ~  
 c  h31r  h32 c  h33  h21r  h22 c  h23 
© 2014 MVTec Software GmbH, München
128
Projektive Transformation von Bildern
 Projektive Abbildungen können eindeutig aus vier
Punktkorrespondenzen bestimmt werden
 Beispiel: Rektifizierung von Nummernschildern auf ein Rechteck
Eingabebild
Eingabebild
Rektifiziertes Nummernschild
Rektifiziertes Nummernschild
© 2014 MVTec Software GmbH, München
129
Polartransformation von Bildern
 In manchen Anwendungen müssen Bilder von kreisförmigen
Objekten so transformiert werden, daß konzentrische Kreise auf
horizontale Geraden abgebildet werden
 Beispiel: Lesen von kreisförmig aufgebrachter Schrift
 Hierzu dient die Polartransformation
 Sei ( mr , mc ) das Zentrum der Transformation
 Dann wird der Punkt ( r , c ) abgebildet auf seine Polarkoordinaten
d  ( r  mr ) 2  (c  mc ) 2
  atan2( r  mr , c  mc )
 Wie bei den anderen Transformationen erfolgt die Transformation
von Bildern mittels der inversen Transformation
r  mr  d sin 
c  mc  d cos 
© 2014 MVTec Software GmbH, München
130
Polartransformation von Bildern
Eingabebild
Polartransformation um den Mittelpunkt des Objektivs
© 2014 MVTec Software GmbH, München
131
Zusammenfassung Bildverbesserung
 Wichtige Punkte, die man sich merken sollte
 Grauwerttransformationen, LUTs, (robuste) Kontrastnormierung,
Shading-Korrektur bei ungleichmäßiger Beleuchtung
 Bildglättung: Unterschied Mittelwert- und Gaußfilter
 Separierte und rekursive Implementierung linearer Filter
(Laufzeitkomplexität)
 Rauschunterdrückungseigenschaften bei linearen Filtern
 Affine und projektive Transformationen von Bildern
 Polartransformation von Bildern
© 2014 MVTec Software GmbH, München
132
Autor
Document
Kategorie
Uncategorized
Seitenansichten
32
Dateigröße
4 603 KB
Tags
1/--Seiten
melden