Diskussion:Sobel-Operator
Sobel-Operator ein Algorithmus ?
BearbeitenMeiner Meinung nach ist der Sobel-Operator kein Algorithmus, und es ist auch falsch, ihn als solches zu bezeichnen. Der Sobel-Operator ist ein Filter der zur Kantendetektion eingesetzt wird. Er wird evtl. in einem Algorithmus zur Kantendetektion (zb. Canny-Algorithmus) benutzt ist aber selbst keiner. --f .riedel 16:21, 17. Sep 2006 (CEST)
- Hmm stimmt eigentlich, habe das geändert --Ma-Lik 20:38, 17. Sep 2006 (CEST)
Nun ist der Sobel-Operator wieder zu einem Algorithmus geworden... :-( Ich hätte mal gerne eine Begründung dafür. Ich finde es ignorant, einfach etwas zurückzuändern, ohne an der Diskussion teilzunehmen oder zumindest zu erklären, warum man meint, dass ein Operator ein Algorithmus ist. Evtl. ist es auch nicht richtig, den Sobel-Operator als Filter zu bezeichnen, aber ein Algorithmus ist er sicher nicht. Ein Operator ist ein Operator. Ich würde ja auch keinen Plus-Operator (+) als Algorithmus bezeichnen, oder ? --f .riedel 10:45, 23. Apr. 2007 (CEST)
- Ich habe das wieder in "Filter" geändert, da ein Operator kein Algorithmus ist. Man kann evtl. vom Sobel-Algorithmus sprechen, der nichts anderes macht, als den Sobel-Operator anzuwenden und evtl. einen Schwellwert zu wählen, allerdings heißt dieses Lemma hier "Sobel-Operator" und nicht "Sobel-Algorithmus".
- --Oxygene 21:12, 13. Mai 2007 (CEST)
Fehler in der Formel?
BearbeitenMeines Erachtens ist die Formel für den Sobel-Operator falsch. Der Faktor 1/8 vor der Matrix ist überflüssig. So habe ich es zumindest in einer Vorlesung zur Bildverarbeitung gelernt, ebenso steht es auf der englischsprachigen Wikipedia-Seite ([1]) sowie in einer anderen Quelle ([2]). Dementsprechend bin ich dafür, dass dies geändert wird. --Stultissimum 20:32, 2. Jun 2006 (CEST)
- Dieser stellt doch nur eine Normierung dar, da ansonsten im bearbeiteten Bild hohe Werte entstehen können, die nicht im Bild dargestellt werden können. Allerdings findet bei z.B. OpenCV diese Normierung nicht statt, da das Zielbild dort einfach in seinem Datenbereich erweitert wird. Im Jähne "Digital Image Processing (S.350)" wird die Matrize jedoch mit Normierung dargestellt, daher habe ich dieses Buch jetzt auch als Quelle aufgeführt--Ma-Lik 11:23, 3. Jun 2006 (CEST)
- Der Sobel-Operator kann aber auch negative Werte erzeugen, die selbst mit der Normierung nicht verhindert werden können. Soweit ich weiß, sind sowohl diese negativen Werte als auch größere Werte, die den Bildbereich sprengen, gesondert zu betrachten.
- Wenn eine Quelle (von vielen) den Operator mit einer Normierung darstellt, viele andere aber nicht, dann sollte dies meines Erachtens aber zumindest einmal erwähnt werden (denn selbst eine Quelle kann mal falsch liegen). --Stultissimum 18:02, 3. Jun 2006 (CEST)
- Gut dann würde ich sagen, wir nehmen den Normierungsfaktor raus und schreiben danach das es teilweise üblich ist mit einem Normierungsfaktor zu rechnen. Allerdings würde die Quelle dann nicht mehr passen. Hast du evtl ein Buch zur Hand indem es anders gelehrt wird? Websites sind als Quelle ja ein wenig unschön, falls nicht erwähne eine von den oberen Websites. Meinen Segen hast du jetzt..--Ma-Lik 18:23, 3. Jun 2006 (CEST)
- Mit Büchern kann ich leider nicht dienen, allerdings mit anderweitiger Literatur. In dem Paper "Edge and Mean Based Image Compression" von U.Y. Desai u.a. ([3]) wird der Sobel-Operator kurz wiederholt, ebenso in "Classical Feature Detection" ([4]). In diesen beiden Veröffentlichungen wird der Sobel-Operator allerdings mit einem Vorzeichentausch versehen. Dies spielt zwar keine große Rolle, wenn es darum geht, Kanten zu finden, lässt sich aber dennoch erwähnen.
- Eine weitere Quelle (leider ebenfalls kein eigenständiges Buch) bietet etwa ein Skript einer Vorlesung zum Thema Bildverarbeitung ([5]). Hier wiederum ist der Sobel-Operator ohne ein Vertauschen der Vorzeichen aufgeführt.--Stultissimum 21:15, 3. Jun 2006 (CEST)
- Im Buch "Digital Image Processing" von Rafael C. Rodiguez wird der Sobel Operator auch ohne Normierung verwendet, allerdings wird dort die richtungsunabhängige Information (die eigentlich Gradient heisst) nicht mittels (x^2+y^2)^1/2 berechnet, sondern mit abs(x)+abs(y). Im Allgemeinen sind alle Versionen, ob mit Normierung oder Ohne, ob mit gespiegelten Sobel Operatoren oder ohne Richtig! Begründung kann in "Digitale Bildverarbeitung" von Bernd Jähne nachgelesen werden. Die veränderte Berechnung des Gradienten wäre als Alternative einzufügen, da sie wesentlich weniger Rechenarbeit benötigt als Quadrieren und Radizieren.--s_jaeckel 12:15, 25. März 2009 (CEST)
- Die Normierung ist wichtig, wenn es darum geht, den Gradienten korrekt zu schätzen. Wenn man nur eine Edge-Map erstellen will, kann man auf die Normierung verzichten. Der Sobel-Operator selbst enthält daher keine Normierung, aber in guten Büchern ist sie trotzdem angegeben. (nicht signierter Beitrag von 80.134.20.218 (Diskussion | Beiträge) 01:26, 28. Aug. 2009 (CEST))
- Meines Erachtens sollte die alternative Definition des Sobel-Operators mit dem Faktor 1/8 vor der Matrix zumindest erwähnt werden! Zwar weiß ich nicht, welchen Operator Sobel selbst verwendet hat. Der Sobel-Operator wird in der Literatur auch unterschiedlich definiert. Aber auf einer anderen wiki-Seite (http://en.wiki.x.io/wiki/Image_gradient) heißt es: "The Sobel operator represents a rather inaccurate approximation of the image gradient, but is still of sufficient quality to be of practical use in many applications." Das stimmt natürlich nur, wenn der Faktor dabei ist. Insofern ist wiki derzeit inkonsistent! Ebenso sollte erwähnt werden, für welche Achsenrichtungen der Sobel-Operator den Gradienten realisiert: So wie die Vorzeichen derzeit stehen, sollte die x-Achse nach links und die y-Achse nach oben zeigen. Ein Literaturbeispiel für den Sobel-Operator mit dem Faktor ist übrigens Bernd Jähne, Digitale Bildverarbeitung, 6. Auflage 2005, Springer-Verlag Berlin Heidelberg. Gruß --zoglala (14:30, 16. Jul 2010 (CEST), Datum/Uhrzeit nachträglich eingefügt, siehe Hilfe:Signatur)
Gradientenrichtung
BearbeitenNoch ein Hinweis zur praktischen Anwendung: Die Formeln sind schön und gut. Aber wenn man mit dem Beispielbild versucht die Winkel der (offensichtlichen) Kanten im Bild zu plotten, sollte man darauf achten, dass sich in Flächen unsinnige / nicht signifikante Werte ergeben. Die kann man aber mit einem Threshold über G herausfiltern. Blart 12:04, 3. Jun. 2009 (CEST)
Eigentlich sind die Formeln Eigenschaften des Gradienten und sollten meines Erachtens dort beschrieben werden. (nicht signierter Beitrag von 80.134.20.218 (Diskussion | Beiträge) 01:26, 28. Aug. 2009 (CEST))
Faltung
BearbeitenVerstehe ich das richtig: Der Faltungsoperator ist zu verstehen als
Falls ja ist der Link zur Faltung falsch. Der verlinkte Artikel erklärt Faltung im Sinne des (diskreten) Faltungsintegrals; nach der dortigen Definition wäre die Faltung von oben und damit gar nicht definiert. Oder soll die Matrix durch 0 fortgesetzt werden? Dann ergibt's wieder Sinn - das sollte dann aber irgendwo stehen. -- Pberndt (DS) 23:57, 13. Jul. 2009 (CEST)
- Alle Werte außerhalb des angegebenen Bereichs des Faltungskernels werden als 0 vorausgesetzt. Die Faltung ist aber auch in den Randbereichen des Bildes nicht definiert. Hier gibt es mehrere Möglichkeiten, das Problem zu lösen. Entweder werden nicht existente Pixel als Nullpixel angesehen, oder die Randpixel werden dupliziert, oder die Bildfunktion wird als zyklisch betrachtet. All das hat aber nichts mit dem Sobel-Operator zu tun, sondern gehört zur linearen Faltung und damit meines Erachtens nicht in diesen Artikel. (nicht signierter Beitrag von 80.134.20.218 (Diskussion | Beiträge) 01:26, 28. Aug. 2009 (CEST))
- Folglich eine fehlende Information im Faltungsartikel. Werde ich dort anmerken. -- Pberndt (DS) 12:46, 28. Aug. 2009 (CEST)
5x5-Operatoren
BearbeitenSollte man die entsprechenden 5x5-Operatoren auch hier erwähnen? Die gehören ja auch dazu. Vor allem wenn man keine zeitkritische Anwendung hat und man Wert auf ein exakteres Ergebnis legt können die von Nutzen sein.
Im Englischen haben sie dafür einen Absatz Extension to other dimensions. Das wäre sicher auch noch nett, das in 3D anzugeben. Kann man alles aus Tabelle B.11 aus der Arbeit von Scharr 2000 entnehmen (Arbeit ist online verfügbar, siehe Referenz).
und wie allgemein mal wieder:
Bzw. die diskrete Version : (diese kann man selbst wieder aus der Faltung zweier Vektoren darstellen: . (Und warum Scharr selber das so darstellt muss einen programmiertechnischen Sinn haben der mir aber grade entgeht weil ich weder Informatiker bin, noch das in einer rechnerintensiven Anwendungen implementiere. Vermute man kann die Gesamtzahl der FLOPS drücken wenn man ein Bild mit zwei 5x1-Faltungen hintereinander numbercruncht statt mit einem 5x5. Nur ne Theorie...)
Welcher jetzt "besser" ist muss jeder selber entscheiden. Die jeweiligen "Fehler" werden ebenfalls in Scharr 2000 Tabelle B.11 erwähnt. Ganz allgemein: Gleitkomma besser als diskret (weil das nur Approximation). 5x5 sind meist besser als 3x3. Scharr ist optimiert auf Fehler und wird deshalb ewig der beste bleiben und ihr könnt alle anderen vergessen ;-)
Ganz allgemein finde ich, dass man es als Laie nicht so einfach hat aus dem mit theoretischen Formeln vollgestopften Faltungsartikel sehr viel schlauer zu werden wenn man ganz simple ein Bild falten will. Da fehlt mir noch etwas die Verknüpfung der theoretischen und der praktischen Artikel. Blart 11:33, 16. Feb. 2010 (CET)
Vorzeichen der Matrizen?
BearbeitenSollte der Horizontale-Kantenfilter nicht immer genau anderes Vorzeichen haben, also sozusagen die Matrix mit (-1) multipliziert werden? Gibt es eine Quelle für diese Matrix? --Martin Thoma 16:08, 15. Sep. 2013 (CEST)