Move splineKernel function nearer to Lanczos definitions.
This commit is contained in:
parent
c1b8c4986e
commit
9e5ed35b85
24
filters.go
24
filters.go
|
@ -198,7 +198,19 @@ func Bilinear(img image.Image, factor [2]float32) Filter {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bicubic interpolation (with cubic hermite spline)
|
||||||
|
func Bicubic(img image.Image, factor [2]float32) Filter {
|
||||||
|
return createFilter(img, factor, 4, splineKernel(0, 0.5))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mitchell-Netravali interpolation
|
||||||
|
func MitchellNetravali(img image.Image, factor [2]float32) Filter {
|
||||||
|
return createFilter(img, factor, 4, splineKernel(1.0/3.0, 1.0/3.0))
|
||||||
|
}
|
||||||
|
|
||||||
func splineKernel(B, C float32) func(float32) float32 {
|
func splineKernel(B, C float32) func(float32) float32 {
|
||||||
|
const lanczosTableSize = 300
|
||||||
|
|
||||||
factorA := 2.0 - 1.5*B - C
|
factorA := 2.0 - 1.5*B - C
|
||||||
factorB := -3.0 + 2.0*B + C
|
factorB := -3.0 + 2.0*B + C
|
||||||
factorC := 1.0 - 1.0/3.0*B
|
factorC := 1.0 - 1.0/3.0*B
|
||||||
|
@ -220,16 +232,6 @@ func splineKernel(B, C float32) func(float32) float32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bicubic interpolation (with cubic hermite spline)
|
|
||||||
func Bicubic(img image.Image, factor [2]float32) Filter {
|
|
||||||
return createFilter(img, factor, 4, splineKernel(0, 0.5))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mitchell-Netravali interpolation
|
|
||||||
func MitchellNetravali(img image.Image, factor [2]float32) Filter {
|
|
||||||
return createFilter(img, factor, 4, splineKernel(1.0/3.0, 1.0/3.0))
|
|
||||||
}
|
|
||||||
|
|
||||||
func lanczosKernel(a uint) func(float32) float32 {
|
func lanczosKernel(a uint) func(float32) float32 {
|
||||||
return func(x float32) (y float32) {
|
return func(x float32) (y float32) {
|
||||||
if x > -float32(a) && x < float32(a) {
|
if x > -float32(a) && x < float32(a) {
|
||||||
|
@ -242,8 +244,6 @@ func lanczosKernel(a uint) func(float32) float32 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const lanczosTableSize = 300
|
|
||||||
|
|
||||||
// Lanczos interpolation (a=2)
|
// Lanczos interpolation (a=2)
|
||||||
func Lanczos2(img image.Image, factor [2]float32) Filter {
|
func Lanczos2(img image.Image, factor [2]float32) Filter {
|
||||||
return createFilter(img, factor, 4,
|
return createFilter(img, factor, 4,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user