https://doi.org/10.5201/ipol.2013.90
Raw File
Tip revision: a8341625a261221b9262d5260853ce7337f13617 authored by Software Heritage on 30 April 2013, 00:00:00 UTC
ipol: Deposit 1238 in collection ipol
Tip revision: a834162
README.txt
This is the source code and tools corresponding to the "Analysis of the Percentile method, estimating a noise curve from a single image" version 1.1 IPOL article.

2014-02-27: bugfix in file subscale/algo.cpp at the algorithm(...) function.

Copyright (c) 2012 by Miguel Colom.
http://mcolom.perso.math.cnrs.fr/
License: GNU General Public License Version 3 (the ``GPL'').

This is the source code for the Percentile noise estimation method estimating signal-dependent noise and also the additional tools needed to run the demo: "fnoise" to add uniform or signal dependent noise and "subscale" to create down-scales by averaging groups of pixels.

The code for the noise estimator is at the directory "percentile".

To compile each program the 'make' tool can be invoked at each of the three directories:
- fnoise
- percentile
- subscale

To make the source code much more understandable, the auxiliar functions that deal with memory management, image reading, garbage collecting, etc. has been isolated in the "framework" directory.
The file "algo.cpp" contains only that part of the code that is relevant for the noise estimation algorithm.

All these programs are standalone and therefore none of them need the others to be run.

The directory "scripts" contain a small Bash script (writeNoiseCurve.sh) that can be used to plot the noise curves.

This program needs the FFTW3 library to be run and optionally the openMP library.
The Percentile program is able to read 8/16 bits PNG files and also float images encoded with its own format.

The usage of the program and the default values are the following:

usage: percentile [-b b] [-D D] [-w w] [-p p] [-f f] [-g g] [-r] [-h] [-c c] [-e e]  input 
	-b  b	 Number of bins (Default: 0)
	-D  D	 Filtering distance (Default: 7)
	-w  w	 Variance block (Default: 21)
	-p  p	 Percentile (Default: 0.005)
	-f  f	 Prefilter operator (Default: 5)
	-g  g	 Filter curve iterations (Default: 3)
	-r	 Flag to remove equal pixels 
	-h	 Flag to remove outliers 
	-c  c	 Correction type (Default: 1)
	-e  e	 Percentile Gaussian corrections directory (Default: ./per_corrections/)
	input	 input file

Automatic settings:
- Setting the number of bins to 0 means that 42000 samples/bin will be used automatically.

Example of use:

miguel@pringle:~/percentile$ ./percentile lena.png
95.600906  53.183674  65.170067  2.773600  3.630247  3.593338  
151.764175  68.782310  78.986397  2.269901  3.296971  3.659531  
189.741501  90.714287  97.297050  1.987156  2.958282  4.081073  
198.258499  118.174606  109.102043  1.833609  2.647182  4.328723  
220.637192  139.653061  125.453514  1.400879  2.524813  4.247674  
237.925171  203.866211  179.743759  0.850171  1.432319  3.417941

The first three columns are the means of the noise curves. The last three the corresponding standard deviations.
This format is directly compatible with gnuplot.

The source code of all the C/C++ programs include their comments in such a way that automatic documentation can be generated with the Doxygen tool.

http://www.ipol.im
Image Processing On Line

back to top