J'utilise un algorithme d'interpolation bicubique afin d'élever une carte de hauteur, et je remarque des artefacts autour des limites des pixels. Cependant, ces artefacts ne semblent pas apparaître lorsque j'utilise une simple interpolation cubique (spline).
Serait-ce parce que l'interpolation bicubique ne garantit pas que la dérivée seconde soit continue, contrairement à la spline cubique? Si oui, existe-t-il des algorithmes connus qui ont une dérivée seconde continue? Sinon, existe-t-il un moyen de gérer ces artefacts?
Interpolation linéaire (montre les limites des pixels):
Interpolation bicubique (artefacts visibles aux limites des pixels):
Interpolation cubique (pas d'artefacts perceptibles):
J'ai essayé plusieurs formules bicubiques, ce qui m'a donné les mêmes résultats. Voici quelques exemples:
la source
Réponses:
Dans l'article de Ken Perlin sur l'amélioration du bruit , il mentionne un problème très similaire. Le cube utilisé dans le papier de bruit d'origine crée des discontinuités aux limites entières en raison des propriétés de ses dérivés. Dans son article révisé, il propose une interconnexion de
6t^5 - 15t^4 + 10t^3
pour résoudre ces problèmes.la source
J'ai fait quelques recherches et j'ai constaté que B-Spline avait un C2 continu. Je l'ai implémenté et ça a l'air bien, même si c'est une approximation et non une interpolation (ça ne passe pas par les échantillons).
B-spline (approximation):
la source