Log of changes made to matlabPyrTools code (important changes marked with **) ----------------------------------------------------------------------- 2009-12-17 Eero Simoncelli * Made new tarfile (version 1.4) * imStats.m: Now also prints the skew. 2009-12-17 Rob Young * Fixed compilePyrTools.m error messages by making individual const mxArray arg variables. 2009-12-17 Rob Young * Added compilePyrTools.m to the MEX directory, which takes care of compiling all C files for the current platform. 2009-12-17 Rob Young * Incorporated HTML versions of tutorials 2005-07-01 Eero Simoncelli * Discovered that innerProd.c is now significantly slower than just executing M'*M in matlab, due to speedups in recent versions of matlab! So eliminated the MEX file, and the warning in innerProd.m. Left innerProd.m behind for backward compatibility. 2005-05-04 Eero Simoncelli * Fixed blur.m to handle arbitrary size images 2005-01-03 Eero Simoncelli * MEX/Makefile-linux: Added innerProd to Make files 2004-11-28 Eero Simoncelli * blur.m (res): added missing arguments in call to upBlur. 2004-10-27 Eero Simoncelli * mkGaussian.m: MEAN arg can now be 1D. 2004-10-14 Eero Simoncelli * Made new tarfile (version 1.3) * Incorporated complex-valued steerable pyramid code (buildSCFpyr, buildSCFpyrLevs,reconSCFpyr) written by Javier Portilla in 9/97, and used in our work on texture representation/synthesis (Portilla&Simoncelli, Int'l Journal of Computer Vision, 40(1):49-71, Dec 2000). * Incorporated imGradient.m from personal code. * reagan.pgm out. feynam.pgm in 2004-03-20 Eero Simoncelli * blur.m added (just calls blurDn and then upBlur). 2003-08-06 Eero Simoncelli * blurDn.m (filt): Forced correct scaling of filters in 1D 2003-05-28 Eero Simoncelli * incorporated setPyrBand.m from local code 2002-10-01 Eero Simoncelli * incorporated clip.m from local code 2002-09-18 Eero Simoncelli * pointOp.m: Added the new 'extrap' option for matlab's interp1 to make this m-file version more compatible with the mex version. Wed Aug 28 2002 Eero Simoncelli * var2.m: now returns zero (instead of error) for matrix of size 1. * function VECTORIZE renamed to VECTIFY, since it was colliding with a function introduced in standard matlab. Dec 27 2001 Eero Simoncelli * Modified calls to upConv in reconSpyr.m and reconSpyrLevs.m so that the returned result is bound. Previously, had relied on the MEX version of upConv to destructively modify the result array, users had been getting errors because they were using the m-file version of upConv. Wed Sep 19 2001 Eero Simoncelli * buildSFpyrLevs/reconSFpyrLevs: replace use of "i" with sqrt(-1), to avoid problems if user rebinds it! Wed Mar 28 10:22:01 2001 Eero Simoncelli * Moved innerProd.m and all associated MEX files from the matlabLocal source tree into matlabPyrTools. * Added innerProd to Contents.m * Updated/clarified WARNINGS in all *.m files that have MEX versions. Tue Mar 27 11:21:53 2001 Eero Simoncelli * Incorporated Windows MEX files (*.dll) into MEX subdirectory. Windows users should either copy these into the main directory, or put the MEX subdirectory in their matlab path. Fri Mar 23 14:46:16 2001 Eero Simoncelli * buildSFpyrLevs.m, reconSFpyrLevs.m: shift the raised-cosine lookup table (Xrcos) instead of incrementing the log-radial image (log_rad). THis is more efficient... Fri Oct 1 19:37:03 1999 Eero Simoncelli * upConv.m: Did not return correct size result when STOP argument was passed. Thanks to hertzman@mrl.nyu.edu for pointing this out. Fri Sep 17 15:53:26 1999 Eero Simoncelli * buildSFpyrLevs.m: Changed lutsize to 1024, giving a slight increase in accuracy. Thu Feb 25 18:10:38 1999 Eero Simoncelli * histo1.m: Modified histo.m to be more compatible (but still not exactly the same) as the MEX file version. Fri Jun 12 21:15:39 1998 Eero Simoncelli * TUTORIALS pyramids.m upgraded. Tue Feb 17 13:22:28 1998 Eero Simoncelli * showIm.m: Dims are now printed followed by the zoom factor. Mon Oct 13 14:49:51 1997 Eero Simoncelli * mkSquare.m: Modified to do raised-cosine soft threshold transitions. Tue Oct 7 10:13:51 1997 Eero Simoncelli * upConv.m: Argument order was wrong (this function is not used anyway, unless you don't compile the MEX code). - Thanks to farid@psyche.mit.edu for pointing this out. Thu Sep 25 16:09:49 1997 Eero Simoncelli * MEX/wrap.c: Changed #include to , as suggested by David Brainard. * Incorporated Mac-compiled mex files, courtesy of David Brainard. Sat Sep 6 16:10:25 1997 Eero Simoncelli * MEX/convolve.h: abstracted out type of images with typedef image_type. Added ansi declarations. Fri Aug 29 13:49:16 1997 Eero Simoncelli ** showIm.m: Modified to behave better under resizing (and printing): resets axis units to "normalized". Thu Aug 28 22:56:52 1997 Eero Simoncelli ** MEX/edges.c: reflect1, reflect2, repeat, extend upgraded to work properly for non-symmetric filters. reflect2 and extend were also broken for upConv. Added qreflect2 to handle even-length QMF's which broke under the reflect2 modification. * Added example code to TUTORIALS/matlabPyrTools to illustrate the boundary-handling behavior... Thu Aug 21 13:34:17 1997 Eero Simoncelli * var2, skew2, kurt2: modified to return complex values for complex images. * imStats.m: now gives an error for complex args. Thu Aug 14 15:24:29 1997 Eero Simoncelli * Modified shift.m: negated the meaning of the offset parameter, such that RES=shift(MTX,OFFSET) means RES(POS)=MTX(POS-OFFSET) (this is more intuitive). Thu Jul 10 17:06:52 1997 Eero Simoncelli * Modified MEX/Makefile-* to be consistent with matlab5: - call mex instead of cmex - use -V4 flag (creating matlab v4 compatible binaries) * showIm.m (xlbl_offset): Modified to use "points" units, so that printed images look correct. Still slightly busted for arbitrary figure window sizes and for printing. * Modified upConv.c: does not return ANYTHING if you pass a result argument (this had been causing occasional problems with matlab's memory manager). Mon Jun 30 12:09:30 1997 Eero Simoncelli * reconSFpyr.m (res): now returns real part (oops). * reconSpyrLevs.m (maxLev): got rid of superfluous nbands argument (can be calculated from bfilts). Mon May 26 12:29:54 1997 Eero Simoncelli * showIm.m/pgmWrite.m: Modified 'auto3'-scaling to use a histogram. This gives a significant speedup. * fixed a few minor bugs in the TUTORIALS, having to do with matching image sizes to the machine speed... Sat May 10 17:27:25 1997 Eero Simoncelli * pgmWrite.m: fixed auto-scaling bug. Added new scaling calculations, parallel to those of imShow. Fri May 9 09:02:56 1997 Eero Simoncelli * buildSFpyr.m: Changed NBANDS argument to be ORDER, which is one less than the number of orientation bands. This is consistent with the derivative order, and the labels on the spNFilters files. Tue May 6 19:08:18 1997 Eero Simoncelli ** Added buildSFpyr, reconSFpyr: Steerable pyramids constructed in the Fourier domain. Radial functions tile, with a raised-cosine falloff. Angular functions are cos(theta-k\pi/(K+1))^K, where K is the order (number of bands minus 1). Compared to the convolution version: + Reconstruction is exact (within floating point errors) + Can produce any number of orientation bands. - Typically slower. - Boundary-handling must be circular. Could be made much more efficient by taking advantage of symmetries in the fft! * Added example usage of Fourier steerable pyramid to TUTORIALS/pyramids.m * steer.m: fixed for harmonic lists including zero. Sun May 4 15:16:10 1997 Eero Simoncelli * MEX/Makefile-linux: created. * spyrHt, spyrNumBands: Modified to return 0 for pyramids of height 0. * reconWpyr.m: utilize desctructive addition in calls to upConv. * reconSpyr.m: Added error check to ensure consistancy between pyramid and filter file. Utilize destructive addition in upConv call on highpass band. Modified to work properly with pyramids of height 0. Mon Apr 28 13:38:10 1997 Eero Simoncelli * lplot.m: modified to handle complex vectors, use standard MatLab indices, and show minimal axes. Added xrange parameter to allow adjustment of X axis labeling. Sun Apr 27 20:20:41 1997 Eero Simoncelli * var2, skew2, kurt2: enhanced to work on complex matrices. Sat Apr 26 11:16:12 1997 Eero Simoncelli * Changed parent directory (and distribution) name: matlabImTools -> matlabPyrTools * namedFilter.m: Added two more Daubechies filters, and modified names to match the reference (e.g., daub2 is now a 4-tap filter). * Added vectorize.m: trivial function to pack matrix into vector (i.e., computes mtx(:)). * Added upBlur.m: Upsample and blur (parallels blurDn). Sun Apr 13 14:23:38 1997 Eero Simoncelli * TUTORIALS/pyramids.m: Added plots of Fourier spectra for Wavelet bases. * make-tar-file: switched from compress to gzip for the distribution tarfile. * namedFilter.m: Added a few even-length QMF's from Johnston80. Fri Apr 11 19:16:21 1997 Eero Simoncelli * buildWpyr.m, reconWpyr.m: Modified slightly, so that subsampling lattice is better for even-length filters. * TUTORIALS/pyramids.m: Substantially overhauled. Thu Apr 10 15:20:23 1997 Eero Simoncelli * blurDn.m: added this function to downsample an image by a factor 2^L. * Fixed minor bug in upConv.m: errors in image size checking. Mon Apr 7 13:25:37 1997 Eero Simoncelli * Changed TUTORIALS/matlabImTools.m to use histo.mex instead of matlab's hist. Wed Apr 2 13:20:55 1997 Eero Simoncelli ** Incorporated Denis Pelli's ThinkC and MetroWorks projects for Macintosh versions of the MEX code, along with MEX binaries. These are included as an HQX'ed self-extracting archive (Macintosh-MEX.sit.hqx), in the MEX subdirectory. Tue Apr 1 15:35:31 1997 Eero Simoncelli * edges.c: modified by Denis Pelli to support THINK C. * edges.c: * histo.c, upConv.c, corrDn.c: minor changes in error message printouts, to work around bugs in THINK C. * Included Denis Pelli's MacReadMe file in the MEX subdirectory, which gives instructions for MEX file compilation on a MacIntosh (PPC or 68k). * wrap.c, convolve.c, edges.c: added explicit int function declarations, and return values. * range2.m/range2.c: A MEX function for fast min/max computation. Adjusted entropy2.m, histo.m, imStats.m, pgmWrite.m, showIm.m, showLpyr.m, showSpyr.m, showWpyr.m to call it. Thu Mar 27 17:23:05 1997 Eero Simoncelli ** histo.m/histo.c: Added MEX function HISTO, a fast replacement for matlab's HIST function. Modified histoMatch.m, entropy2.m to call it. * Changed main directory name to matlabImTools. * Added TUTORIALS/README file. Wed Mar 19 14:19:51 1997 Eero Simoncelli * Changed directory name: MEX_SRC -> MEX Wed Mar 12 17:00:03 1997 Eero Simoncelli * mkGaussian.m: fixed another (X,Y) bug: both dimensions and cov/mean are now specified in [y,x] order. Tue Mar 11 19:08:17 1997 Eero Simoncelli * showSpyr.m: Fixed a bug that was dropping display of one orientation band when there were more than 2 of them! Mon Mar 10 19:08:24 1997 Eero Simoncelli * Added shift.m * makeSteerMtx -> steerDir2HarmMtx * Added TUTORIALS/matlab-EPS.m: examples using the code in this distribution. Sun Mar 9 17:49:18 1997 Eero Simoncelli ** showIm.m: - args: changed order so that NSHADES is last. - TITLES: Can now pass a string for IM, which will be evaluated in the global environment to get the matrix. The string is used as a title. MATLAB v.5 ONLY!!! - Added 'auto3' RANGE value, that scales based on percentiles. THis is more robust to outliers than 'auto2' or 'auto1'. * pixelAxes.m: Made a more serious attempt to reverse-engineer Mathworks' image pixelization. It is improved, but still makes occasional errors. * Added skew2.m. Fri Mar 7 10:11:07 1997 Eero Simoncelli * pixelAxes.m: Modified to take an optional ZOOM argument. Fixed dimension ordering bug (positions are reported (x,y), but mtx dims are (y,x)!) * showIm.m: Added an optional ZOOM argument. Thu Mar 6 14:17:19 1997 Eero Simoncelli * Added showLpyr, showWpyr, showSpyr. Modified TUTORIALS/pyramids.m to use them. * added pixelAxes.m: Adjusts size (in pixels) of currently displayed image to be a multiple of the matrix dimensions, thus eliminating display aliasing artifacts. This is now called by all the "show" commands. Mon Mar 3 17:33:25 1997 Eero Simoncelli * Fixed bug in pgmWrite (dimensions were written in reverse order). * Fixed bug in showIm (X and Y coords were swapped on label display). * Fixed bug in reconLpyr (swapped X and Y coords on int_sz) * Changed calls to "reshape" to pass dimensions individually -- older version of matlab do not accept the reshape(mtx,[y x]) form. * Fixed bug in mkDisc: sz a scalar. * Added ifftshift.m Fri Feb 28 11:07:20 1997 Eero Simoncelli * Re-worked TUTORIALS/pyramids.m * buildGpyr and buildLpyr now use 1+maxPyrHt for default height. * Fixed buildGpyr to work on 1D signals. ** Gaussian/Laplacian/Wavelet pyramid build and recon functions: - work properly with new corrDn/upConv. - use separable convolutions - use destructive modification ability of upConv (less memory allocation) * modulateFlipShift -> modulateFlip. * added lpyrHt, wpyrHt, spyrHt to return number of levels in a pyramid. Thu Feb 27 15:39:53 1997 Eero Simoncelli * Changed angular coordinate systems to CLOCKWISE in mkRamp, mkTheta, mkSine, mkSquare. This is unnatural for screen viewing, but consistent with an origin in the upper left corner of the image, which is the way one addresses the underlying matrix. * mkSine and mkSquare can now take a frequency vector or the period and direction args Tue Feb 25 11:58:33 1997 Eero Simoncelli ** Rewrote corrDn/upConv C routines: - more efficient - changed START parameters to have [1 1] origin, consistent with matlab - added STOP parameters - upConv allows destructive modification of a result arg - changed order of other params (sorry) - wrote test file conv_test.m * wrote zconv2.m Wed Aug 19 20:39:15 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) ** Added "pointOp" function (MUCH faster than interp1). ** Added "histoMatch" function. Fri Aug 2 00:56:31 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) * Changed all function/file-names to be of the form "fooBar". * Fixed entropy2.m (busted due to typo). Most matlab code was developed from 1992-1996, while the author was an assistant professor of Computer and Information Science at University of Pennsylvania. Original convolution code was written in Spring 1986, and comes from OBVIUS (Object-Based Vision and Image Understanding System), an interactive image-processing system written in Common Lisp (with calls to C code).