Forum: PC-Programmierung Bildverarbeitung & Mustererkennung


von Student (Gast)


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.

von STK500-Besitzer (Gast)


Lesenswert?

OpenCV?!

von Karl H. (kbuchegg)


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.

von Student (Gast)


Lesenswert?

Gibt es eine gute Literatur bzw. Skript?

Auf welcher Plattform Bzw. Tools sollte ich programmieren?

von andz (Gast)


Lesenswert?

Guck mal die Projektarbeit an...is glaub ned schlecht...soll in der 
nächsten stufe in nen FPGA implementiert werden:

http://www.hs-augsburg.de/~kiefer/projekt-tracking/index.html

andz

von Karl H. (kbuchegg)


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.

von Student (Gast)


Lesenswert?

Programmiersprache: C und C++
Entwicklungsumgebung: Microsoft Visual Studio C++
Betriebssystem: Windows XP

Gibt es für den Einstieg ein paar Beispielprogramme in C bzw. C++?
Das Skript von unserem Prof ist echt nicht gut. Kennt jemand ein
gutes deutsches Skript?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Student schrieb:
> Das Skript von unserem Prof ist echt nicht gut. Kennt jemand ein
> gutes deutsches Skript?
Gut gemeinter Tip: Freunde dich mit englischer Literatur an oder vergiss 
es.

von Pete K. (pete77)


Lesenswert?

Google doch mal nach "Buch Mustererkennung Bildverarbeitung".

Für die Inhalte der Vorlesung solltest Du fit in Mathe sein. Die 
Programmiersprache ist nebensächlich.

von grastino (gastino unterwegs) (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


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 :-)

von Student (Gast)


Lesenswert?

Welche Weg würdet ihr mir nun raten?
OpenCV verwenden ? ja oder nein
Welches Bildformat würdet ihr benutzen? Bitmap?

von Karl H. (kbuchegg)


Lesenswert?

Sonderlich selbstständig bist du aber nicht gerade.

von JojoS (Gast)


Lesenswert?

suche er mal nach 'Bildverarbeitung ad Oculus'. Das ist ein Lehrbuch und 
Software gibt es auch dazu. Da sind die Grundlagen ganz gut erklärt, das 
ist schon das Mindeste was man sich antun sollte um da einzusteigen. 
OpenCV ist auch gut, aber was nutzen die ganzen Fachbegriffe da wenn man 
keinen Plan hat.

von grastino (gastino unterwegs) (Gast)


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.

von dito (Gast)


Lesenswert?

Für Bildverarbeitung benutze ich am allerliebsten Matlab! Da kann man 
sich am Besten auf den Algorithmus konzentrieren. Für Studenten ist eine 
Lizenz recht günstig zu erwerben.

von dito (Gast)


Lesenswert?

Octave ist übrigens eine Open Source-Alternative zu Matlab. Für kleinere 
Spielereien reicht das erstmal.

von Student (Gast)


Lesenswert?

Matlab hab ich auch schonmal dafür verwendet. In Microsoft Visual Studio 
C++ habe ich mal nur ein Bitmap (2D). Nun könnte ich ja ein Histogramme 
erzeugen oder ein Filter anwenden.

von moe (Gast)


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.

von Herr H. (Gast)


Lesenswert?

Sonst noch jemand links zu guten Büchern?

von cq (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.