added Chantal and Adam to AUTHORS and switched to faster version of lbb and nohalo resamplers

This commit is contained in:
Nicolas Robidoux 2010-06-09 18:00:34 +00:00
parent 7b8f0f7324
commit e4008d3f84
3 changed files with 14 additions and 86 deletions

View File

@ -18,6 +18,6 @@ system. Dennis Lubert cleaned up the C++ API.
Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona
contributed the tmake VIPS.DLL build system and the MSVC project files.
Nicolas Robidoux helped design the VipsInterpolate class and, with
John Cupitt, Chantal Racette and Adam Turcotte, contributed the novel
Nicolas Robidoux helped John Cupitt design the VipsInterpolate class
and, with Chantal Racette and Adam Turcotte, contributed the novel
LBB, Nohalo and VSQBS interpolators.

View File

@ -52,20 +52,22 @@
* compute. We recommend this as the default.
*
* A "sharp" version, which shows a little more staircasing and a
* little less haloing, and which is a little cheaper (it uses 6
* less comparisons and 12 less "? :").
* little less haloing, which is a little cheaper (it uses 6 less
* comparisons and 12 less "? :"), and which appears to lead to less
* "zebra striping" when two diagonal interfaces are close to each
* other.
*
* The only difference between the two is that the "soft" versions
* uses local minima and maxima computed over 3x3 square blocks, and
* the "sharp" version uses local minima and maxima computed over 3x3
* crosses.
*
* If you want to use the "sharp" (cheaper) version, uncomment the
* following three pre-processor code lines:
* If you want to use the "soft" (more expensive) version, comment out
* the following three pre-processor code lines:
*/
// #ifndef __LBB_CHEAP_H__
// #define __LBB_CHEAP_H__
// #endif
#ifndef __LBB_CHEAP_H__
#define __LBB_CHEAP_H__
#endif
/*
* LBB (Locally Bounded Bicubic) is a high quality nonlinear variant
@ -326,80 +328,6 @@ lbbicubic( const double c00,
const double max01 = LBB_MAX( M9, M11 );
const double min11 = LBB_MIN( m9, m13 );
const double max11 = LBB_MAX( M9, M13 );
/*
* Another version of the same computation:
*/
// const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ;
// const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ;
// const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ;
// const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ;
// const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ;
// const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ;
// const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ;
// const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ;
// const double m5 = LBB_MIN( m1, m2 );
// const double M5 = LBB_MAX( M1, M2 );
// const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ;
// const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ;
// const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ;
// const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ;
// const double m8 = LBB_MIN( m5, m3 );
// const double M8 = LBB_MAX( M5, M3 );
// const double m9 = LBB_MIN( m5, m4 );
// const double M9 = LBB_MAX( M5, M4 );
// const double m11 = LBB_MIN( m6, qua_one );
// const double M11 = LBB_MAX( M6, qua_one );
// const double m10 = LBB_MIN( m6, uno_one );
// const double M10 = LBB_MAX( M6, uno_one );
// const double m12 = LBB_MIN( m7, uno_fou );
// const double M12 = LBB_MAX( M7, uno_fou );
// const double m13 = LBB_MIN( m7, qua_fou );
// const double M13 = LBB_MAX( M7, qua_fou );
// const double min00 = LBB_MIN( m8, m10 );
// const double max00 = LBB_MAX( M8, M10 );
// const double min10 = LBB_MIN( m8, m12 );
// const double max10 = LBB_MAX( M8, M12 );
// const double min01 = LBB_MIN( m9, m11 );
// const double max01 = LBB_MAX( M9, M11 );
// const double min11 = LBB_MIN( m9, m13 );
// const double max11 = LBB_MAX( M9, M13 );
/*
* Yet another version:
*/
// const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ;
// const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ;
// const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ;
// const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ;
// const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ;
// const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ;
// const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ;
// const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ;
// const double m5 = LBB_MIN( m1, m2 );
// const double M5 = LBB_MAX( M1, M2 );
// const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ;
// const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ;
// const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ;
// const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ;
// const double m8 = LBB_MIN( m5, m3 );
// const double M8 = LBB_MAX( M5, M3 );
// const double m9 = LBB_MIN( m5, m4 );
// const double M9 = LBB_MAX( M5, M4 );
// const double m10 = LBB_MIN( m6, uno_one );
// const double M10 = LBB_MAX( M6, uno_one );
// const double m11 = LBB_MIN( m6, qua_one );
// const double M11 = LBB_MAX( M6, qua_one );
// const double m12 = LBB_MIN( m7, uno_fou );
// const double M12 = LBB_MAX( M7, uno_fou );
// const double m13 = LBB_MIN( m7, qua_fou );
// const double M13 = LBB_MAX( M7, qua_fou );
// const double min00 = LBB_MIN( m8, m10 );
// const double max00 = LBB_MAX( M8, M10 );
// const double min01 = LBB_MIN( m9, m11 );
// const double max01 = LBB_MAX( M9, M11 );
// const double min10 = LBB_MIN( m8, m12 );
// const double max10 = LBB_MAX( M8, M12 );
// const double min11 = LBB_MIN( m9, m13 );
// const double max11 = LBB_MAX( M9, M13 );
#endif
/*

View File

@ -98,9 +98,9 @@
* If you want to use the "sharp" (cheaper) version, uncomment the
* following three pre-processor code lines:
*/
// #ifndef __NOHALO_CHEAP_H__
// #define __NOHALO_CHEAP_H__
// #endif
#ifndef __NOHALO_CHEAP_H__
#define __NOHALO_CHEAP_H__
#endif
/*
* ================