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