2016-05-30 10 views
-2

Я работаю в обработке изображений, чтобы получить промежуточные точки, используя кубическую сплайн-интерполяцию, как сделано here. Как я могу достичь этого на Java-языке. Например, у меня есть некоторые основные моменты:Как использовать кубическую сплайн-интерполяцию для получения кривой в java?

  • x = 24, 35, 67, 78,79.
  • у = 13, 45, 8, 45, 23. Я хочу, чтобы получить промежуточные точки при х = 1 до 100.

enter image description here

Есть ли библиотека или функция доступна в Java. Пожалуйста скажи.

ответ

0

Apache common math lib имеет класс AkimaSplineInterpolator, который может быть использован для вычисления кубической сплайновой интерполяции для набора данных с использованием алгоритма Akima.

http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/analysis/interpolation/AkimaSplineInterpolator.html

<dependency> 
<groupId>org.apache.commons</groupId> 
<artifactId>commons-math3</artifactId> 
<version>3.6.1</version> 
</dependency> 

Код ниже не в полном объеме для вашего требования. Однако вы можете принять это как отправную точку и продолжить дальше. Надеюсь это поможет!

public static void main(String[] main) { 
    double [] xDouble = new double [] {24.0, 35.0, 67.0, 78.0,79.0}; 
    double [] yDouble = new double [] {13.0, 45.0, 8.0, 45.0, 23.0}; 

    AkimaSplineInterpolator asi = new AkimaSplineInterpolator(); 
    PolynomialSplineFunction psf = asi.interpolate(xDouble, yDouble); 

    for (PolynomialFunction pf : psf.getPolynomials()) { 
     System.out.println(pf.polynomialDerivative()); 
    } 
}