LabVIEWForum.de
Kreisförmige Filtermaske - Array - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Kreisförmige Filtermaske - Array (/Thread-Kreisfoermige-Filtermaske-Array)



Kreisförmige Filtermaske - Array - fischer - 14.08.2015 13:26

Hallo liebe LabVIEW,

Mein Problem scheint recht simpel, aber ich verzweifel...
Ich möchte eine kreisförmige Filtermaske erstellen, die ich in einem Array ablegen will, dazu will ich LabView sagen, wie viele Pixel Durchmesser bzw Radius der Kreis haben soll.
Das innere des Kreises, fülle ich nach dem Abstandsgesetz mit 1en auf.
Ich frage also ob x²+y² kleiner gleich r² ist, wenn ja schreibt er eine 1 in das jeweilige Array-Element (Kreisformel), funktioniert soweit auch alles ohne Probleme, nur jetzt wird es für mich kompliziert.
Die "Pixel" die nicht komplett innerhalb des Kreises liegen, sondern nur von diesem tangiert werden, sollen aber keine 0en enthalten, sondern sozusagen die "Fläche" die der Kreis vom Pixel schneidet, also die Schnittmenge des Pixels mit dem Kreiselement in diesem Pixel.

Im Endeffekt sind im inneren des Arrays also 1en und in den Ecken 0en. An den Kanten der 1en sollen dann aber halt Dezimalwerte zwischen 0 und 1 stehen, je nachdem wie groß die geschnittene Fläche ist.

Ich hoffe, dass mein Problem so klar geworden ist und mir jemand von euch helfen kann.

Euch allen ein schönes Wochenende.
Viele Grüße, Max


RE: Kreisförmige Filtermaske - Array - GerdW - 14.08.2015 13:46

Hallo Max Fischer,

Zitat:Im Endeffekt sind im inneren des Arrays also 1en und in den Ecken 0en. An den Kanten der 1en sollen dann aber halt Dezimalwerte zwischen 0 und 1 stehen, je nachdem wie groß die geschnittene Fläche ist.

Idee: arbeite mit "Oversampling"…
Benutze ein feineres Raster als du später für deine Pixel benötigst. Wieviel feiner es sein muss, entscheidest du über die gewünschte Genauigkeit.

Nehmen wir z.B. ein 10fach feineres "Subpixel"-Raster. Für dieses berechnest du wie gehabt, ob die Subpixel im oder außerhalb des Kreises sind. Dann nimmst du jeden 10×10-Block von Subpixeln und bildest den Mittelwert davon: der ergibt dann dein eigentliches Pixel (in diesem Beispiel auf 1% genau…)!


RE: Kreisförmige Filtermaske - Array - jg - 14.08.2015 14:32

https://de.wikipedia.org/wiki/Kreissegment Wink

Gruß, Jens


RE: Kreisförmige Filtermaske - Array - Lucki - 15.08.2015 13:21

Ich bezweifle, dass es toll was bringt, wenn man da mit Kreissegment-Flächenberechnungen das Problem so exakt wie möglich löst. Eine einfache lineare Interpolation, wenn der Masken-Umfangsring ein Pixelkreisfläche durchschneidet, tut es sicherlich auch. (Und wenn die Pixel quadratisch sein sollten, dann eben mit einer äquivalenten Kreisfläche rechnen)

Also so:
Rm=Radius des kreisförmigen Maske, Rp = Radius der Pixels, r = x²+y² = Lage des zu untersuchenden Pixels
Wenn r < Rm-Rp: Element = 1
Wenn r > Rm+Rp: Element = 0
Wenn Rm-Rp < r <Rm+Rp: Element = (Rm+Rp-r)/2Rp


RE: Kreisförmige Filtermaske - Array - fischer - 17.08.2015 06:15

Guten Morgen zusammen,

Danke erstmal für die Ansätze, ich werde Sie gleich mal ausprobieren.
Dass mit dem "Upsampling" hatte ich auch schon mal überlegt, war mir aber nicht sicher, ob die Lösung nicht zu ungenau und eventuell später auch zu rechenintensiv wäre.

Guten Start in die Woche wünsche ich.
LG, Max