diff --git a/TODO b/TODO index 702f1aa4..1005a391 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,16 @@ +- 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 + - update the INCLUDES etc. stuff, see OS X build - quadratic doesn't work for order 3 diff --git a/libvips/iofuncs/init.c b/libvips/iofuncs/init.c index fbe93e12..1dd7cf79 100644 --- a/libvips/iofuncs/init.c +++ b/libvips/iofuncs/init.c @@ -398,52 +398,52 @@ vips_set_fatal_cb( const gchar *option_name, const gchar *value, } static GOptionEntry option_entries[] = { - { "vips-fatal", 'f', G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, + { "vips-fatal", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_set_fatal_cb, N_( "abort on first error or warning" ), NULL }, { "vips-concurrency", 'c', 0, G_OPTION_ARG_INT, &vips__concurrency, N_( "evaluate with N concurrent threads" ), "N" }, - { "vips-tile-width", 'w', G_OPTION_FLAG_HIDDEN, + { "vips-tile-width", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_width, N_( "set tile width to N (DEBUG)" ), "N" }, - { "vips-tile-height", 'h', G_OPTION_FLAG_HIDDEN, + { "vips-tile-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_height, N_( "set tile height to N (DEBUG)" ), "N" }, - { "vips-thinstrip-height", 't', G_OPTION_FLAG_HIDDEN, + { "vips-thinstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__thinstrip_height, N_( "set thinstrip height to N (DEBUG)" ), "N" }, - { "vips-fatstrip-height", 'f', G_OPTION_FLAG_HIDDEN, + { "vips-fatstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__fatstrip_height, N_( "set fatstrip height to N (DEBUG)" ), "N" }, - { "vips-progress", 'p', 0, + { "vips-progress", 0, 0, G_OPTION_ARG_NONE, &vips__progress, N_( "show progress feedback" ), NULL }, - { "vips-leak", 'l', 0, + { "vips-leak", 0, 0, G_OPTION_ARG_NONE, &vips__leak, N_( "leak-check on exit" ), NULL }, - { "vips-disc-threshold", 'd', 0, + { "vips-disc-threshold", 0, 0, G_OPTION_ARG_STRING, &vips__disc_threshold, N_( "images larger than N are decompressed to disc" ), "N" }, - { "vips-novector", 't', G_OPTION_FLAG_REVERSE, + { "vips-novector", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &vips__vector_enabled, N_( "disable vectorised versions of operations" ), NULL }, - { "vips-cache-max", 'x', 0, + { "vips-cache-max", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max, N_( "cache at most N operations" ), "N" }, - { "vips-cache-max-memory", 'm', 0, + { "vips-cache-max-memory", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max_mem, N_( "cache at most N bytes in memory" ), "N" }, - { "vips-cache-max-files", 'l', 0, + { "vips-cache-max-files", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max_files, N_( "allow at most N open files" ), "N" }, - { "vips-cache-trace", 'c', 0, + { "vips-cache-trace", 0, 0, G_OPTION_ARG_NONE, &vips__cache_trace, N_( "trace operation cache" ), NULL }, - { "vips-cache-dump", 'r', 0, + { "vips-cache-dump", 0, 0, G_OPTION_ARG_NONE, &vips__cache_dump, N_( "dump operation cache on exit" ), NULL }, - { "vips-version", 'v', G_OPTION_FLAG_NO_ARG, + { "vips-version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_lib_version_cb, N_( "print libvips version" ), NULL }, { NULL }