Wie vermeide ich Interpolationsartefakte beim Skalieren einer Höhenkarte?


9

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

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 mit einer kontinuierlichen zweiten Ableitung? Gibt es sonst eine Möglichkeit, mit diesen Artefakten umzugehen?

Lineare Interpolation (zeigt die Pixelgrenzen): Geben Sie hier die Bildbeschreibung ein

Bikubische Interpolation (Artefakte an Pixelgrenzen sichtbar): Geben Sie hier die Bildbeschreibung ein

Kubische Interpolation (keine erkennbaren Artefakte): Geben Sie hier die Bildbeschreibung ein

Ich habe mehrere bikubische Formeln ausprobiert, die zu den gleichen Ergebnissen führten. Hier sind einige Beispiele:


Für mich ist die bikubische Version die beste, sie hält hohe Frequenzen und sieht ziemlich gut aus. Sie sagen, es gibt Artefakte, aber sie sind geringfügig und den schrecklichen Verlust nicht wert, den Splines Ihnen bringen. meine Meinung aber.
v.oddou

@ v.oddou Ich denke, dass das von Ihnen beschriebene Hochfrequenzgefühl teilweise auf die Artefakte selbst zurückzuführen ist. In diesem Bild wird es nicht gut angezeigt, aber das Gelände ist aus einigen Winkeln und abhängig von der Sonnenposition sehr quadratisch. Es ist noch deutlicher, wenn die Normalen oder die Steigungen angezeigt werden. Davon abgesehen ist es wahr, dass die B-Splines das Gelände stark glätten (keine scharfen Spitzen mehr). Ich suche immer noch nach einer besseren Alternative.
Deck

Antworten:


4

In Ken Perlins Artikel über verbessertes Rauschen erwähnt er ein sehr ähnliches Problem. Die im ursprünglichen Rauschpapier verwendete Kubik erzeugt aufgrund der Eigenschaften ihrer Ableitungen Diskontinuitäten an den ganzzahligen Grenzen. In seinem überarbeiteten Papier schlägt er eine Interplantation vor 6t^5 - 15t^4 + 10t^3, um diese Probleme anzugehen.


Das klingt interessant, auch wenn ich nicht sicher bin, wie ich es in meinem Code verwenden soll. Ich werde das untersuchen.
Deck

3

Ich habe einige Suchen durchgeführt und festgestellt, dass B-Spline ein kontinuierliches C2 hat. 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 (Annäherung): Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.