Hi Leuts,
Ich befürchte zwar das hier keiner weis was ich haben will, aber wer nicht versucht dem kann auch nicht geholfen werden
.
Ich versuche gerade einen Anisotropisch Inhomogenen Diffusionsfilter zu implementieren.
Die Programmiertechnische Seite ist dabei das Kleinste Problem.
Im Speziellen braucht dieser Filter eine Sogenante Hesse Matrix.
Diese Ist in meinem fall 2x2 Groß, beinhaltet also die Partiellen Ableitungen 2. Ordnung. also 4 Stück verschiedene.
dx^2, dxdy, dydx, dy^2
Mit Hilfe diverser Taylerreihenentwicklungen ist es mir gelungen die dx^2 und dy^2 Korreckt zu berechnen ( das weis ich weil der Isotropisch Inhomogene Diffusionsfilter diese Werte benötigt, und dieser funktioniert 1a ).
Mein Problem sind also die Partiellen ableitungen dxdy und dydx
Mein Bisheriger versuch war mittels eines sogenanten Twist Vektors. Aber Leider kommt da nichts Brauchbares raus. Trotzdem hier mein Ansatz.
Delphi-Quellcode:
Function Derif2XYYX(Const Bitmap: Tbitmap; x, y: Integer): FPoint;
Var
d3: TRGBF;
p1, p2, p3, p4: TRGB;
Begin
p1 := getpixel(bm, x - 1, y - 1);
p2 := getpixel(bm, x + 1, y - 1);
p3 := getpixel(bm, x - 1, y + 1);
p4 := getpixel(bm, x + 1, y + 1);
d3.r :=( p4.r + p1.r - p2.r - p3.r)/4;
d3.g :=( p4.g + p1.g - p2.g - p3.g)/4;
d3.b :=( p4.b + p1.b - p2.b - p3.b)/4;
result.dx := d3;
result.dy := d3;
End;
Man kann sehen das ich den Ansatz der Zentralen Differenzen versucht habe. Aber Leider geht dieser Ansatz nur bei dx^2 und dy^2 .
Weis hier vielleicht jemand wie's gehen soll ?
Angeblich solls ja gehn wenn man nen Besier Patch in die entsprechen vielen Stützwerte reinlegt und den kann man dann Partiell ableiten ...