Bildverarbeitung - Kantendetektion [gelöst]

Ich habe bereits mehrere Filter bezüglich Kantendetektion implementiert, bin aber etwas verwirrt bezüglich der Masken mit negativen Elementen. Bei den einfachen Unschärfe-Filtern mit einer 3x3 Matrix mit 9 bzw. 8 Einsern muss die Summe der Produkte durch 9 bzw. durch 8 dividiert werden.
Bei dem Sobel-Filter mit folgender Maske (für eines der Zwischenergebnisse)
1 2 1
0 0 0
-1 -2 -1
wäre die Summe 0, die Absolutsumme hingegen 8. Wenn ich keine Division durchführe scheint das Bild zu "deutlich", es werden auch nur schwache Kanten sehr stark dargestellt. Eine Division durch 8 führt dann aber zu einem recht ansehnlichen Ergebnis.
Wenn ich das gleiche Prinzip bei dem Laplace-Filter auch anwende komme ich zu einer Division durch 16, welche logischerweise ein fast schwarzes Bild zur Folge hat.
In meinen Quellen wird dieser Punkt nie wirklich angesprochen. Kann man also eine allgemeine Aussage hierzu treffen oder muss man das für jeden Filter anpassen?

MfG benediktibk
 
hmm, eigentlich stimmt dein Filter, soweit ich das ohne das Ursprungsbild beurteilen kann. Ich habe den Filter selbst mal implementiert und bin zu ähnlichen Ergebnissen gekommen. Die Division ist allerdings nicht nötig (und beim Gaußschen Weichzeichner z.B. auch nicht, wenn man die Faltungsmatrix richtig wählt), der Filter macht eigentlich genau das, was er soll :)

PS: Da auch negative Werte auftreten können, solltest du (wie auch bei den Beispielen auf Wikipedia) ein neutrales Grau als Grundton nehmen)
 
Bei den Weichzeichnern könnte ich natürlich auch jeweils ein Achtel oder Neuntel in der Matrix wählen, aber ich denke, dass eine gemeinsame Division etwas flotter ist.

Danke für die Auskunft
benediktibk
 
Hi
Bei den Weichzeichnern teilst du durch 9 damit die Gesamtsumme der Matrix 1 ist und du damit den durchschnittlichen Grauwert des Bildes nicht veränderst. Du willst bei solchen Filtern ja eine visuelle Verbesserung deines Bildes vornehmen.

Sobel und Laplace Filter sind jedoch nicht direkt für die Bildverbesserung, sondern wie du schon sagtest, um Kanten zu detektieren. Dabei sind die Ausgabebilder Gradientenbilder, die du eigentlich nur als Zwischenergebnis brauchst. Zur weiteren Verarbeitung würde ich da nichts dividieren.

Wenn du dir die Bilder anzeigen lassen willst, kannst du sie natürlich so verändern, dass du auch was siehst, (musst du eh, da mit dem Sobel Filter auch negative Grauwerte vorkommen.)

Mfg ThePhil
 
Zurück
Oben