Entwickler-Ecke
Multimedia / Grafik - Herausfinden, ob ein Kreis geschlossen ist?
barana - Mi 28.03.07 23:47
Titel: Herausfinden, ob ein Kreis geschlossen ist?
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 - 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
Karlson - 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 - 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 - 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 - 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
delfiphan - 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 - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!