added Chantal and Adam to AUTHORS and switched to faster version of lbb and nohalo resamplers
This commit is contained in:
parent
7b8f0f7324
commit
e4008d3f84
4
AUTHORS
4
AUTHORS
@ -18,6 +18,6 @@ system. Dennis Lubert cleaned up the C++ API.
|
|||||||
Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona
|
Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona
|
||||||
contributed the tmake VIPS.DLL build system and the MSVC project files.
|
contributed the tmake VIPS.DLL build system and the MSVC project files.
|
||||||
|
|
||||||
Nicolas Robidoux helped design the VipsInterpolate class and, with
|
Nicolas Robidoux helped John Cupitt design the VipsInterpolate class
|
||||||
John Cupitt, Chantal Racette and Adam Turcotte, contributed the novel
|
and, with Chantal Racette and Adam Turcotte, contributed the novel
|
||||||
LBB, Nohalo and VSQBS interpolators.
|
LBB, Nohalo and VSQBS interpolators.
|
||||||
|
@ -52,20 +52,22 @@
|
|||||||
* compute. We recommend this as the default.
|
* compute. We recommend this as the default.
|
||||||
*
|
*
|
||||||
* A "sharp" version, which shows a little more staircasing and a
|
* A "sharp" version, which shows a little more staircasing and a
|
||||||
* little less haloing, and which is a little cheaper (it uses 6
|
* little less haloing, which is a little cheaper (it uses 6 less
|
||||||
* less comparisons and 12 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
|
* The only difference between the two is that the "soft" versions
|
||||||
* uses local minima and maxima computed over 3x3 square blocks, and
|
* uses local minima and maxima computed over 3x3 square blocks, and
|
||||||
* the "sharp" version uses local minima and maxima computed over 3x3
|
* the "sharp" version uses local minima and maxima computed over 3x3
|
||||||
* crosses.
|
* crosses.
|
||||||
*
|
*
|
||||||
* If you want to use the "sharp" (cheaper) version, uncomment the
|
* If you want to use the "soft" (more expensive) version, comment out
|
||||||
* following three pre-processor code lines:
|
* the following three pre-processor code lines:
|
||||||
*/
|
*/
|
||||||
// #ifndef __LBB_CHEAP_H__
|
#ifndef __LBB_CHEAP_H__
|
||||||
// #define __LBB_CHEAP_H__
|
#define __LBB_CHEAP_H__
|
||||||
// #endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* LBB (Locally Bounded Bicubic) is a high quality nonlinear variant
|
* 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 max01 = LBB_MAX( M9, M11 );
|
||||||
const double min11 = LBB_MIN( m9, m13 );
|
const double min11 = LBB_MIN( m9, m13 );
|
||||||
const double max11 = LBB_MAX( 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
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -98,9 +98,9 @@
|
|||||||
* If you want to use the "sharp" (cheaper) version, uncomment the
|
* If you want to use the "sharp" (cheaper) version, uncomment the
|
||||||
* following three pre-processor code lines:
|
* following three pre-processor code lines:
|
||||||
*/
|
*/
|
||||||
// #ifndef __NOHALO_CHEAP_H__
|
#ifndef __NOHALO_CHEAP_H__
|
||||||
// #define __NOHALO_CHEAP_H__
|
#define __NOHALO_CHEAP_H__
|
||||||
// #endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ================
|
* ================
|
||||||
|
Loading…
Reference in New Issue
Block a user