Hallo! Ich bin gerade am Implementieren vom Canny-Filter und hänge bei dem Hysterese-Verfahren. Ich bekomme immer ein ganz schwarzes Bild. Ich denke es hat was mit den Schwellwerten zu tun. Kann man da nun willkürlich irgendwelche Werte eingeben oder muss ich irgendein Verfahren für die Schwellwertbestimmung beachten?? Rumgespielt habe ich auch schon mit den Schwellwerten jedoch immer noch dasselbe Ergebnis... Bitte dringend um Hilfe und danke schonmal! :( Grüße Sarah
Hallo Sarah, es wäre wirklich super, wenn wir noch zusätzliche informationen bekommen würden, z.b. was für eine programmiersprache verwendest du, .... lg Candy
Die Sprache ist meiner Meinung nach ein unwichtiges Detail: Wichtiger wären wie sind deine Daten organisiert? Welche Algorithmen benutzt du? Was ist wirklich das Problem? Wenn bei der Binarisierung nur schwarze Bilder rauskommen ist die Schwelle zu gering oder es gibt keine Kanten im Bild. Also: teste es. Benutze (synthetische) Bilder und überlege was du erwartest und schau dir an was raus kommt. Wenn dein Problem wirklch nur die Schwellwerte sind, dann hast du ja schon ein Gradientenbetragsbild (oder kannst es wohl relativ leicht erzeugen?) -- schau das an, dann hast du ja für das einzelne Bild Schwellwerte zum Testen.
Hallo Danke euch erstmal für die Antworten... Ich habe herausgefunden dass meine Non-Maximum-Supression gar nicht richtig funktioniert und ich denke dass mein Hystere-Verfahren deshalb ein schwarzes Bild ausgibt. Nun hat sich die Fragestellung geändert :S Und zwar, ich bekomme nach der Non-Maximum-Supression ein Bild mit einigen Kanten die nicht "ausgedünnt" werden. Ich habe schon alles mögliche probiert und bekomme aber nicht raus, warum es nicht funktioniert. Ich habe mal einen Auszug aus meinem code angehängt. Kann mir vielleicht jmd bitte bestätigen, dass es stimmt bzw. auf einen Fehler hinweisen....?
Ach ja, sorry wegen den Details.... Ich programmiere in Java und mein Programm ist folgendermaßen aufgebaut: Ich führe zunächst eine Glättung des Bildes mit einem 3x3 - Gaußfilter durch und erzeuge anschließend ein Gradientenbild mit dem Sobel-Filter. Dann berechne ich die Kantenrichtungen, mittels denen ich dann in der Non-Maximum-Supression weiterarbeite. Vielleicht könnte es auch daran liegen dass ich irgendetwas bei der Berechnung der Kantenrichtungen falsch mache... Wie würdet ihr denn vorgehen?
Sarah schrieb: > falsch mache... Wie würdet ihr denn vorgehen? Ein synthetisches 5*5 Pixel Einfachst-Bild durchjagen, von dem ich im Vorfeld genau weiß, was in jeder Zwischenstufe rauskommen muss. Und da ich das weiß, dumpe ich mir die Zwischenstufen und seh nach, ob auch tatsächlich das Erwartete rauskommt. Das blödeste was du tun kannst: Ein Bild von deiner Digitalkamera mit 4096*2048 Pixel durchjagen, am Ende feststellen, dass nichts funktioniert und in Panik verfallen, weil du nicht weißt, wo du mit Fehlersuche anfangen sollst. Debuggen bedeutet meistens, sich selbst einen möglichst einfachen, reproduzierbaren Fall herstellen, der den beobachteten Fehler noch zeigt. Und mit diesem Fehlerfall wird dann das Verfahren durchleuchtet, wobei (wenn man nichts anderes weiß) erst mal alles in Frage gestellt wird. Es gibt kein Subsystem, welches als Fehlerverursacher sofort ausgeschlossen wird. Erst nachdem man nachgewiesen hat, dass es dieser Teil nicht ist, scheidet er aus der Liste der Kandidaten aus.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.