三种常见的图像处理双三次插值算法
双立方插值计算涉及16像素,间(i’, j’)像中的包括
小数部分的像素坐标。dx表示X方向的小数坐标。dy表示Y方向的小数坐标。
详细
能够看下图:
依据上述图示与双立方插值的数学表达式能够看出。双立方插值本质上图像16个像素点
权重卷积之和作为新的像素值。
当中R(x)表示插值表达式,能够依据须要选择的表达式不同。常见有基于三角取值、Bell
分布表达、B样条曲线表达式。
1. 基于三角形採样数学公式为
最简单的线性分布,代码实现例如以下:
private double triangleInterpolation( double f )
{
f = f / 2.0;
if( f < 0.0 )
{
return ( f + 1.0 );
}
else
{
return ( 1.0 - f );
}
}2.基于Bell分布採样的数学公式例如以下:
Bell分布採样数学公式基于三次卷积计算实现。代码实现例如以下:
private double bellInterpolation( double x )
{
double f = ( x / 2.0 ) * 1.5;
if( f > -1.5 && f < -0.5 )
{
return( 0.5 * Math.pow(f + 1.5, 2.0));
}
else if( f > -0.5 && f < 0.5 )
{
return 3.0 / 4.0 - ( f * f );
}
else if( ( f > 0.5 && f < 1.5 ) )
{
return( 0.5 * Math.pow(f - 1.5, 2.0));
}
return 0.0;
}3.基于B样条曲线採样的数学公式例如以下:
是一种基于多项式的四次卷积的採样计算,代码例如以下:
private double bspLineInterpolation( double f )
{
if( f < 0.0 )
{
f = -f;