Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 13.02.10 15:59 
Hallo zusammen,

ich suche eine Möglichkeit, eine Zahl mit dessen Position in einem Image zu finden. Bei der Internetrecherche bin ich auf diverse, kostenpflichtige OCR (Optical Character Recognition) Tools gestolpert. Diese konnten Text in Images zwar in einen String umwandeln, jedoch musste die Position des Textes bekannt sein. In meinem Fall variiert die Position des Textes jedoch. Daher suche ich eine Methode, die Zahlen in einem Image finden kann und dessen Position zurückgibt.

Hat hier jemand eine Idee, wie ich das realisieren könnte?

_________________
Gruß
Christoph
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 14.02.10 14:49 
Hallo,

da kannst einfach sequentiell alle Bereiche eines Bildes absuchen und bei einem sinnvollen Ergebnis die Position zurück geben. Ob das nun die Library für dich macht oder du selbst ist ja egal.

Gruß Daniel
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 14.02.10 15:32 
Hi,

nur wie kommt ein gutes Resultat zustande? Das Thema ist ziemlich kompliziert. Hier gibt es ein Beispiel, nur kommt es mit Zahlen nicht zurecht. Bei Pennergame gibt es C Code der das erledigen kann, nur kann ich das leider nicht in C# übersetzten.

_________________
Gruß
Christoph
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 14.02.10 15:43 
Also ist es nicht dein Problem die Position der Zahl zu finden, sondern die Zahl einwandfrei zu erkennen? Das ist natürlich schwieriger... aber auch abhängig von deiner Quelle. Wenn du ein "saubere" Quelle hast und du nur Zahlen suchst gibt es frei OCR-Egines die eine DB verwenden und somit ein 100% Ergebniss erzielen.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 14.02.10 15:56 
Ich benötige die Position und ein genaues Ergebnis. Erst muss eine Zahl identifiziert werden, dann beötige ich diese und dessen Position, damit ich an der entsprechenden Stelle weitere Informationen einfügen kann. In der Grafik können bis zu 15 Zahlen stehen.

_________________
Gruß
Christoph
Breakdowncookie
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 15.02.10 17:02 
Wie sehen diese Zahlen denn aus? Sind sie immer in der gleichen Schriftart und -größe oder sind sie gar rotiert? Ist das Bild eingescannt oder am PC erstellt? Wenn sie ganz normal in einem bekannten Font zur Verfügung stehen, wäre das gut, dann kannst du die einfach Pixel per Pixel abgleichen.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 17:40 
Hi,

ist immer die selbe Schriftart und Größe, die Ausrichtung ist immer vertikal. Das Image wurde am PC erstellt.

Aber was soll ich denn Pixel per Pixel abgleichen???? Das ganze ist leider nicht so einfach wie man meinen könnte.

_________________
Gruß
Christoph
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 15.02.10 17:45 
Doch ist es, wenn es am PC gemacht wurde und immer die gleiche Schriftart etc. ist, dann kannst du a) Schablonen von jeden einzelnen Zahl erstellen b) diese Schablonen Postion um Position mit dem aktuellen Bild vergleichen. Worin liegt den deines Erachtens noch das Problem?
Breakdowncookie
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 15.02.10 17:49 
Ich stell mir das folgender Maßen vor:
Da bestimmt ein gewisser Abstand zwischen den Zahlen ist (min. 1 Pixel), lassen sich diese eingrenzen.
Dazu scannst du mit 2 For-Schleifen (for y ... for x ...) durch das Bild und suchst etwas, das von der Hintergrundfarbe abweicht. (Oder wie sieht der Hintergrund aus?) Wenn du etwas gefunden hast, grenzt du es von oben, unten, links und rechts ein und vergleichst das Resultat Pixel für Pixel (wieder 2 For-Schleifen) mit vorher erstellten Images der 10 möglichen Ziffern.
Feddisch.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 18:02 
Das könnte gehen, sellt sich nur die Frage, wie Performant das wird. Hast du schon mal ein Image von oben bis unten mit einer Schleife durchlaufen? Da kann man erstmal Kaffeetrinken gehen. Aber mit einer Eingrenzung sollte es auch möglich sein, da die Zahlen eigentlich immer mind. vier Stellen haben. Schade nur, das man bei deinem Vorschlag nicht ohne teachen auskommt. Aber gut, das ist an Projekt für das Wochenende (bzw. die nächsten :gruebel: ), mit einer Flasche Wein :zustimm:

_________________
Gruß
Christoph
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 15.02.10 18:05 
Also das teachen brauchst du nicht, weil die Zahlen ja immer genau so aussehen. Von der Performance her ist es unkritisch. Ich hab schon Mal was ähnliches gemacht. Für die Pixel/Pixel vergleiche kannst du unmanaged Code nehmen. Aber Schritt für Schritt...

Fürs erste würde ich einmal die Schablonen erstellen und dann versuchen eine Zahle zu identifizieren,.. der Rest ist dann nur noch die doppelte For-Schleife.
Breakdowncookie
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 15.02.10 18:14 
Ansonsten, wenn es sich um ein 12 Megapixel-Bild o.ä. handelt, kannst du auch erstmal downsizen. Das spart enorm Performance.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 15.02.10 18:48 
Supi, danke für die Zahlreichen Anregungen! Nur frage ich mich, wie es ohne teachen gehen soll, wenn ich die Font Art nicht kenne?

_________________
Gruß
Christoph
Breakdowncookie
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 15.02.10 22:52 
Dann erstellst du die Vorlagen nicht aus dem Font, sondern aus deinen Bildern. Werden sich doch bestimmt die Ziffern 0-9 alle finden.