Charlie Vieth
acea8646b2
Fix error in YCC PixOffset and SubImage.
2014-08-12 14:22:06 -04:00
jst
ccddecd1bf
Merge branch 'charlievieth-master'
2014-08-05 18:01:45 +02:00
Charlie Vieth
a5a6a66088
Merge branch 'refactor'
2014-07-30 02:09:28 -04:00
Charlie Vieth
eefd4737aa
Optimize YCbCr image resize
2014-07-30 02:08:58 -04:00
Charlie Vieth
ee540982e0
Merge branch 'refactor'
2014-07-29 18:48:50 -04:00
Charlie Vieth
427b8d133e
Optimized Nearest-Neighbor function - 2x faster
2014-07-29 18:32:58 -04:00
Charlie Vieth
80b3fc2b3f
Pre-calculate start offset, optimize bound check
...
Increased performance by 30% for RGBA and 45% for Gray images, minor
performance increase for 16-bit images.
The start offset calculated by createWeights are stored in a slice and
passed to the resize functions to prevent duplication of effort.
2014-07-29 16:53:35 -04:00
jst
be07665345
Update README.md
2014-07-19 14:00:14 +02:00
jst
299762ed77
Add unit tests for converter.go
2014-07-19 13:31:16 +02:00
jst
016a61cd31
Optimize data-locality for a huge increase in processing speed.
...
This is a complete rewrite! The tight scaling loop needs data locality for optimal performance. The old version used lots of pointer redirections to access image data which was bad for data locality. By providing the complete loop for each image type, this problem is solved. Unfortunately this increases code duplication but the result should be worth it: I could measure a ~6x speed-up for certain test cases!
2014-07-19 13:19:31 +02:00
jst
bdfbbead13
Merge branch 'anisus-master'
...
Fixes #14 , regression from 494d8de4e5
2014-06-18 19:05:59 +02:00
Accipiter Nisus
f3cac2f865
Fix to resize correctly when source image.Bounds().Min is not (0,0)
2014-06-16 13:53:36 +10:00
jst
8aee0d995b
Update README.md to mention resize.Thumbnail.
2014-01-30 20:03:15 +01:00
jst
079ed2e48a
Merge branch 'master' of https://github.com/matrixik/resize into matrixik-master
2014-01-30 19:40:14 +01:00
jst
a83cb40860
Remove some redundancies.
2014-01-28 19:53:26 +01:00
jst
446eea2f7b
Remove LUT based filters.
...
Caching kernel weights makes using the LUT based approach obsolete. Now they seem to be even slower than their counterparts.
2014-01-28 18:54:57 +01:00
jst
9884534579
Cache kernel weights for each row.
...
For each row the convolution kernel is evaluated at fixed positions around "u". By calculating these values once for each row, a huge speedup is achieved.
2014-01-28 18:48:08 +01:00
jst
8f586c4f06
Add benchmarks to compare execution times.
...
Run "go test -bench LargeJpegThumb" to benchmark all functions at once.
2014-01-18 11:55:34 +01:00
jst
45368ad0cd
Multiply instead of dividing
2014-01-17 23:14:37 +01:00
jst
314cea6612
Avoid temporaries to save some cycles.
2014-01-17 22:54:15 +01:00
jst
7c5018c82b
Extract method "resizeSlice" to reduce duplicate code.
2014-01-17 19:05:30 +01:00
Dobrosław Żybort
b744503c5c
Add: thumbnail helper function
2013-11-27 22:40:16 +01:00
jst
f8ec710330
Fix wrong calculation of second adjust parameter.
2013-11-23 18:38:06 +01:00
jst
d9287fbcb6
Use x,y as coordinates of the origin image.
2013-11-23 18:02:18 +01:00
jst
d1bef9bdb6
Refactoring
2013-11-18 20:19:56 +01:00
jst
494d8de4e5
Speedup calculation by exploiting the separability of the resizing filter.
...
Should be ~5x faster! More optimization will follow.
before:
> go test -bench .
PASS
Benchmark_BigResizeLanczos3-4 1 2438137093 ns/op
Benchmark_BigResizeLanczos3Lut-4 1 1157612362 ns/op
Benchmark_Reduction-4 2 743950618 ns/op
after:
> go test -bench .
PASS
Benchmark_BigResizeLanczos3-4 5 403685685 ns/op
Benchmark_BigResizeLanczos3Lut-4 10 225539497 ns/op
Benchmark_Reduction-4 10 207004759 ns/op
2013-11-18 19:54:31 +01:00
jst
4d25061069
Fixed yet another typo.
2013-07-08 21:06:48 +02:00
jst
252ccc84a2
Add benchmarks for Lanczos3Lut to compare it with Lanczos3 performance.
2013-07-08 20:55:46 +02:00
jst
098f882331
Fix a typo.
2013-07-08 20:55:20 +02:00
jst
b272d51eaa
Update README.md
2013-07-08 20:54:24 +02:00
jst
a85ea9eaa8
Rename Lanczos functions using look-up tables to Lanczos2Lut, Lanczos3Lut and restore Lanczos2, Lanczos3 to give users the choice between higher speed or higher accuracy.
2013-07-08 20:48:20 +02:00
jst
9e5ed35b85
Move splineKernel function nearer to Lanczos definitions.
2013-07-08 20:40:36 +02:00
Geoff Adams
c1b8c4986e
Use a lookup table to speed up the Lanczos kernel
...
Profiling the resize operation using Lanczos kernels showed that most of
the time was spent in the Sin function, which is called twice per
evaluation of the Lanczos kernel. Generating a lookup table and doing a
linear interpolation between table entries speeds up the resize by a
factor of 4.
2013-07-04 02:28:43 -07:00
jst
33204d8746
Update README.md
2013-04-11 20:37:15 +02:00
jst
c37f8f8470
gofmt
2013-04-09 21:59:02 +02:00
jst
62777ac833
Precalculate bicubic factors, save some cycles.
2013-04-09 21:31:31 +02:00
jst
6448fff2ee
Generalize spline based filters
...
This also fixes a quality issue with Mitchell-Netravali: A factor was
missing in the calculation.
2013-04-04 22:32:33 +02:00
jst
5290c4773b
Add Travis build status in README
2013-04-03 20:50:30 +02:00
jst
09f4012229
Add Travis integration
2013-04-03 20:42:17 +02:00
jst
da95f74904
go fmt
2013-03-10 11:55:50 +01:00
jst
852f4a47e7
Merge branch 'no-image-shift' of http://github.com/jsummers/nfnt.resize
...
Merge branch 'fix-canvas-size-issue'
2013-03-10 11:33:44 +01:00
jst
84039c403b
Test for correct canvas size.
2013-03-10 10:58:08 +01:00
jst
b6fef854bc
Merge branch 'improve-canvas-size' of http://github.com/jsummers/nfnt.resize into fix-canvas-size-issue
2013-03-10 10:46:06 +01:00
jst
82ab8b977c
Make kernel the only dependency of convolution1d
2012-12-13 22:13:37 +01:00
jst
e512502b3c
Use range for more idiomatic Go
2012-12-13 21:55:44 +01:00
jst
bf09bbe0a3
boolToUint: true -> 1
2012-12-11 20:35:47 +01:00
jst
a32116ce4a
Add documentation
2012-12-11 20:35:02 +01:00
jst
0c69e0e0b7
Change order of fields in filterModel
2012-12-11 20:24:30 +01:00
jst
bf006ca38d
Description added
...
Describe filterModel interface,
Extract bool-to-int method
2012-12-11 20:18:23 +01:00
jst
2d6edc049a
Change ordering
2012-12-11 19:57:34 +01:00