Ich versuche m=0
, n=46
Zernike-Momente höherer Ordnung (z. B. ) für ein Bild zu berechnen . Ich habe jedoch ein Problem mit dem radialen Polynom (siehe Wikipedia ). Dies ist ein Polynom, das im Intervall [0 1] definiert ist. Siehe den MATLAB-Code unten
function R = radial_polynomial(m,n,RHO)
R = 0;
for k = 0:((n-m)/2)
R = R + (-1).^k.*factorial(n-k) ...
./ ( factorial(k).*factorial((n+m)./2-k) .* factorial((n-m)./2-k) ) ...
.*RHO.^(n-2.*k);
end
end
Dies stößt jedoch offensichtlich auf numerische Probleme in der Nähe RHO > 0.9
.
Ich habe versucht, es so umzugestalten, dass ich polyval
dachte, es könnte einige bessere Algorithmen hinter den Kulissen geben, aber das hat nichts gelöst. Die Konvertierung in eine symbolische Berechnung hat zwar das gewünschte Diagramm erstellt, war jedoch selbst für ein einfaches Diagramm wie das gezeigte erstaunlich langsam.
Gibt es eine numerisch stabile Methode zur Bewertung solcher Polynome höherer Ordnung?