Я использую алгоритм бикубической интерполяции для масштабирования карты высот, и я замечаю некоторые артефакты вокруг границ пикселей.
Однако эти артефакты не появляются, когда я использую простую кубическую интерполяцию (сплайн).
Может быть потому, что бикубическая интерполяция не гарантирует непрерывность второй производной, в отличие от кубического сплайна?
Если да, то есть ли известные алгоритмы, которые имеют непрерывную вторую производную?
Иначе есть ли способ справиться с этими артефактами?
Линейная интерполяция (показывает границы пикселей):
Бикубическая интерполяция (артефакты, видимые на границах пикселей):
Кубическая интерполяция (без заметных артефактов):
Я попробовал несколько бикубических формул, которые дали мне те же результаты. Вот некоторые примеры:
Редактировать:
Я сделал несколько поисков и обнаружил, что B-Spline имеет непрерывный C2 (также предложенный Бхаратом). Я реализовал это, и это выглядит хорошо, даже если это приближение, а не интерполяция (это не проходит через образцы).
B-сплайн (приближение):
вторая производная кубического B-сплайна непрерывна, а бикубическая интерполяция — нет.
http://en.wikipedia.org/wiki/Spline_interpolation
http://en.wikipedia.org/wiki/Cubic_interpolation
Других решений пока нет …