Im Bild Buchstabe erkennen,

Hallo,
ich soll ein program in C schreiben, das ein bilddatei liest und das Buchstabe „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen erstmal zu vereinfachen. und das bild enthält buchstaben.

ich hab zwar C-Grundlagen,aber ich weiss nicht wie ich anfangen soll. über den aufbau eines bmp-bild habe ich nichts nützliches gefunden.

für irgendwelche tipps bin ich dankbar.

Gruß

Hallo Fragewurm,

ich soll ein program in C schreiben, das ein bilddatei liest
und das Buchstabe „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen
erstmal zu vereinfachen. und das bild enthält buchstaben.

ich hab zwar C-Grundlagen,aber ich weiss nicht wie ich
anfangen soll. über den aufbau eines bmp-bild habe ich nichts
nützliches gefunden.

Zuerst solltest du dir überlegen, wie du das Problem überhaupt angehen kannst, also du benötigst einen Algirithmus.
Stichwort: Mustererkennung

Das hat zunächst noch gar nichts mit einer bestimmten Programmiersprache oder einem Dateiformat zu tun, diese Probölem kommt eigentlich erst viel später dran, wenn du weisst, wie das Problem gelöst werden kann.

MfG Peter(TOO)

Auch hallo.

Zusätzlich zu dem was der junge Mann eben schon geschrieben hat:

ich soll ein program in C schreiben, das ein bilddatei liest
und den Buchstaben „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen
erstmal zu vereinfachen. und das bild enthält buchstaben.

Zur Not nimmt man sich einen Bildeditor und schreibt auf ein weisses Blatt Papier ebendort ein ‚i‘ und betrachtet sich das Kunstwerk im Raster. Die schwarz-weiss Werte kann man als boolean definieren.
Dann fehlt nur noch die Abfrage über den statischen x/y-Raum. Falls dann relativ viele Bedinungen erfüllt sind, ist der Buchstabe fast sicher ein i. Für andere Buchstaben gelten dann andere Bedingungen.

Evtl. noch eine Literaturangabe: ‚Masterkurs Grafik- und Bildverarbeitung‘ aus dem Vieweg Verlag @ http://www.bol.de/shop/home/artikeldetails/masterkur…

HTH
mfg M.L.

Hallo Fragewurm,

ich soll ein program in C schreiben, das ein bilddatei liest
und das Buchstabe „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen
erstmal zu vereinfachen. und das bild enthält buchstaben.

ich hab zwar C-Grundlagen,aber ich weiss nicht wie ich
anfangen soll. über den aufbau eines bmp-bild habe ich nichts
nützliches gefunden.

Zuerst solltest du dir überlegen, wie du das Problem überhaupt
angehen kannst, also du benötigst einen Algirithmus.
Stichwort: Mustererkennung

also ungefähr habe ich ein Algorithmus im Kopf, dass kann ich evt. während der entwicklung verfeinern.
z.b. so: von links oben oben bis rechts lesen bis ich einen schwarzen punkt treffe und dann darunter lesen, wenn es darunter auf schwarz (10%) ,weiss(10%), schwarz(80%) sehe dann ist das ein kleines i.

das ist zwar grob aber man kann es verbessern.

mein problem in einem bmp-bild stehn mit einem texteditor nur hex-zeichen,die nicht klar etwas sagen über pixelfarbe oder position.

Das hat zunächst noch gar nichts mit einer bestimmten
Programmiersprache oder einem Dateiformat zu tun, diese
Probölem kommt eigentlich erst viel später dran, wenn du
weisst, wie das Problem gelöst werden kann.

MfG Peter(TOO)

Auch hallo.

Zusätzlich zu dem was der junge Mann eben schon geschrieben
hat:

ich soll ein program in C schreiben, das ein bilddatei liest
und den Buchstaben „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen
erstmal zu vereinfachen. und das bild enthält buchstaben.

Zur Not nimmt man sich einen Bildeditor und schreibt auf ein
weisses Blatt Papier ebendort ein ‚i‘ und betrachtet sich das
Kunstwerk im Raster. Die schwarz-weiss Werte kann man als
boolean definieren.

was meinst du mit einem bildeditor,wie paint zb.?
kannst du mal bitte einen link für den richtigen editor schreiben?
ich kann dich nicht genau folgen :frowning:

Dann fehlt nur noch die Abfrage über den statischen x/y-Raum.
Falls dann relativ viele Bedinungen erfüllt sind, ist der
Buchstabe fast sicher ein i. Für andere Buchstaben gelten
dann andere Bedingungen.

Evtl. noch eine Literaturangabe: ‚Masterkurs Grafik- und
Bildverarbeitung‘ aus dem Vieweg Verlag @
http://www.bol.de/shop/home/artikeldetails/masterkur…

HTH
mfg M.L.

Hallo Stefan,

ich soll ein program in C schreiben, das ein bilddatei liest
und das Buchstabe „i“ erkennen soll.

die Kollegen haben dir ja schon wes zu Bilderkennung geschrieben. Wenn du des Englischen mächtig bist, dann suche duch im Netz mal nach OCR (optical character recognition), da solltest du einiges dazu finden.

ich hab zwar C-Grundlagen,aber ich weiss nicht wie ich
anfangen soll. über den aufbau eines bmp-bild habe ich nichts
nützliches gefunden.

http://de.wikipedia.org/wiki/Windows_bitmap

HTH
Martin

Hallo

Für solche sachen kann ich den V-Viewer empfehlen.
Die Homepage lautet: www.fileviewer.com

Bei ihm kann man die entsprechendene Ansichten Hex/Ascii umschalten

Gruß Sven

Zuerst solltest du dir überlegen, wie du das Problem überhaupt
angehen kannst, also du benötigst einen Algirithmus.
Stichwort: Mustererkennung

also ungefähr habe ich ein Algorithmus im Kopf, dass kann ich
evt. während der entwicklung verfeinern.
z.b. so: von links oben oben bis rechts lesen bis ich einen
schwarzen punkt treffe und dann darunter lesen, wenn es
darunter auf schwarz (10%) ,weiss(10%), schwarz(80%) sehe dann
ist das ein kleines i.

Wenn das Bild mit einer Kamera oder Scanner erstellt wurde, kannst du nicht davon ausgehen, dass das i gerade steht !!
Und wie erkennst du den Punkt, wenn er 50 Pixel im Durchmesser hat ??

mein problem in einem bmp-bild stehn mit einem texteditor nur
hex-zeichen,die nicht klar etwas sagen über pixelfarbe oder
position.

Das ist auch eine Struktur. Ausser mit einem Bildbetrachter/-editor wirst du immer nur Hex-Zeichen sehen.
Hier der Aufbau eines BMP:
http://astronomy.swin.edu.au/~pbourke/dataformats/bmp/
Wie du das aber in deinem Speicher organisierst um es effizient auszuwerten ist eine andere Geschichte. Am einfachten ist es ein Array mit der Bildgrösse zu erstellen, sodass ein einzelnes Pixel direkt über seine X und Y Koordinaten angesprochen werden kann.

MfG Peter(TOO)

Hallo!

ich soll ein program in C schreiben, das ein bilddatei liest
und das Buchstabe „i“ erkennen soll.
nehmen wir an das bild ist bmp und schwarzweiss um die sachen
erstmal zu vereinfachen. und das bild enthält buchstaben.

Wie genau soll das Programm die "i"s erkennen?
Eine Ausgabe mit der Meldung „i im Bild entdeckt“? Oder eine Meldung wie „4 i’s im bild entdeckt“? Soll ein Ausgabebild wieder herausgegeben werden wo die „i“ besonders markiert werden?
Wie sieht es mit den Buchstaben aus? Sind sie immer gleich groß? Immer parallel und nie verzerrt oder gedreht? Computerschrift oder Handschriftliche Erkennung?
All dies mußt du dich fragen, denn je nachdem wie die Voraussetzungen sind, unterscheiden sich auch die möglichen Lösungswege.

Als Beispiel:
Wenn du viele unterschiedliche Orientierungen hast, könntest du Merkmale spezifieren (bsp. SIFT-Merkamle, die Orientierungs- & Skalierungsinvariant sind), im Bild nach Merkmalen suchen lassen und die gefunden Merkmale mit den Merkmalen für ein „i“ vergleich.

Wenn du andernfalls immer nur von ein und derselben Schrift (bsp. Arial) und Schriftgröße die Bilder bekommst, ist es um einiges einfacher eine Maske des „i“ zu definieren, die du über das Bild hinwegschiebst bis du eine Übereinstimmung gefunden hast (grenzt bereits an eine Brute-Force Methode).

ich hab zwar C-Grundlagen,aber ich weiss nicht wie ich
anfangen soll. über den aufbau eines bmp-bild habe ich nichts
nützliches gefunden.

Meines Wissens nach (was bei Dateiformaten nicht sonderlich groß ist), besteht ein Bitmap aus einem Header, Dateiinformationen und darauf folgend dann die Bildinformationen.
Der Header definiert die Dateigröße und ähnliches, die Dateiinformationen u.a. wie viel Bit pro Pixel verwendet werden, und schließlich hast du eine Farbcodierung die du mit einem HexaDecimal-editor auch sehr gut dir anschauen kannst.

Ergo müßtest du eigentlich die Datei nur öffnen, den Header & dateiinformationen teilweise auswerten und dann nur den richtigen Punkt finden, wo die Bildinformationen starten.

Grüße

Björn