From 97753052db0239d907631d4a480ac742412827d3 Mon Sep 17 00:00:00 2001 From: Nick White Date: Sun, 26 Jul 2020 23:44:41 +0100 Subject: Switch to integralimg 0.3.0 and use the new functions for integral sauvola --- go.mod | 2 +- go.sum | 4 ++-- sauvola.go | 8 +++++++- testdata/pg1_integralsauvola_k0.3_w19.png | Bin 19618 -> 19620 bytes testdata/pg1_integralsauvola_k0.5_w19.png | Bin 18439 -> 18435 bytes testdata/pg1_integralsauvola_k0.5_w41.png | Bin 18284 -> 18282 bytes 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b2c2c0c..2ac2eb3 100644 --- a/go.mod +++ b/go.mod @@ -7,5 +7,5 @@ require ( github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/wcharczuk/go-chart v2.0.2-0.20191206192251-962b9abdec2b+incompatible golang.org/x/image v0.0.0-20200618115811-c13761719519 // indirect - rescribe.xyz/integralimg v0.2.1 + rescribe.xyz/integralimg v0.3.0 ) diff --git a/go.sum b/go.sum index d1d33ca..42e324b 100644 --- a/go.sum +++ b/go.sum @@ -16,5 +16,5 @@ golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20181205014116-22934f0fdb62/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -rescribe.xyz/integralimg v0.2.1 h1:OhYifujtlVGYm/WfLl8ios/bouzIWcwuzbRyCZQiab0= -rescribe.xyz/integralimg v0.2.1/go.mod h1:2euyPigpyIixTWO6JtFEhDp/3YKA6yy+d8g17oL0L0s= +rescribe.xyz/integralimg v0.3.0 h1:G5/yR8jKtewLlCEkygg7T8h1nllwNt4SmLdw+1fCsE4= +rescribe.xyz/integralimg v0.3.0/go.mod h1:2euyPigpyIixTWO6JtFEhDp/3YKA6yy+d8g17oL0L0s= diff --git a/sauvola.go b/sauvola.go index 9eef01b..49181de 100644 --- a/sauvola.go +++ b/sauvola.go @@ -61,7 +61,8 @@ func PreCalcedSauvola(intImg integralimg.Image, intSqImg integralimg.SqImage, im for y := b.Min.Y; y < b.Max.Y; y++ { for x := b.Min.X; x < b.Max.X; x++ { - m, dev := integralimg.MeanStdDevWindow(intImg, intSqImg, x, y, windowsize) + r := centeredRectangle(x, y, windowsize) + m, dev := integralimg.MeanStdDev(intImg, intSqImg, r) // Divide by 255 to adjust from Gray16 used by integralimg to 8 bit Gray m8 := m / 255 dev8 := dev / 255 @@ -76,3 +77,8 @@ func PreCalcedSauvola(intImg integralimg.Image, intSqImg integralimg.SqImage, im return new } + +func centeredRectangle(x, y, size int) image.Rectangle { + step := size / 2 + return image.Rect(x - step - 1, y - step - 1, x + step, y + step) +} diff --git a/testdata/pg1_integralsauvola_k0.3_w19.png b/testdata/pg1_integralsauvola_k0.3_w19.png index 00aa1d8..a648969 100644 Binary files a/testdata/pg1_integralsauvola_k0.3_w19.png and b/testdata/pg1_integralsauvola_k0.3_w19.png differ diff --git a/testdata/pg1_integralsauvola_k0.5_w19.png b/testdata/pg1_integralsauvola_k0.5_w19.png index 77a7194..86c0104 100644 Binary files a/testdata/pg1_integralsauvola_k0.5_w19.png and b/testdata/pg1_integralsauvola_k0.5_w19.png differ diff --git a/testdata/pg1_integralsauvola_k0.5_w41.png b/testdata/pg1_integralsauvola_k0.5_w41.png index 5ddc854..5b003f1 100644 Binary files a/testdata/pg1_integralsauvola_k0.5_w41.png and b/testdata/pg1_integralsauvola_k0.5_w41.png differ -- cgit v1.2.1-24-ge1ad