Geraden suchen (Dig.Bildverarbeitung)

Hi!

Ich bin mir nicht ganz sicher ob ich hier richtig bin, aber eigentlich gehört meine Frage schon in den Bereich der Mathmatik.

Folgendes Problem:
Ich habe ein Grauwertbild (8 Bit) und weiß,
daß sich darin zwei Geraden verstecken.
Es kann u.U. auch nur eine sein, aber nicht mehr. Eine davon startet im Mittelpunkt des Bildes. Das Problem ist nun, die Länge, und die Winkel beider Linien zu finden. U.u. ist das Bild verrauscht und die Linien sind nat. auch nicht unendlich dünn.

Ich suche einen Algorithmus, der das Problem möglichst schnell (geringer Rechenaufwand) und nat. sicher/genau löst.

Habe auf der Seite der Uni Jena schon ein Beispielprogramm gefunden, das das Problem teilweise sehr schön löst und auch eine Funktionssammlung (ICE) für die Bildverarbeitung. Diese ist aber leider viel zu komplex und mächtig und funktioniert bei mir leider nicht richtig :frowning:(

Vielleicht kann mir ja hier jemand weiterhelfen. Literaturtips sind nat. auch willkommen!

tschüß und Danke schon mal!

Andreas

Hi,

Folgendes Problem:
Ich habe ein Grauwertbild (8 Bit) und
weiß,
daß sich darin zwei Geraden verstecken.
Es kann u.U. auch nur eine sein, aber
nicht mehr. Eine davon startet im
Mittelpunkt des Bildes. Das Problem ist
nun, die Länge, und die Winkel beider
Linien zu finden. U.u. ist das Bild
verrauscht und die Linien sind nat. auch
nicht unendlich dünn.

Ich suche einen Algorithmus, der das
Problem möglichst schnell (geringer
Rechenaufwand) und nat. sicher/genau
löst.

Das mit dem geringen Rechenaufwand koennte schwierig werden :wink:
Ich hoffe, Du kannst programmieren, sonst hilft Dir das nicht viel:
Das Bild muss in mehreren Schritten abgearbeitet werden. Als erstes wuerde ich einen (nicht zu breiten!) Tiefpassfilter drueberschicken (Binominalfilter sind schnell).
Dann muessen die Linien rausgeholt werden. Dazu eignet sich der Linienfilter des Canny-Kantenfilter (schau mal im I-Net nach John Canny edge detect).
Das Resultat ist ein Schwarz-/Weissbild in dem sich die Linien finden (wenn Du nicht weisst, ob die Lienen dunkel auf hell sind oder umgekehrt, muss noch ein Schritt eingeschoben werden um das rauszufinden).
Der Canny-Algorithmus hinterlaesst nicht unbedingt Linien der Staerke ein Pixel. Zum ausduennen gibt es einen kleinen feinen Algorithmus, weiss nicht mehr von wem der ist, kann ich Dir aber notfalls mailen (den C-Code).
Als naechstes muessen die Loecher geschlossen werden, die der Canny-Algorithmus hinterlassen kann. Dazu gibt es auch Loesungen im Netz. Ich habe auch eine (allerdings ziemlich simmple = nicht perfekte) Loesung, die ich Dir Schicken kann. Beide Probleme (Ausduennen und Luecken schliessen) lassen sich auch mit dem Programm Thin-Link loesen. Das habe ich aber nicht zum laufen gekriegt.
Mein Code erfasst beim linken gleich alle Pixel einer Linie (Thin-Link macht das glaube ich auch) und dann kannst Du Deine Linien nach bestimmten Kriterien daraus holen („Geradigkeit“, Laenge usw).
Ich dafuer zwar Code, aber der muesste fuer Deine Zwecke umgeschrieben werden, da es sich um einen Kantenfilter (und SEHR viel mehr) handelt, mit dem Du nichts anfangen kannst, da ein Kantenfilter Dir aus jeder Linie zwei machen wuerde. Wenn Du einigermassen programmieren kannst und Dich mit Bildverarbeitung etwas auskennst, kannst Du das in ein zwei Wochen hinkriegen :wink:
Wenn das fuer Dich interessant klingt, mail mich mal an oder so.

Gruss

Thorsten