2014-02-12 14 views
8

Ich verwende einen bikubischen Interpolationsalgorithmus, um eine Höhenkarte hochzurechnen, und ich bemerke einige Artefakte um die Pixelgrenzen herum. Diese Artefakte scheinen jedoch nicht zu erscheinen, wenn ich eine einfache kubische Interpolation (Spline) verwende.Bicubische Interpolationsartefakte (Bild hochskaliert)

Könnte es sein, dass die bikubische Interpolation nicht garantiert, dass die zweite Ableitung im Gegensatz zum kubischen Spline stetig ist? Wenn ja, gibt es bekannte Algorithmen, die eine kontinuierliche zweite Ableitung haben? Gibt es sonst eine Möglichkeit, mit diesen Artefakten umzugehen?

Linearinterpolation (die Pixel Grenzen zeigt): Linear interpolation

bikubische Interpolation (Artefakte an Pixeln Grenzen sichtbar): Bicubic interpolation

Cubic Interpolation (keine merklichen Artefakte): enter image description here

I versuchte mehrere bikubische Formeln, die mir die gleichen Ergebnisse gaben. Hier sind einige Beispiele:


Edit: ich einige Recherchen gemacht und festgestellt, dass B-Spline eine kontinuierliche C2 (auch von Bharat vorgeschlagen). Ich habe es implementiert und es sieht gut aus, auch wenn es eine Annäherung und keine Interpolation ist (es geht nicht durch die Samples).

B-Spline (Näherung): b-spline

+0

Welche Software haben Sie diese Bilder zu erzeugen, verwenden? Sieht wirklich gut aus! – ajwood

+0

Ich arbeite an meiner eigenen OpenGL-Engine. – deck

+1

Es gibt eine Reihe von verwandten bikubischen Filtern, von denen B-Spline eins ist. Siehe http://www.cs.utexas.edu/~fussell/courses/cs384g/lectures/mitchell/Mitchell.pdf für die Originalarbeit und http://entropymine.com/imageworsner/bicubic/ für die vereinfachte Version. Du könntest den von Mitchell und Netravali empfohlenen mit B = 1/3, C = 1/3 versuchen. –

Antwort