Ausarbeitung des Praktikums fr das Fach Signal- und
BildverarbeitungBetreuer: Studiengang: Prof. Dr. Dietmar Brck
Master Mechatronik / Sensortechnik Masterstudiengang
Datum der Abgabe: 2. Mrz, 2012 Autoren: Gonzalo Aceves B.Sc.
Dipl.-Ing. Sargon Youssef 3568709 3406644
InhaltEinleitung.................................................................................................................................................
3 Unsere
Bildverarbeitungssoftware..........................................................................................................
4 1. Binre LUT
.......................................................................................................................................
5 2. Quadratische LUT
................................................................................................................................
6 3. Wurzelfunktion
LUT.............................................................................................................................
8 4. Lineare Skalierung
...............................................................................................................................
9 5. Kontrastnormierung
..........................................................................................................................
11 6. Addition mit Absolutwert
..................................................................................................................
13 7. Addition mit negativem Clipping
.......................................................................................................
14 8. Subtraktion mit Absolutwert
.............................................................................................................
15 9. Subtraktion mit positivem Clipping
...................................................................................................
16 10. Glttungsfilter
.................................................................................................................................
17 11.
Kantenfilter......................................................................................................................................
23 Fazit
...................................................................................................................................................
33
Seite 2 von 33
EinleitungIm Zuge der Vorlesung Signal- und Bildverarbeitung gab
es die Mglichkeit, das theoretisch erlernte Wissen mittels eines
3-tagigen Praktikums praktisch anzuwenden. Zur Verfgung steht das
Skript Automatisierungstechnisches Praktikum II / Industrielle
Bildverarbeitung. Die Durchfhrung des Praktikums erfolgte mit der
Entwicklungsumgebung Microsoft Visual Studio 2008 C++ und der MFC
von Microsoft. Des Weiteren stand die Software-Plattform Common
Vision Blox zur Verfgung. Weitere Informationen finden sich in dem
Skript Automatisierungstechnisches Praktikum II / Industrielle
Bildverarbeitung und den darin enthaltenen Literaturhinweisen.
Seite 3 von 33
Unsere BildverarbeitungssoftwareDie Aufgabenstellungen im
Praktikumsskript dienen als Vorlage der Funktionen der
Bildverarbeitungssoftware. Insgesamt wurden 14 Teilfunktionen in
der Software implementiert, wie folgt:
1. 2. 3. 4. 5. 6. 7.
Binre LUT Quadratische LUT Wurzelfunktion LUT Lineare Skalierung
Kontrastnormierung Addition mit Absolutwert Addition mit negativem
Clipping
8. 9. 10. 11. 12. 13. 14.
Subtraktion mit Absolutwert Subtraktion mit positivem Clipping
Glttungsfilter Kantenfilter User-Filter Histogramm Statistiken
1
2 4
13 3
14
5 10 11
12 6 8Abbildung 1
7 9
Seite 4 von 33
1. Binre LUTDie Bildverarbeitungssoftware soll ein Eingangsbild
mit Hilfe einer LUT in ein Binrbild umwandeln. Hierfr werden die
Grauwerte mit einem Schwellwert verglichen. Ist der Grauwert an
einer Stelle im Bild kleiner als der Schwellwert, wird dieser
Grauwert auf 0 gesetzt. Ist der Grauwert an einer Stelle im Bild
grer als der Schwellwert, wird dieser Grauwert auf 255 gesetzt. Mit
Hilfe des Schwellwertes wird eine LUT (binLUT*i+) erzeugt. Die
erzeugte LUT wird an die Funktion LUT8 bergeben. Abbildung 2 zeigt
das Ergebnis nach Anwendung der Operation Binre LUT. Das
Ausgangsbild besteht nur noch aus den vorgegebenen Grauwerten 0 und
255. Dies erkennt man auch an dem Histogramm, welches lediglich
zwei Peaks an den Stellen 0 und 255 besitzt.
Abbildung 2
void CLUT_BinrDlg::OnBnClickedAusfuehren() { IMG ErgImage;
HRESULT Result; TLUT8 binLUT; int i; long InPlane = 0; //LUT fllen
//Alle Werte unterhalb m_iSchwellwert = 0 for(i=0; i 15) an die
Grenze von 255 kommt, muss dieser Wert normiert werden. Dies
erreicht man durch Division mit 255. Dadurch erhlt man eine
quadratische LUT ber den gesamten Wertebereich. Abbildung 3 zeigt
den Effekt auf das Ausgangsbild. Bedingt durch die Operation
Quadratische LUT wird das Ausgangsbild insgesamt dunkler.
Abbildung 3
Seite 6 von 33
void CLUT_BinrDlg::OnBnClickedQuadLUT() { //Kommentare siehe
"void CLUT_BinrDlg::OnBnClickedAusfuehren()" IMG ErgImage; HRESULT
Result; TLUT8 binLUT; int i; double test; long InPlane = 0;
for(i=0; i 1) ReleaseObject(ErgImage);
CLUT_BinrDlg::OnBnClickedStatistikenOut(); }
Seite 7 von 33
3. Wurzelfunktion LUTAnalog zu 1. und 2. soll die
Bildverarbeitungssoftware eine Wurzelfunktion LUT auf ein
Eingangsbild anwenden knnen. Hierfr wird die Wurzel des Grauwertes
des Eingangsbildes berechnet und in das Ausgangsbild geschrieben.
Da der Grauwert im Ausgangsbild maximal einen Wert von 15 (255)
erreicht, muss dieser Grauwert hnlich wie 2. normiert werden. Dies
erreicht man durch Multiplikation mit 255. Dadurch erhlt man eine
Wurzelfunktion LUT ber den gesamten Wertebereich. Abbildung 4 zeigt
den Effekt auf das Ausgangsbild. Bedingt durch die Operation
Wurzelfunktion LUT wird das Ausgangsbild insgesamt heller.
Abbildung 4
void CLUT_BinrDlg::OnBnClickedWurzel() { IMG ErgImage; HRESULT
Result; TLUT8 binLUT; int i; double test; long InPlane = 0;
for(i=0; i 1) ReleaseObject(ErgImage);
CLUT_BinrDlg::OnBnClickedStatistikenOut(); }
4. Lineare SkalierungMit Hilfe der linearen Skalierung knnen die
Grauwerte modifiziert werden. Der Faktor c1 verschiebt die
Grauwerte (c1 < 0 Verschiebung nach links, c1 > 0
Verschiebung nach rechts), der Faktor c2 streckt/staucht den
Wertebereich (c2 > 0 Streckung, c2 < 0 Stauchung). Abbildung
5 zeigt zwei Histogramme. Das linke Histogramm stellt die Hufigkeit
der Grauwerte des Eingangsbild dar, das rechte Histogramm die
Hufigkeit der Grauwerte des Ausgangsbildes nach Anwendung der
linearen Skalierung mit den Faktoren c1 = -50 und c2 = 1,2.
Abbildung 5
void CLUT_BinrDlg::OnBnClickedLinSkalierung() { IMG ErgImage;
HRESULT Result; TLUT8 binLUT; int i; int LUT_buffer;
Seite 9 von 33
long InPlane = 0; for(i=0; i 1) ReleaseObject(ErgImage);
CLUT_BinrDlg::OnBnClickedStatistikenOut(); }
Seite 10 von 33
5. KontrastnormierungAnalog zu 4. knnen die Faktoren c1 und c2
so gewhlt werden, dass ein Eingangsbild, welches nicht den gesamten
Grauwertebereich abdeckt und somit einen kleinen Kontrast besitzt,
sich nach Anwendung der Operation Kontrastnormierung ber den
gesamten Grauwertebereich erstreckt. Die Kontrastnormierung erfolgt
mittels der Gren des aktuellen Grauwertes und des minimalen und
maximalen Grauwertes gem der Formel im Quellcode. Der Kontrast wird
somit erhht. Abbildung 6 zeigt das Eingangsbild mit
Grauwertverteilung links und das Ausgangsbild nach der Operation
Kontrastnormierung rechts. Man erkennt, dass sich die Grauwerte ber
den gesamten Grauwertebereich verteilen. Der Kontrast des
Ausgangsbildes wurde erhht.
Abbildung 6
void CLUT_BinrDlg::OnBnClickedKontrastnormierung() { IMG
ErgImage; HRESULT Result; TLUT8 binLUT; int i; long InPlane =
0;
Seite 11 von 33
//Einstellungen des Objektes "LightMeter wegen Ermittlung von
Min und Max CLUT_BinrDlg::OnBnClickedHistogrammIN(); //Min und Max
fr Berechnung abspeichern m_iMin = m_cvLightmeter.GetSVMin();
m_iMax = m_cvLightmeter.GetSVMax(); //Berechnung fr
Kontrastnormierung for(i=0; i 1) ReleaseObject(ErgImage);
//Statistiken aktualisieren
CLUT_BinrDlg::OnBnClickedStatistikenOut(); }
Seite 12 von 33
6. Addition mit AbsolutwertDie Addition zweier Bilder mit
Absolutwert bewirkt einen berlauf der Grauwerte. Der Effekt ist
besonders deutlich zu erkennen in Abbildung 7, an den Punkten, an
denen sich das Eingangsbild vom Ausgangsbild unterscheidet (hier
durch weie Strung, wei = GW 255) ist im Ergebnisbild der gleiche
Grauwert wie im Referenzbild vorhanden, da der berlauf an dieser
Stelle den aufaddierten Grauwert ergibt. Diese Funktion wird
mittelsAriLog8to8((IMG)m_cvImgRef.GetImage(),InPlane,(IMG)m_cvImg.GetImage(),InPla
ne,ModeSub,Offset,(IMG)ErgImage) == 0
erreicht. ModeSub gibt hierbei die Operation an, welche
durchgefhrt wird: ModeSub = 3 Addition mit berlauf
Abbildung 7
Seite 13 von 33
7. Addition mit negativem ClippingDie Addition zweier Bilder mit
negativem Clipping bewirkt keinen berlauf der Grauwerte. Grauwerte
ber 255 werden auf 255 gesetzt. Das Bild wird insgesamt heller, wie
in Abbildung 8 zu erkennen ist. Diese Funktion wird
mittelsAriLog8to8((IMG)m_cvImgRef.GetImage(),InPlane,(IMG)m_cvImg.GetImage(),InPla
ne,ModeSub,Offset,(IMG)ErgImage) == 0
erreicht. ModeSub gibt hierbei die Operation an, welche
durchgefhrt wird: ModeSub = 1 Addition ohne berlauf
Abbildung 8
Seite 14 von 33
8. Subtraktion mit AbsolutwertDie Subtraktion zweier Bilder mit
Absolutwert bewirkt einen negativen berlauf der Grauwerte.
Subtraktion mit Absolutwert stellt den Unterschied zweier Bilder
dar (Abbildung 9). Diese Funktion wird
mittelsAriLog8to8((IMG)m_cvImgRef.GetImage(),InPlane,(IMG)m_cvImg.GetImage(),InPla
ne,ModeSub,Offset,(IMG)ErgImage) == 0
erreicht. ModeSub gibt hierbei die Operation an, welche
durchgefhrt wird: ModeSub = 0 Subtraktion mit berlauf
Abbildung 9
Seite 15 von 33
9. Subtraktion mit positivem ClippingDie Subtraktion mit
positivem Clipping bewirkt keinen negativen berlauf der Grauwerte.
Grauwerte unter 0 werden auf 0 gesetzt. Das Bild wird insgesamt
dunkler und bei der Operation Subtraktion mit positivem Clipping
werden lediglich Bildunterschiede deutlich, an den Stellen, an
denen das Eingangsbild dunkler ist, als das Referenzbild (Abbildung
10). Diese Funktion wird
mittelsAriLog8to8((IMG)m_cvImgRef.GetImage(),InPlane,(IMG)m_cvImg.GetImage(),InPla
ne,ModeSub,Offset,(IMG)ErgImage) == 0
erreicht. ModeSub gibt hierbei die Operation an, welche
durchgefhrt wird: ModeSub = 2 Subtraktion ohne berlauf
Abbildung 10
Seite 16 von 33
10. GlttungsfilterGlttungsfilter dienen zur Reduzierung von
Rauschen oder kleinen Strungen (Abbildung 11).
Abbildung 11
Nach Anwendung des 3x3 Mittelwertfilters ist das Rauschen
weniger stark ausgeprgt. Strpixel werden flchenmig vergrert, die
Grauwerte reduzieren sich jedoch. Diese Strpixel sind auf dem weien
Hintergrund weniger auffllig. Der Kontrast des Bildes nimmt ab. Die
Kanten des Quadrates werden weich gezeichnet. Im Vergleich zum 3x3
Mittelwertfilter werden in diesem Bild die Kanten beim 5x5
Mittelwertfilter noch weicher gezeichnet. Der Kontrast nimmt weiter
ab. Grund hierfr ist, dass durch den 5x5 Mittelwertfilter ein
grerer Bereich auf einen Pixel wirkt, d.h. der Grauwert teilt sich
auf eine Flche auf.
Seite 17 von 33
Wird, statt des 3x3 Mittelwertfilter, ein 3x3 Gaufilter
verwendet, zeigt sich, dass das Rauschen weniger reduziert wird
(Abbildung 12). Grund hierfr ist die unterschiedliche Gewichtung
der Pixel des Eingangsbildes. Die umliegenden Pixel erhalten somit
weniger Bedeutung. Die Kanten werden weniger stark weich
gezeichnet. Auch der Kontrast nimmt weniger ab, verglichen mit dem
3x3 Mittelwertfilter. Es geht insgesamt weniger Information
verloren.
Abbildung 12
Die Funktion Userfilter() ist die eigentliche Filterfunktion.
Sie basiert auf der Funktion FilterUser5x5 des Common Vision Blox,
die als Eingangsparameter ein Eingangsbild und eine Filtermaske
bentigt. Die Funktionen Mean3x3, Mean5x5, Gauss3x3 und Gauss5x5
fllen lediglich die Werte der Filtermaske.void
CLUT_BinrDlg::OnBnClickedUserfilter() { double Summe_Faktor = 0;
IMG ErgImage; HRESULT Result; TFilterDef UserFilterMatrix;
Seite 18 von 33
//Vorfaktor aufsummieren //Nur positive Zahlen, da negative
Zahlen zu Aufhebung fhren Summe_Faktor = 0; if(m_lF100 > 0)
Summe_Faktor = Summe_Faktor + m_lF100; . . . if(m_lF144 > 0)
Summe_Faktor = Summe_Faktor + m_lF144; //Matrixelemente an
FilterUser5x5 bearbeiten und bergeben UserFilterMatrix.cLLTT =
(1000/Summe_Faktor)*m_lF100; . . . UserFilterMatrix.cRRBB =
(1000/Summe_Faktor)*m_lF144; UserFilterMatrix.Offst =
(long)m_lOffsetFilter; . . . }
/**************************************************************************
**** 3x3 Mittelwert
***************************************************************************
***/ void CLUT_BinrDlg::OnBnClickedMean3x3() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF111 = 1; m_lF112 = 1;
m_lF113 = 1; m_lF121 = 1; m_lF122 = 1; m_lF123 = 1; m_lF131 = 1;
m_lF132 = 1; m_lF133 = 1; CLUT_BinrDlg::OnBnClickedUserfilter(); }
/**************************************************************************
**** 5x5 Mittelwert
***************************************************************************
***/ void CLUT_BinrDlg::OnBnClickedMean5x5() {
CLUT_BinrDlg::OnBnClickedloeschen();
Seite 19 von 33
m_lF100 m_lF101 m_lF102 m_lF103 m_lF104 m_lF110 m_lF111 m_lF112
m_lF113 m_lF114 m_lF120 m_lF121 m_lF122 m_lF123 m_lF124 m_lF130
m_lF131 m_lF132 m_lF133 m_lF134 m_lF140 m_lF141 m_lF142 m_lF143
m_lF144 }
= = = = = = = = = = = = = = = = = = = = = = = = =
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1;
CLUT_BinrDlg::OnBnClickedUserfilter(); void
CLUT_BinrDlg::OnBnClickedGauss3x3() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF111 = 1; m_lF112 = 4;
m_lF113 = 1; m_lF121 = 4; m_lF122 = 12; m_lF123 = 4; m_lF131 = 1;
m_lF132 = 4; m_lF133 = 1; CLUT_BinrDlg::OnBnClickedUserfilter(); }
void CLUT_BinrDlg::OnBnClickedGauss5x5() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF100 m_lF101 m_lF102
m_lF103 m_lF104 = = = = = 1; 2; 3; 2; 1;
Seite 20 von 33
m_lF110 m_lF111 m_lF112 m_lF113 m_lF114 m_lF120 m_lF121 m_lF122
m_lF123 m_lF124 m_lF130 m_lF131 m_lF132 m_lF133 m_lF134 m_lF140
m_lF141 m_lF142 m_lF143 m_lF144 }
= = = = = = = = = = = = = = = = = = = =
2; 7; 11; 7; 2; 3; 11; 17; 11; 3; 2; 7; 11; 7; 2; 1; 2; 3; 2;
1;
CLUT_BinrDlg::OnBnClickedUserfilter();
Seite 21 von 33
Die Anwendung des 3x3 Mittelwertfilters auf das folgende
Eingangsbild hat folgendes Ausgangsbild zur Folge (Abbildung
13).
Abbildung 13
Die weit auseinanderliegenden Linien rechts im Bild werden
verbreitert und aufgehellt, dass der genaue Ort der Linien nicht
mehr erkennbar ist. Linien, deren Abstand geringer ist, als die
Breite des Filterkerns werden nicht vollstndig unterdrckt, sondern
um den Faktor 3 reduziert. Aufgrund dieser Tatsache ist solch ein
Filter fr verrauschte Bilder mit Barcode Informationen nicht
geeignet.
Seite 22 von 33
Wird, statt des 3x3 Mittelwertfilter, ein 3x3 Gaufilter
verwendet, zeigt sich, dass die Linien weniger verbreitert werden
und insgesamt einen geringeren Grauwert aufweisen (Abbildung 14).
Der Effekt der Verschmelzung mehrerer Linien tritt hier nicht auf.
Grund hierfr ist die unterschiedliche Gewichtung der Pixel des
Eingangsbildes. Die umliegenden Pixel erhalten somit weniger
Bedeutung. Die Kanten werden weniger stark weich gezeichnet. Auch
der Kontrast nimmt weniger ab, verglichen mit dem 3x3
Mittelwertfilter. Es geht insgesamt weniger Information verloren.
Dieser Filter ist unter Umstnden geeignet, einen verrauschten
Barcode zu filtern.
Abbildung 14
11. KantenfilterKantenfilter dienen der Darstellung von bergngen
und Kanten. nderungen im Eingangsbild werden im Ausgangsbild
verstrkt. Homogene Flchen werden im Ergebnisbild mit dem Grauwert
dargestellt, da der Differenzenquotient an dieser Stelle 0 ist.
Beispiel: x 1/4 1*128-1*128+2*128-2*128+1*128-1*128 = 0
Seite 23 von 33
Exakt waagerechte Kanten werden mit diesem Filter nicht
dargestellt, da dieser Filter nur senkrechte Kanten erfasst.
Beispiel: x 1/4 1*128-1*128+2*128-2*128+0*128-0*128 = 0
Abbildung 15
Exakt senkrechte Kanten werden mit diesem Filter maximal
dargestellt.
x 1/4
1*255-1*128+2*255-2*128+0*128-0*128 = 381 255
Diagonale Kanten werden dunkler dargestellt. x 1/4
1*255-1*255+2*255-2*128+0*255-0*128 = 127
Seite 24 von 33
Abbildung 15 zeigt das Ergebnisbild nach Anwendung eines
Sobel-Filters in x-Richtung. Die Kante im rechten Bild wird nicht
dargestellt, da an dieser Stelle ein negatives Clipping angewendet
wird. Der Grauwert des Achteckes liegt bei ca. 128. Der
Differenzenquotient an dieser Stelle ergibt -127. Bedingt durch das
Clipping wird dieser auf 0 gesetzt. Mchte man beide Kanten
darstellen, muss auf alle Grauwerte ein Offset gesetzt werden. Um
eine gleichmige Verschiebung zu erhalten wird ein Offset von 128
angenommen (Abbildung 16).
Abbildung 16
Seite 25 von 33
Mchte man Kanten in Y-Richtung darstellen, muss die Matrix des
Sobel-Filters transponiert werden (Abbildung 17).
Abbildung 17
Seite 26 von 33
Mchte man diagonale Kanten darstellen, muss die Matrix des
Sobel-Filters um 45 rotiert werden (Abbildung 18).
Abbildung 18
Seite 27 von 33
Eine Mglichkeit Kanten in X-Richtung und in Y-Richtung
darzustellen ist der Laplace-Filter (Abbildung 19).
Abbildung 19
Seite 28 von 33
ndert man den Wert in der Mitte von 4 auf 5, wird der uere
Bereich heller (Abbildung 20). Je grer der Wert in der Mitte ist,
desto hnlicher sind sich Eingangs- und Ausgangsbild. Der Grund
hierfr ist, dass der Wert in der Mitte ein Ma fr den Gewicht des
alten Grauwertes im neuen Bild ist, whrend die umliegenden Werte
(in diesem Fall alles Eins) ein Ma fr den Gewicht der Ableitung
(Kantenextraktion) im neuen Bild ist.
Abbildung 20
Seite 29 von 33
void CLUT_BinrDlg::OnBnClickedSobelx3x3() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF111 = 1; m_lF112 = 0;
m_lF113 = -1; m_lF121 = 2; m_lF122 = 0; m_lF123 = -2; m_lF131 = 1;
m_lF132 = 0; m_lF133 = -1; CLUT_BinrDlg::OnBnClickedUserfilter(); }
void CLUT_BinrDlg::OnBnClickedSobely3x3() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF111 = -1; m_lF112 = -2;
m_lF113 = -1; m_lF121 = 0; m_lF122 = 0; m_lF123 = 0; m_lF131 = 1;
m_lF132 = 2; m_lF133 = 1; CLUT_BinrDlg::OnBnClickedUserfilter();
}
void CLUT_BinrDlg::OnBnClickedLaplace3x3() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF111 = 0; m_lF112 = -1;
m_lF113 = 0; m_lF121 = -1; m_lF122 = 4; m_lF123 = -1; m_lF131 = 0;
m_lF132 = -1; m_lF133 = 0; CLUT_BinrDlg::OnBnClickedUserfilter();
}
Seite 30 von 33
void CLUT_BinrDlg::OnBnClickedLaplace5x5() {
CLUT_BinrDlg::OnBnClickedloeschen(); m_lF100 m_lF101 m_lF102
m_lF103 m_lF104 m_lF110 m_lF111 m_lF112 m_lF113 m_lF114 m_lF120
m_lF121 m_lF122 m_lF123 m_lF124 m_lF130 m_lF131 m_lF132 m_lF133
m_lF134 m_lF140 m_lF141 m_lF142 m_lF143 m_lF144 } void
CLUT_BinrDlg::OnBnClickedloeschen() { m_lF100 = 0; m_lF101 = 0;
m_lF102 = 0; m_lF103 = 0; m_lF104 = 0; m_lF110 m_lF111 m_lF112
m_lF113 m_lF114 m_lF120 m_lF121 m_lF122 m_lF123 m_lF124 m_lF130
m_lF131 m_lF132 m_lF133 m_lF134 = = = = = = = = = = = = = = = 0; 0;
0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; = = = = = = = = = = = = = =
= = = = = = = = = = = 0; 0; -1; 0; 0; 0; -1; -2; -1; 0; -1; -2; 16;
-2; -1; 0; -1; -2; -1; 0; 0; 0; -1; 0; 0;
CLUT_BinrDlg::OnBnClickedUserfilter();
Seite 31 von 33
m_lF140 m_lF141 m_lF142 m_lF143 m_lF144 }
= = = = =
0; 0; 0; 0; 0;
UpdateData(FALSE); void CLUT_BinrDlg::OnEnChangeOffsetfilter() {
UpdateData(TRUE); }
Seite 32 von 33
FazitDank dieses Praktikums wurden die verschiedenen Konzepte
der Bildverarbeitung deutlicher. Die Mglichkeit nochmal mit echten
Bildern zu arbeiten haben wir zu schtzen gelernt und durch die
verschiedenen, unerwarteten Probleme, die zu lsen waren, haben wir
unser Wissen vertieft. Der Umgang mit einem
Bildverarbeitungsprogramm bietet den groen Vorteil viele Beispiele
schnell zu erarbeiten, was zur Hand eher mhsam zu rechnen ist. Das
entwickelte Programm kann auerdem aus einer beliebigen
Bildverarbeitung zustzlich quantitative Werte (Histogramm,
Statistiken) liefern, was auch noch zum besseren Verstndnis aller
Konzepte beitrgt.
Seite 33 von 33