Pointwise Shape-Adaptive DCT Demobox  -  Public release v1.43 (15 May 2016) 
------------------------------------------------------------------------------------------------------------
(c) 2005-2016
Alessandro Foi
Kostadin Dabov
Tampere University of Technology, Tampere, FINLAND

http://www.cs.tut.fi/~foi/SA-DCT
------------------------------------------------------------------------------------------------------------

The package comprises five demos

  demo_SADCT_denoising.m          (denoising of grayscale images),
  demo_SADCT_color_denoising.m    (denoising of color images),
  demo_SADCT_deblocking.m         (deblocking and deringing of grayscale and color B-DCT compressed images),
  demo_SADCT_deblurring.m         (deblurring of grayscale images),
  demo_SADCT_inverse_halftoning.m (reconstruction of grayscale images from binary halftones)
  
a function

  SADCT_denoising.m               (denoising of grayscale images; similar to demo_SADCT_denoising.m), 

and a function which shows the adaptive-shape neighborhoods which are used in the demos as supports of the
Shape-Adaptive DCT transform

  function_shape_explorer.m      (visualization of the adaptive-shape neighborhoods).


The main demo files are open-source, and may be modified and tuned to be exploited with other data.

Each demo calls a pair of functions in order to perform hard-thresholding and Wiener filtering in SA-DCT domain.

In particular, the denoising and deblocking demos use

  function_SADCT_thresholding_fast.dll     (hard-thresholding in SA-DCT domain),
  function_SADCT_wiener_fast.dll           (Wiener-filtering in SA-DCT domain),

while the deblurring demo uses the pair
 
  function_SADCT_RI_thresholding.dll      (hard-thresholding in SA-DCT domain for regularized inverse),
  function_SADCT_RW_wiener.dll            (Wiener-filtering in SA-DCT domain for regularized-Wiener inverse).

[Corresponding mexw64, mexa64, mexmaci, mexmaci64, and mexglx files are provided for various platforms].
  
Two more functions are called by the color denoising demo in order to perform color-space transformations:

function_rgb2LumChrom.m    (inverse transformation),
function_LumChrom2rgb.m    (forward transformation).


Starting from v1.10, a new function function_AnisLPAICI8.p is introduced to perform the Anisotropic LPA-ICI
adaptive-scale selection. It provides four to five times faster processing for the LPA-ICI part and requires
much less memory than the previous general code based on conv2 and function_ICI code.



Requirements:

This demobox is developed for Matlab version 7.5.

This demobox requires a few functions from the Anisotropic Nonparametric Image Restoration Demobox
of LASIP Project (available for download at http://www.cs.tut.fi/~lasip/). It is suggested that the
Pointwise Shape-Adaptive DCT Demobox and the Anisotropic Nonparametric Image Restoration Demobox are
installed in the same folder.

The deblocking demo demo_SADCT_deblocking.m uses the function jpeg_read.dll from the Matlab JPEG Toolbox by Phil Sallee.
A complete release of this toolbox is included in our distribution in the file JPEG_Toolbox_MATLAB_1.4.zip.


What's new in this release:
changes from version 1.43 to 1.42:
 * updated:  SADCT_denoising.m            (fixed call to function_stdEst.m when sigma is not specified)
changes from version 1.42 to 1.41:
 * updated:  p-codes updated to enable compatibility with newer Matlab versions.
 * updated:  most m-files, replacing calls to old function_stdEst2D with calls to newer function_stdEst
changes from version 1.41 to 1.40:
 + added:    SA_DCT_denoising.m           implements the denoising as a function
 + added:    mex-files for Windows 64 bit, Linux 32 bit, and Linux 64 bit, MacOSX 32 bit, MacOSX 64 bit.
changes from version 1.40 to 1.31:
 + added:    demo_SADCT_inverse_halftoning.m    (demo for reconstruction of grayscale images from binary halftones)
 * updated:  function_rgb2LumChrom.m      (cleaner code)
 * updated:  function_LumChrom2rgb.m      (cleaner code)
 * updated:  demo_SADCT_deblurring.m      (cleaner code)
 * updated:  demo_SADCT_deblocking.m      (added option to disable coefficient alignment)
 * updated:  demo_SADCT_denoising.m       (added option to disable coefficient alignment)
 * updated:  demo_SADCT_color_denoising.m (added option to disable coefficient alignment)
 * updated:  function_SADCT_RW_wiener.dll (minor fix to regularization term)
changes from version 1.31 to 1.30:
 ! bugfix:   demo_SADCT_deblurring.m      (fixed: calculation of RW variance)
changes from version 1.30 to 1.20:
 * updated:  demo_SADCT_deblocking.m      (added option to disable coefficient alignment)
 * updated:  demo_SADCT_denoising.m       (added option to disable coefficient alignment)
 * updated:  demo_SADCT_color_denoising.m (added option to disable coefficient alignment)
 * updated:  function_SADCT_thresholding_fast.dll    (now works with Pentium3/Athlon CPU, coeff. alignment can be disabled)
 * updated:  function_SADCT_wiener_fast.dll     (now works with Pentium3/Athlon CPU, coeff. alignment can be disabled)
 * updated:  function_SADCT_RI_thresholding.dll (now works with Pentium3/Athlon CPU)
 * updated:  function_SADCT_RW_wiener.dll       (now works with Pentium3/Athlon CPU)
changes from version 1.10 to 1.20:
 + added:    demo_SADCT_deblocking.m      (demo for deblocking and deringing of grayscale and color images)
 * updated:  demo_SADCT_denoising.m       (added blocksize parameter to constrain the maximum size of the filtering block)
 * updated:  demo_SADCT_color_denoising.m (added blocksize parameter to constrain the maximum size of the filtering block)
 * updated:  function_shape_explorer.m    (added blocksize parameter to constrain the maximum size of the filtering block)
changes from version 1.04 to 1.10:
 + added:    function_AnisLPAICI8.p       (enables much faster calculation of h_opt_Q, lower memory requirements)
 * updated:  demo_SADCT_denoising.m       (uses function_AnisLPAICI8, added speed-up factor parameter)
 * updated:  demo_SADCT_color_denoising.m (uses function_AnisLPAICI8, added speed-up factor parameter)
changes from version 1.03 to 1.04:
 ! bugfix:   demo_SADCT_deblurring.m      (fixed: boundary handling for calculation of variance of LPA estimates)
changes from version 1.02 to 1.03:
 * updated:  demo_SADCT_denoising.m       (improved comments, cleaner code, new image cropping, and more visualization options)
 * updated:  demo_SADCT_color_denoising.m (improved comments, cleaner code, new image cropping, and more visualization options)
 * updated:  function_rgb2LumChrom.m      (improved comments and cleaner code)
 * updated:  function_LumChrom2rgb.m      (improved comments and cleaner code)
 * updated:  function_shape_explorer.m    (improved comments)
 * updated:  function_SADCT_thresholding_fast.dll   (faster processing of constant blocks)
changes from version 1.01 to 1.02:  
 ! bugfix:   function_SADCT_thresholding_fast.dll   (fixed: number of harmonics for square blocks)
changes from version 1.00 to 1.01:
 ! bugfix:   function_SADCT_thresholding_fast.dll   (fixed: preservation of mean for square blocks)
 + added:    function_shape_explorer.m    (shows adaptive-shape supports of SA-DCT)


Future additions:

Updates, examples, publications, presentations, etc. can be found at  http://www.cs.tut.fi/~foi/SA-DCT


Disclaimer:

Any unauthorized use of these routines for industrial or profit-oriented activities is expressively prohibited.
By downloading and/or using any of these files, you implicitly agree to all the terms of the TUT limited license
(included in the file Legal_Notice.txt).


Questions/feedback:

If you have any comment, suggestion, or question, please do 
contact   Alessandro Foi  at  firstname.lastname@tut.fi


