2013-12-13 13:20:05 +01:00
|
|
|
- the change to reduce region churn
|
|
|
|
|
|
|
|
https://github.com/jcupitt/libvips/commit/6ae1888ab3a078f81fc50a967b38ac2aaefe4187
|
|
|
|
|
|
|
|
has broken sharing, try:
|
|
|
|
|
|
|
|
vips sharpen k2.jpg x.jpg
|
|
|
|
|
|
|
|
no colour info in x.jpg, we no longer detect and share buffers
|
|
|
|
|
|
|
|
need to clear 'done' on the buffers?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-10 11:31:11 +01:00
|
|
|
- some malloc/free cycling in
|
|
|
|
|
|
|
|
vips sharpen in out
|
|
|
|
|
2013-12-12 10:51:55 +01:00
|
|
|
it's as vips repeatedly discovers some sharing in buffer_ref_unref ... cycle
|
|
|
|
is:
|
|
|
|
|
|
|
|
- two regions share a single bufferA of calculated pixels
|
|
|
|
|
|
|
|
- region1 moves to a new area ... buffer is shared, so region1 gets a
|
|
|
|
new bufferB
|
|
|
|
|
|
|
|
- region2 moves to the same area .. region1 is already there, so we
|
|
|
|
share bufferB and unref bufferA, causing it to be freed
|
|
|
|
|
|
|
|
- ... repeat! we get a malloc/free per tile
|
|
|
|
|
|
|
|
to fix this, when we discover sharing, we need to not unref the private
|
|
|
|
buffer and keep that around for possible later reuse
|
|
|
|
|
|
|
|
each image needs a per-thread list of unreffed buffers ready for reuse
|
|
|
|
|
2013-12-13 13:20:05 +01:00
|
|
|
done in branch "reserve", fix master as noted above and merge
|
|
|
|
|
2013-12-12 10:51:55 +01:00
|
|
|
|
2013-12-10 11:31:11 +01:00
|
|
|
|
|
|
|
|
2013-12-10 15:12:02 +01:00
|
|
|
- vipsprofile needs a man page for Debian, I guess
|
2013-12-10 11:31:11 +01:00
|
|
|
|
2013-12-10 15:12:02 +01:00
|
|
|
- new_heart.ws fails with libvips master
|
2013-12-10 11:31:11 +01:00
|
|
|
|
2013-12-12 10:51:55 +01:00
|
|
|
- nip2 hist match is failing with 7.36, was working in 7.34
|
|
|
|
|
2013-12-10 11:31:11 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-02 12:22:08 +01:00
|
|
|
|
2013-12-03 09:53:36 +01:00
|
|
|
- do restrict on some more packages, we've just done arithmetic so far
|
2013-11-30 14:55:10 +01:00
|
|
|
|
2013-12-03 15:25:22 +01:00
|
|
|
also resample, colour, some of conversion, create,
|
2013-12-03 13:39:13 +01:00
|
|
|
|
2013-12-03 15:25:22 +01:00
|
|
|
- orc is poor for float stuff ... if vips_linear() had a "preserve type"
|
|
|
|
option we could do something
|
2013-12-03 13:39:13 +01:00
|
|
|
|
2013-12-03 15:25:22 +01:00
|
|
|
maybe a "uchar ouput" option? this seems to be a very common case
|
2013-12-03 13:39:13 +01:00
|
|
|
|
2013-12-03 15:25:22 +01:00
|
|
|
- maybe avg?
|
2013-12-03 13:39:13 +01:00
|
|
|
|
2013-12-03 15:25:22 +01:00
|
|
|
but avg doesn't subclass arithmetic, so we can't
|
2013-12-03 13:39:13 +01:00
|
|
|
|
|
|
|
- for interpolate, we'd need to be able to unroll the vector, so the
|
|
|
|
interpolator would need to be built for the bands / stride / type of the
|
|
|
|
image
|
|
|
|
|
|
|
|
need new API For this, since interpolators currently work for any image
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- do morph quickly as simple wrappers over the vips7 operations
|
|
|
|
|
|
|
|
- do restrict on some more packages, we've just done arithmetic so far
|
|
|
|
|
|
|
|
how about avg? do we need -ffast-math to vec that?
|
|
|
|
|
|
|
|
yes we do, though it doesn't seem any faster
|
|
|
|
|
2013-11-30 14:55:10 +01:00
|
|
|
how about avg? do we need -ffast-math to vec that?
|
2013-12-02 19:53:56 +01:00
|
|
|
|
|
|
|
yes we do, though it doesn't seem any faster
|
2013-11-30 14:55:10 +01:00
|
|
|
|
2013-12-03 09:53:36 +01:00
|
|
|
perhaps because it only vecs the innermost loop across bands and it's
|
|
|
|
too short to trigger the vec code
|
|
|
|
|
|
|
|
try swapping the loops over ... inner loop across width, outer across
|
|
|
|
bands
|
|
|
|
|
|
|
|
but then we'd have an unknown stride
|
|
|
|
|
|
|
|
need to special-case 1 band and 3 band images
|
|
|
|
|
|
|
|
or use orc to gen code at operator build
|
|
|
|
|
|
|
|
does this mean we should revert the removal of orc from arithmetic?
|
|
|
|
|
2013-11-30 14:56:48 +01:00
|
|
|
not seen more than x2 from auto-vec of abs(), perhaps the bool ops?
|
|
|
|
|
2013-11-30 14:55:10 +01:00
|
|
|
|
2013-12-02 12:22:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2013-11-19 11:13:38 +01:00
|
|
|
- seen some leaks from
|
|
|
|
|
|
|
|
vips dzsave --layout google wtc.jpg x
|
|
|
|
|
|
|
|
investigate
|
2013-11-18 19:31:49 +01:00
|
|
|
|
2013-11-15 13:42:44 +01:00
|
|
|
- vips_gaussblur() should switch to float prec if given a float image?
|
|
|
|
|
|
|
|
same for vips_conv()?
|
|
|
|
|
|
|
|
maybe precision is a dumb thing
|
2013-11-14 14:55:23 +01:00
|
|
|
|
2013-11-13 10:00:47 +01:00
|
|
|
- support --strip for other writers
|
|
|
|
|
2013-11-12 10:53:41 +01:00
|
|
|
- vipsthumbnail could shrink-on-load openslide and pyr tiff as well?
|
2013-11-11 12:32:47 +01:00
|
|
|
|
2013-11-08 15:09:42 +01:00
|
|
|
- how about
|
|
|
|
|
2013-11-11 12:32:47 +01:00
|
|
|
top -d 0.01 | grep vips > log
|
|
|
|
|
|
|
|
to watch RES at 0.01s intervals?
|
2013-11-08 15:09:42 +01:00
|
|
|
|
2013-11-11 12:32:47 +01:00
|
|
|
note on memuse page
|
2013-11-08 15:09:42 +01:00
|
|
|
|
2013-08-06 22:59:35 +02:00
|
|
|
- use the webp advanced encoding api to set a write function for webp save to
|
|
|
|
file
|
|
|
|
|
2013-08-12 14:30:30 +02:00
|
|
|
- use g_log() instead of vips_info()
|
2013-07-31 23:00:36 +02:00
|
|
|
|
2013-06-26 10:29:04 +02:00
|
|
|
- object construction is threadsafe, but class construction is not
|
|
|
|
|
|
|
|
https://github.com/jcupitt/libvips/issues/64
|
|
|
|
|
2013-07-01 14:20:31 +02:00
|
|
|
we worked around this by adding vips_class_ping_all() to dsave build, but
|
2013-06-26 10:29:04 +02:00
|
|
|
this is not a good fix
|
|
|
|
|
2013-08-02 10:41:11 +02:00
|
|
|
find out why vips class construct fails, test on seurat, kirk's 24-core
|
2013-06-26 10:29:04 +02:00
|
|
|
monster
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-06-16 13:26:27 +02:00
|
|
|
|
2012-11-09 14:08:59 +01:00
|
|
|
- quadratic doesn't work for order 3
|
2012-11-08 14:34:37 +01:00
|
|
|
|
2012-11-09 14:08:59 +01:00
|
|
|
start to get jaggies on lines --- the 3rd differential isn't being
|
|
|
|
initialised correctly for the sub-region?
|
2012-11-08 14:34:37 +01:00
|
|
|
|
2012-11-09 15:53:32 +01:00
|
|
|
seems fine vertically, only get errors on horizontal tile boundaries
|
|
|
|
|
|
|
|
because we step across tiles left to right: y doesn't change, only x does
|
2012-11-08 14:34:37 +01:00
|
|
|
|
2012-12-03 15:53:10 +01:00
|
|
|
|
2012-12-13 14:08:52 +01:00
|
|
|
|
2012-04-02 12:12:40 +02:00
|
|
|
- the operation cache needs to detect invalidate
|
|
|
|
|
2012-11-07 15:54:50 +01:00
|
|
|
tricky!
|
|
|
|
|
|
|
|
perhaps have operations always watching all of their inputs and resignalling
|
|
|
|
"invalidate" themselves
|
|
|
|
|
|
|
|
cache then just needs to watch for "invalidate" on operations it tracks
|
|
|
|
|
|
|
|
need to add an "invalidate" signal to operation
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
mosaic
|
|
|
|
======
|
2012-01-16 15:54:29 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- balance should use new meta stuff
|
2012-01-16 15:54:29 +01:00
|
|
|
|
2012-02-29 14:49:48 +01:00
|
|
|
- histogram balance option?
|
|
|
|
|
2011-08-15 19:27:43 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
resample
|
|
|
|
========
|
2012-01-02 12:06:04 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- check mosaic1, global_balance, similarity etc. use of im__affine
|
|
|
|
|
|
|
|
how can we move them to im_affinei ?
|
2012-01-07 15:10:02 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- perspective transform with a matrix ... base it on the Lenz transformer, but
|
|
|
|
partial
|
2012-01-06 10:36:04 +01:00
|
|
|
|
2011-12-31 19:22:42 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
foreign
|
|
|
|
=======
|
2011-12-31 19:22:42 +01:00
|
|
|
|
2012-03-13 15:22:13 +01:00
|
|
|
- magick2vips should spot ICC profiles and attach them as meta
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- interlaced jpg needs massive memory, we should have two jpg read modes, like
|
|
|
|
png
|
2011-12-31 19:22:42 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- add more sequential mode readers
|
2011-06-20 19:00:01 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
$ grep -l write_line *.c
|
|
|
|
csv.c
|
|
|
|
matlab.c
|
|
|
|
openexr2vips.c
|
|
|
|
ppm.c
|
|
|
|
radiance.c
|
2011-12-23 16:20:54 +01:00
|
|
|
|
2012-01-08 14:57:43 +01:00
|
|
|
- foreign docs come up as "VipsForeignSave", annoying, why?
|
2011-12-22 18:48:50 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- add nifti support
|
2011-12-21 13:08:29 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
http://niftilib.sourceforge.net/
|
2011-12-12 12:58:36 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- add matlab write
|
2011-12-12 12:58:36 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- im_exr2vips can now use c++ api
|
2012-01-09 11:34:47 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
see TODO notes in openexr read (though they all need more openexr C API)
|
2012-01-09 11:34:47 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
consider openexr write
|
2012-01-09 11:34:47 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- magick should set some header field for n_frames and frame_height? see also
|
|
|
|
analyze
|
2011-12-12 12:58:36 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- im_csv2vips() could use "-" for filename to mean stdin
|
2011-12-12 12:58:36 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
but then we'd have to read to a malloced buffer of some sort rather than an
|
|
|
|
image, since we might need to grow it during the read, since we couldn't
|
|
|
|
then seek
|
2012-01-13 14:15:56 +01:00
|
|
|
|
2011-12-12 12:58:36 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
packaging
|
|
|
|
=========
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- test _O_TEMPORARY thing on Windows
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- do we bundle "convert" in the OS X / win32 builds? if we don't we
|
|
|
|
should
|
2011-11-22 13:00:32 +01:00
|
|
|
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
convolution
|
|
|
|
===========
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- revisit orc conv
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
use an 8.8 accumulator ... build the scale into the 8.8 coeffs ... no div at
|
|
|
|
the end, just a shift
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
need 8 x 8.8 -> 8.8 for each coeff though
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- im_conv()/im_morph() could have more than 10 programs? try 20 and see if we
|
|
|
|
still have a speedup
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
make a base class for vector area operations with a matrix with three vfuncs
|
|
|
|
for init / generate code for one element / end and a gslist of programs, use
|
|
|
|
that as the base for morph and conv
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
wait for vipsobject for this
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2013-10-28 16:59:25 +01:00
|
|
|
- we have aconv and aconvsep
|
|
|
|
|
|
|
|
test timing, make sure it;s worth having a separate aconvsep version
|
|
|
|
|
|
|
|
if it is, make im_aconvsep an optimisation: call im_aconvsep_raw() from
|
|
|
|
vips_conv() if mask width or height == 1 and prec == APPROX
|
|
|
|
|
|
|
|
now we can get rid of im_aconvsep() since it's just vips_convsep() with prec
|
|
|
|
set to approx
|
|
|
|
|
|
|
|
aconv needs some more work, get it going at least with gaussian
|
|
|
|
|
2011-11-22 13:00:32 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
arithmetic
|
|
|
|
==========
|
2011-11-22 13:00:32 +01:00
|
|
|
|
|
|
|
- avg/dev etc. should uncode images? eg. labq2lab etc.
|
|
|
|
|
|
|
|
how about ifthenelse?
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- HAVE_HYPOT could define a hypot() macro?
|
2011-10-24 23:47:43 +02:00
|
|
|
|
2012-02-24 14:57:50 +01:00
|
|
|
- fix a better NaN policy
|
|
|
|
|
|
|
|
should we not generate images containing NaN (eg. divide tries to avoid /0),
|
|
|
|
or should vips_max() etc. try to avoid NaN in images (eg. vips_max() takes a
|
|
|
|
lot a care to skip NaN, though vips_stats() does not)?
|
|
|
|
|
2011-10-24 23:47:43 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
iofuncs
|
|
|
|
=======
|
2011-10-25 16:44:54 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- need vips_image_invalidate_area()
|
2011-09-30 10:39:47 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- look at libpeas for plugin support
|
2011-09-20 15:52:02 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
http://live.gnome.org/Libpeas
|
2011-09-23 18:12:47 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- how about
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
vips max add[babe.jpg,babe2.jpg]
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
does that make any sense?
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
vips copy add[babe.jpg,add[babe2.jpg,babe3.jpg]] sum.v
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
perhaps use curly brackets for code?
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
vips max add{babe.jpg,babe2.jpg}
|
2011-10-11 15:30:44 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
no brackets or square brackets for options
|
2011-09-12 15:55:22 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- transform_g_string_array_image() can't handle quoted strings, so filenames
|
|
|
|
with spaces will break
|
2011-09-12 15:55:22 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
is there an easy fix? can we reuse code from the csv parser?
|
2011-10-15 13:22:57 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
the csv parser just parses FILE* streams, we'd need to break it out
|
2011-09-12 15:55:22 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- note member free stuff in vipsobject docs
|
2011-11-06 12:54:52 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
should boxed get freed in finalise rather than dispose?
|
2011-11-06 12:54:52 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
vipsobject has few docs atm :(
|
2011-09-06 17:41:37 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- vips_object_set_argument_from_string() needs more arg types
|
2011-09-06 17:41:37 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
must be some way to make this more automatic
|
2011-08-26 11:15:39 +02:00
|
|
|
|
2011-10-15 13:22:57 +02:00
|
|
|
- generate the code for vips_add() etc. automatically? it might be
|
2011-09-29 14:34:14 +02:00
|
|
|
nice to have them all in one place at least
|
2011-08-26 11:15:39 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- what does G_UNLIKELY() do? can we use it?
|
2011-08-26 11:15:39 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- look into G_GNUC_DEPRECATED for back compat in vips8
|
2011-08-26 11:15:39 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- should im_rwcheck() copy to disc?
|
2011-08-26 11:15:39 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
maybe im_rwcheck_disc() copies to im->filename and maps that
|
2011-05-25 09:51:19 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
rather awkward to do atm with the way check.c is structured
|
2011-05-25 09:51:19 +02:00
|
|
|
|
2011-05-16 18:34:00 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
swig
|
|
|
|
====
|
2011-05-16 18:34:00 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- swig is not wrapping im_project() correctly ... returns an extra VImage via
|
|
|
|
a param
|
2011-05-23 22:27:33 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- doc strings would be nice, read the SWIG notes on this
|
2011-05-17 14:05:45 +02:00
|
|
|
|
2011-05-13 15:47:23 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
new bindings
|
|
|
|
============
|
2011-05-13 15:47:23 +02:00
|
|
|
|
2012-02-25 18:47:40 +01:00
|
|
|
- new binding is still missing constants
|
|
|
|
|
|
|
|
how do boxed types work? confusing
|
|
|
|
|
|
|
|
we need to be able to make a VipsArrayDouble
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- Vips.Image has members like chain, __subclasshook__ etc etc, are we
|
|
|
|
really subclassing it correctly?
|
2011-05-09 19:28:21 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- add __add__ etc overloads
|
2011-05-09 19:28:21 +02:00
|
|
|
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
freq_filt
|
|
|
|
=========
|
2011-05-09 19:28:21 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- fft with odd width or height is broken ... DC ends up in the wrong place
|
2011-05-09 19:28:21 +02:00
|
|
|
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
libvipsCC
|
|
|
|
=========
|
2011-05-09 19:28:21 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- need new C++ API
|
2011-05-09 19:28:21 +02:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- need an im_init_world() for C++ which does cmd-line args too, so C++ progs
|
|
|
|
can get --vips-progress and stuff automatically
|
2011-05-09 19:28:21 +02:00
|
|
|
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
tools
|
|
|
|
=====
|
2011-03-28 17:03:31 +02:00
|
|
|
|
2011-02-03 13:52:14 +01:00
|
|
|
- need a way to make the vips.1 etc. man pages
|
|
|
|
|
|
|
|
gtk has things like docs/reference/gtk/gtk-update-icon-cache.xml and man
|
|
|
|
pages are made from that with xslt
|
|
|
|
|
|
|
|
- get rid of a lot of the command-line programs, who wants to write a man page
|
|
|
|
for batch_image_convert etc yuk
|
|
|
|
|
2011-06-17 15:50:14 +02:00
|
|
|
- can we make man pages for the API as well? probably not from googling a bit
|
2011-02-03 13:52:14 +01:00
|
|
|
|
2010-01-25 15:23:30 +01:00
|
|
|
- rename header, edvips as vipsheader, vipsedit
|
|
|
|
|
|
|
|
maybe have back compat links?
|
|
|
|
|
2008-12-19 13:32:46 +01:00
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
new operations
|
|
|
|
==============
|
2009-01-05 17:45:39 +01:00
|
|
|
|
2009-03-20 00:29:12 +01:00
|
|
|
- bilateral filtering, see:
|
|
|
|
|
|
|
|
http://en.wikipedia.org/wiki/Bilateral_filter
|
|
|
|
http://www.shellandslate.com/fastmedian.html
|
2010-09-28 18:20:24 +02:00
|
|
|
http://people.csail.mit.edu/sparis/bf_course/
|
2009-03-20 00:29:12 +01:00
|
|
|
|
2009-03-20 00:43:52 +01:00
|
|
|
also a mail from Martin Breidt has links to several fast free C
|
|
|
|
implementations
|
|
|
|
|
2012-02-22 15:30:09 +01:00
|
|
|
- http://en.wikipedia.org/wiki/Otsu%27s_method
|
2007-08-29 18:23:50 +02:00
|
|
|
|
|
|
|
- non-linear sharpen: replace each pixel by the lightest or darkest neighbour
|
|
|
|
depending on which is closer in value
|
|
|
|
|
2013-10-03 09:59:46 +02:00
|
|
|
- look at
|
|
|
|
|
|
|
|
There is an order 1 algorithm for doing medians over boxes (truly O(1)
|
|
|
|
per pixel: I checked it carefully; it's like doing means over boxes in
|
|
|
|
order 1 per pixel) in OpenCV since February 2012 I think, due to
|
|
|
|
Perreault (and Hebert).
|
|
|
|
|
|
|
|
It appears to be well respected, at least for 8-bit medians. Very
|
|
|
|
memory intensive. Simple and elegant. No clue if it fits VIPS well
|
|
|
|
(probably not?).
|
|
|
|
|
|
|
|
Article: nomis80.org/ctmf.pdf
|
|
|
|
|
|
|
|
- check CMC equations against web
|
|
|
|
|
|
|
|
http://en.wikipedia.org/wiki/Color_difference#CMC_l:c_.281984.29
|
|
|
|
|
|
|
|
- see
|
|
|
|
|
|
|
|
http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html
|
|
|
|
|
|
|
|
sounds useful for BM?
|
|
|
|
|