Bildverarbeitung & Mustererkennung

Gast #1822086
Lesenswert?

Guten Morgen,

ich möchte die Inhalte von der Vorlesung Bildverarbeitung & 
Mustererkennung etwas vertiefen.
Dazu möchte ich in C bzw. C++ oder Matlab Beispiele durchführen für das 
bessere Verständnis. Kennt jemand im Netz ein gutes Skript (deutsch) mit 
Beispielen? Mir wäre es lieber, wenn ich die Beispiele in der 
Programmiersprache C oder C++ geschrieben sind.

Vielen Dank schonmal im voraus.
#1822183
Lesenswert?

Student schrieb:

> ich möchte die Inhalte von der Vorlesung Bildverarbeitung &
> Mustererkennung etwas vertiefen.
> Dazu möchte ich in C bzw. C++ oder Matlab Beispiele durchführen für das
> bessere Verständnis.

Das beste Verständnis bekommst du .... wenn du das selber programmierst 
und nicht von irgendjemand anders programmierte Beispiele laufen lässt. 
Das bringt so gut wie gar nichts.
#1822237
Lesenswert?

Student schrieb:
> Gibt es eine gute Literatur bzw. Skript?

Ähm.
Ich denke du gehst in eine Vorlesung?
Library besorgen die dir den lästigen Teil "Einlesen eines Bildes in ein 
Array" abnimmt. In dem Momement, in dem du alles in einem 2D Array 
vorliegen hast, kannst du dich nach Herzenslust an dem Bild austoben.

Plattform:
Welche kannst du denn programmieren?
Die nimmst du.

Welche Programmiersprache kannst du?
Die nimmst du.
#1822510
Lesenswert?

grastino (gastino unterwegs) schrieb:
> Karl heinz Buchegger schrieb:
>> Library besorgen die dir den lästigen Teil "Einlesen eines Bildes in ein
>> Array" abnimmt. In dem Momement, in dem du alles in einem 2D Array
>> vorliegen hast, kannst du dich nach Herzenslust an dem Bild austoben.
>
> Das schreit förmlich nach OpenCV.

Solange er seine Filter, Histogramme, Dither-Methoden und was sonst noch 
so alles in seiner Vorlesung vorkommt selber implementiert und nicht 
einfach nur fertige Funktionen aufruft, spricht nichts dagegen.

Im Grunde kann man aber auch die einfacheren Dinge in der 
Bilverarbeitung / Mustererkennung mit 'künstlichen Bildern' ganz einfach 
ohne viel Schnick/Schnack durchspielen
1
#define IMAGE_X 60
2
#define IMAGE_Y 60
3

4
unsigned char Image[IMAGE_X][IMAGE_Y];
5

6
void Rectangle( int x, int y, int w, int h, unsigned char color )
7
{
8
  int i, j;
9

10
  for( j = 0; j < h; ++j )
11
    for( i = 0; i < w; ++i )
12
      Image[i+x][j+y] = color;
13
}
14

15
void ClearImage( void )
16
{
17
  Rectangle( 0, 0, IMAGE_X, IMAGE_Y, 0 );
18
}
19

20
void Display()
21
{
22
  int i, j;
23
  static char Codes[] = { ' ', '.', '2', '3', '4', '5', '6', '7', '8', '9', 'X' };
24

25
  printf( "\n" );
26

27
  for( j = 0; j < IMAGE_Y; ++j ) {
28
    for( i = 0; i < IMAGE_X; ++i ) {
29
      printf( "%c", Codes[ Image[i][j] ] );
30
    }
31
    printf( "\n" );
32
  }
33
}
34
   
35
int main()
36
{
37

38
  ClearImage();
39
  Rectangle( 5, 6, 50, 20, 3 );
40

41
  Display();
42
}

fertig ist ein Testsystem, das seine Bilder als ASCII Bilder durch 
unterschiedliche Buchstaben anzeigt, wenn auch nur in 10 'Graustufen'. 
Wenn man die Augen ein wenig zusammenkneift, kann man sich das Rechteck 
schon ganz gut vorstellen.

Klar ist das nicht optimal.
Aber um Histogramme zu erzeugen, Dithering zu betreiben, erste Filter 
anzuwenden reicht das allemal (und mit besseren Grauwertbuchstaben wird 
dann auch das 'Bild' ein wenig realistischer)

Der Schwerpunkt soll ja auf Bildverarbeitung liegen und nicht auf dem 
ganzen Drumherum, der notwendig ist um ein JPG von einem File einzulesen 
und in Windows in einem Fenster anzuzeigen. Konzentration auf das 
Wesentliche! Das geht zumindest für die ersten Schritte mit so etwas 
genausogut (und hat den Vorteil, dass man besser Debuggen kann, da die 
Bilder nicht so gross sind :-)
Gast #1822654
Lesenswert?

Karl heinz Buchegger schrieb:
> Solange er seine Filter, Histogramme, Dither-Methoden und was sonst noch
> so alles in seiner Vorlesung vorkommt selber implementiert und nicht
> einfach nur fertige Funktionen aufruft, spricht nichts dagegen.

Die fertigen Funktionen kann er immerhin zur Kontrolle verwenden, das 
war eigentlich einer meiner Hintergedanken.
Ansonsten bietet OpenCV ja den ganzen I/O-Kram an, weswegen ich es auch 
sehr passend finde.
Gast #1822677
Lesenswert?

Google hülf!
http://www.google.com/search?q=bildverarbeitung+skript+filetype%3Apdf

Einige Buchtipps:
 - "Digitale Bildverarbeitung" von Wilhem Burger und Mark James Burge
 - "Digital Image Processing" von Gonzalez und Woods
 - "Digitale Bildverarbeitung" von Bernd Jähne

Ihr habt doch bestimmt eine Uni-Bibliothek? Dort wirst du mit Sicherheit 
einige gute Bücher finden. Kommilitonen höherer Semester helfen dir 
gerne beim Aussuchen (und haben häufig Skripte vom Vorgänger).

Ansonsten: Einen begabten Kommilitonen schnappen, zum Prof/Labor-Ass 
deines Vertrauens gehen, Labor aufschließen lassen und loslegen.
Gast #2441687
Lesenswert?

Jähne und Gonzales reichen.
Dazu noch ein,zwei Bücher über OpenCV (äh, OpenCV2), wenn es C sein 
muss, (die Sprache ist eigentlich egal) und dann ab ans proggen.

Bildverarbeitung ist nicht was, was man sonderlich gut aus Büchern 
lernt, sondern in der Praxis: Nämlich, wenn der Bildgebungsspezialist 
besch.. Bilder liefert, die Lichtbedingungen doch nicht so homogen sind, 
und man 2.3sec zum Untersuchen von mehreren 100Mbyte hat.

Dann hilft viel Rumprobieren, viel Erfahrung, eine gute Sammlung an 
Code-Schnipseln und die gelegentliche Diskussion mit (guten) 
Mathematikern und Leuten, die was von Optik verstehen. Und eine 
vernünftige Library, mit der man schnell mal Dinge testen kann, also 
etwas in Richtung Matlab, IMAQ, Halcon,.. Ob man die dann in der 
Produktion auch nimmt, ist eine andere Frage, aber zum Experimentieren, 
bitte, gerne.

Der Thread ist 1 Jahr alt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren