Forum: Digitale Signalverarbeitung / DSP / Machine Learning Sobel Operator in 1D


von Homer (Gast)


Lesenswert?

Für 2D ist der Sobel Operator die bekannte 3x3 Matrix. Was ich mich nun 
frage, da ich nur mit 1D Signalen zu tun habe: Kann man den Sobel 
Operator auch auf ein 1D Signal anwenden und wenn ja, wie sieht der 
Sobel Operator dann für 1D Signale genau aus?

Einfach die 3x3 Matrix zeilenweise anwenden oder übersehe ich da etwas? 
Kann jemand vielleicht ein Beispiel geben?

von Mark B. (markbrandis)


Lesenswert?

Was genau willst Du denn machen? Der Sobel-Operator wird üblicherweise 
zur Kantendetektierung in Bilddateien verwendet.

von Homer (Gast)


Lesenswert?

Mark B. schrieb:
> Was genau willst Du denn machen?

Kantenerkennung - eben nur in einem 1D Signal.

von Kantenerkenner (Gast)


Lesenswert?

Das wäre die Vorschrift für eine Kante im Mittelpunkt M und den Nachbarn 
L sowie R:

(1 0 -1) also praktisch L-R und das gfs betragsmässig interpretiert.

von Homer (Gast)


Lesenswert?

Kantenerkenner schrieb:
> Das wäre die Vorschrift für eine Kante im Mittelpunkt M und den
> Nachbarn
> L sowie R:
>
> (1 0 -1) also praktisch L-R und das gfs betragsmässig interpretiert.

Ich versuche mal ein Beispiel. Ist folgendes korrekt?

x = [0 0 0 1 1 1]

(1*0)+(0*0)+(-1*0) = 0
(1*0)+(0*0)+(-1*1) = -1
(1*0)+(0*1)+(-1*1) = -1
(1*1)+(0*1)+(-1*1) = 0

y = [0 -1 -1 0]

Nun hat der Sobel Operator aber die Faktoren (+/-) 1,2,1. Ich meine mal 
gelesen zu haben, dass dies eine zusätzliche Glättung bewirkt. Wäre das 
dann einfach (1 2 1 0 -1 -2 -1)?

von Mark B. (markbrandis)


Lesenswert?

Homer schrieb:
> Ich versuche mal ein Beispiel. Ist folgendes korrekt?
>
> x = [0 0 0 1 1 1]
>
> (1*0)+(0*0)+(-1*0) = 0
> (1*0)+(0*0)+(-1*1) = -1
> (1*0)+(0*1)+(-1*1) = -1
> (1*1)+(0*1)+(-1*1) = 0
>
> y = [0 -1 -1 0]

Wenn ich das noch halbwegs richtig im Kopf habe:

Führt man eine lineare Faltung eines Signalvektors mit M Elementen mit 
einem solchen mit N Elementen durch, dann hat das Ergebnis M + N - 1 
Elemente.

Hier wären das demnach: 6 + 3 - 1 = 8

da x hier sechs Elemente enthält und das anzuwendende Filter drei. 
Demnach sollte der Vektor y acht Elemente enthalten. Oder aber ich irre 
mich - die Vorlesung ist schon verdammt lange her ;-)

: Bearbeitet durch User
von Tippgeber (Gast)


Lesenswert?

Er hat die Ränder weggelassen. Rauskommen würde:

U U 0 -1 -1 0 U U

weil ja für die Randwerte keine Eingangswerte zur Verfügung stehen.

Man kann die Detaktion auf über ein Pixel machen, also 1 -1 0 Dann ist 
das Ergebnis aber versetzt.

von rme (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Beispiel, wie man sich solche Überlegungen selbst herleitet.

von Mark B. (markbrandis)


Lesenswert?

rme schrieb:
> Hier ein Beispiel, wie man sich solche Überlegungen selbst herleitet.

Magst Du uns das Buch nennen, aus dem dieser Text ist? Bitte? :-)

von rme (Gast)


Lesenswert?

Das ist aus meiner Bachelor-Arbeit :) Die unterliegt leider einem 
Sperrvermerk, deshalb musste ich einige Begriffe streichen und kann sie 
nicht im Ganzen veröffentlichen.

von Homer (Gast)


Lesenswert?

rme schrieb:
> Das ist aus meiner Bachelor-Arbeit :) Die unterliegt leider einem
> Sperrvermerk, deshalb musste ich einige Begriffe streichen und kann sie
> nicht im Ganzen veröffentlichen.

Jäh05 -> "Digital Image Processing" von Bernd Jähne oder?

von rme (Gast)


Lesenswert?

Genau, damals (ist 3 Jahre her) in dieser Variante:

Bernd Jähne. Digitale Bildverarbeitung. 5. Auflage. Springer, 2005.

von Homer (Gast)


Lesenswert?

rme schrieb:
> Genau, damals (ist 3 Jahre her) in dieser Variante:
>
> Bernd Jähne. Digitale Bildverarbeitung. 5. Auflage. Springer, 2005.

Kannst du noch andere Literatur zu dem Thema empfehlen?

von rme (Gast)


Lesenswert?

Einige Paper und Arbeiten der Erfinder sind frei verfügbar und geben 
schöne Einblicke, z.B.:

* J. Canny. „A Computational Approach to Edge Detection“

* Hanno Scharr. „Optimale Operatoren in der Digitalen Bildverarbeitung“

von J. S. (engineer) Benutzerseite


Lesenswert?

Sobel und andere sind SO! nur in einem absolut bereinigten und idealen 
Bild sicher anwendbar. Für die meisten praktischen Fälle muss ein Bild 
(und auch das hier geforderte eindimensionale Signal) meistens 
vorbereitet werden oder Korrekturen und z.B. Rauschfilterung müssen im 
Filter implementiert sein. Dazu muss man den Vektor entsprechend 
aufziehen und die geforderten Frequenzen einbeschreiben.

von Homer (Gast)


Lesenswert?

Jürgen S. schrieb:
> Sobel und andere sind SO! nur in einem absolut bereinigten und
> idealen
> Bild sicher anwendbar. Für die meisten praktischen Fälle muss ein Bild
> (und auch das hier geforderte eindimensionale Signal) meistens
> vorbereitet werden oder Korrekturen und z.B. Rauschfilterung müssen im
> Filter implementiert sein.

Das ist klar, also z.B. Canny. Wollte nur die reine Kantenerkennung auf 
1D übertragen verstehen, nicht das Canny "Komplettpaket" :-)

@rme
Danke für die Tipps!

von J. S. (engineer) Benutzerseite


Lesenswert?

Das Gesagte mit der Fehlerunterdrückung gilt auch für den 1D-Fall. Siehe 
"Sprungerkennung".

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
Noch kein Account? Hier anmelden.