Autor |
Beitrag |
barana
      
Beiträge: 39
|
Verfasst: Mi 28.03.07 23:47
Hallo Leute,
ich hab hier ein ganz spezielles Problem.
Ich will nähmlich ein Programm schreiben, welches in der Lage ist herauszufinden, ob ein Pixelkreis geschlosen, oder an einer Stelle offen ist.
Nehmen wir einfach mal Buchstaben als Beispiel. Sagen wir, dass das Bild nur aus schwarzer und weisser Farbe besteht und in dem Bild ein Buchstabe eingezeichnet ist. Der Buchstabe ist schwarz und der Rest ist weiss. Wie kann ich nun ermitteln, ob dieser Buchstabe in sich geschlosssen bzw. offen ist?
Der Buchstabe "o" wäre z.B. ein geschlossener Kreis, weil er keinen Anfang und kein Ende hat.
Ein "C" dagegen hat einen Anfang und ein Ende und wäre somit ein offener Kreis (wenn man es noch als Kreis bezeichnen kann).
Mir fällt einfach nichts mehr ein um es zu verwirklichen und ich hoffe, dass ihr mir helfen könnt.
Danke im Voraus
|
|
Robinator
      
Beiträge: 275
WinXP
BDS 2006
|
Verfasst: Mi 28.03.07 23:53
Also erst einmal muss man sagen, dass Texterkennung eine sehr komplizierte Sache ist, mit einem so einfach Ansatz wirst du da (abhängig davon was du eigentlich willst) nicht weit kommen.
zu deiner Frage:
Meine Herangehensweise wäre, das bild nach weissen Pixeln zu scannen. Wenn ich einen finde prüfe ich solange die umliegenden Pixel darauf, ob sie auch weis sind, das mach ich nun so lange, bis ich am "ende" des buchstabens angelangt bin.
Hoffe der Ansatz hilft.
gruss, Rob
_________________ erare humanum est
|
|
Karlson
      
Beiträge: 2088
|
Verfasst: Mi 28.03.07 23:57
Möglich wäre auch eine Art Brute Force
Versuche ausgehend von der Mitte alle benachbarten Pixel rot zu färben, es sei denn sie sind Schwarz.
Dann kannst du dir hinterher einen Punkt suchen der sicher außerhalb des Buchstabens liegt - ist dieser Rot ist der Kreis nicht geschlossen.
|
|
barana 
      
Beiträge: 39
|
Verfasst: Do 29.03.07 00:03
Robinator hat folgendes geschrieben: | Also erst einmal muss man sagen, dass Texterkennung eine sehr komplizierte Sache ist, mit einem so einfach Ansatz wirst du da (abhängig davon was du eigentlich willst) nicht weit kommen.
|
Nein es soll auch kein OCR Programm werden. Das hab ich nur als Beispiel genommen. Es ist mir schon klar, dass man diese komplexen neuralen Netze aufbauen und sich mit Kohonen Karten auseinandersetzten muss um ein OCR Progg zu schreiben. Sowas habe ich nicht vor.
Robinator hat folgendes geschrieben: |
zu deiner Frage:
Meine Herangehensweise wäre, das bild nach weissen Pixeln zu scannen. Wenn ich einen finde prüfe ich solange die umliegenden Pixel darauf, ob sie auch weis sind, das mach ich nun so lange, bis ich am "ende" des buchstabens angelangt bin.
Hoffe der Ansatz hilft.
gruss, Rob |
Verstehe ich nicht ganz...
Der Buchstabe selbst ist schwarz.
Woher weiss ich jetzt, wo das Ende des Buchstabens oder sagen wir lieber Kreises ist und inwiefern weis ich dann ob er nun geschlossen oder offen ist?
|
|
barana 
      
Beiträge: 39
|
Verfasst: Do 29.03.07 00:05
Karlson hat folgendes geschrieben: | Möglich wäre auch eine Art Brute Force
Versuche ausgehend von der Mitte alle benachbarten Pixel rot zu färben, es sei denn sie sind Schwarz.
Dann kannst du dir hinterher einen Punkt suchen der sicher außerhalb des Buchstabens liegt - ist dieser Rot ist der Kreis nicht geschlossen. |
Genau!
Klar!
Machmal stelle ich mich echt dumm an. Hab den Wald vor lauter Bäumen nicht gesehen...
Danke
|
|
Robinator
      
Beiträge: 275
WinXP
BDS 2006
|
Verfasst: Do 29.03.07 00:09
Naja, überleg dir doch mal wie du es als Mensch machen würdest.
Erstmal guckst du wo im Bild überhaupt eine erkennbare Form zu sehen ist (in diesem Fall ja wohl ein Kreis)
wenn du nun einen Punkt dieser Form kennst (ergo einen schwarzen) prüfst du, ob benachbarte Pixel auch schwarz sind und schreitest so die Form ab. Wenn du wieder beim anfangspixel ankommst, dann ist der Kreis geschlossen, wenn nicht, dann halt nicht^^
gruss
_________________ erare humanum est
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Do 29.03.07 01:44
Wie dick kann dieser Kreis sein? Ist es ein exakter Kreis? Ist der Kreis mit einem bestimmten Algorithmus gezeichnet worden?
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Do 29.03.07 07:26
Wenn man mit einer Schriftbreite von einem Pixel redet, könnte man auch einen Turtel loslaufen lassen und wenn der Endpunkt nicht angrenzend an den Startpunkt ist, dann wäre ein Kreis nicht geschlossen.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 02.04.07 10:28
Da wir das grad in Digitale Bildverarbeitung vor zwei Wochen hatten: Mach dich mal mit den Begriffen Bettische Zahlen und Euler-Zahl vertraut ...
Für nen geschlossenen Kreis:
B0(S) = 1
B1(S) = 1
E(S) = 0
Formfaktor = 4*Pi
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|