The INFace (Illumination Normalization techniques for robust Face recognition) toolbox v2.0 is a collection of Matlab functions and scripts intended to help researchers working in the field of face recognition. The toolbox was produced as a byproduct of my research work and is freely available for download.
The INface toolbox v2.0 includes implementations of the following photometric normalization techniques: the single-scale-retinex algorithm, the multi-scale-retinex algorithm, the single-scale self quotient image, the multi-scale self quotient image, the homomorphic-filtering-based normalization technique, a wavelet-based normalization technique, a wevelet-denoising-based normalization technique, the isotropic diffusion-based normalization technique, the anisotropic-diffusion-based normalization technique, the non-local means-based normalization technique, the adaptive non-local-means-based normalization technique, the DCT-based normalization technique, a normalization technique based on steerable filters, a modified version of the anisotropic diffusion-based normalization technique, the Gradientfaces approach, the Weberfaces approach, the multi-scale Weberfaces approach, the Tan and Triggs normalization technique and the large and small scale features normalization technique.
In addition to the listed techniques there are also a number of histogram manipulation functions included in the toolbox, which can be useful for the task of illumination invariant face recognition.
How to include flower pollination algorithm to calculate multiscale retinex weights?
if i include fpa_demo.m, i am getting an error "Undefined function or variable "Fitness".
why i just get black and white images for single scale retinex? could someone please help me?
function [R,L] = single_scale_retinex(X,hsiz, normalize)
%% Init. operations
cent = ceil(a/2);
max_v_x = max(max(GRY));
min_v_x = min(min(GRY));
X1=ceil(((GRY - min_v_x*ones(a,b))./(max_v_x*(ones(a,b))-min_v_x*(ones(a,b))))*255)+0.01; %for the log operation
%% Filter construction
filt = zeros(a,b);
radius = (a.^2+b.^2);
filt(i,j) = exp(-(radius/(hsiz^2)));
%% Filter image and adjust for log operation
Z = ceil(imfilter(GRY,filt,'replicate','same'));
%% Produce illumination normalized image Y
Not sure I understand what you mean. How to save it? Look up imwrite.
but how can I write the image????
I agree in principle that not all techniques are making the recognition performance on all databases bettr. However, my goal was not to make only the best existing normalization techniques available to the research community, but to provide a set of methods, for which you can make your own judgement of their usefulnes. Since the success of a techniques may well depened on the feature extraction techniques you are using as well as other factors, it is not certain which technique is the best. Many authors advertise their techniques as being the best, therefore having source code available to test them on your own is really important. Knowing which techniques do not work and why, can therefore also be of relevance.
Great toolbox. However, I think the many normalization and hist-equalization steps in the demos are making the results worse. Maybe you can do away with them.
Adam, both the anisotorpic and isotorpic photometric normalization techniques in the toolbox are implemented via the inverse of a large sparse matrix, but they could of course also be implemented using multigrid methods. Regarding your results with the retinex techniques, I am not quite sure what you mean poor results. Are the recognition results poor when you use the images for face recognition or do you get visualy poor results. In any case the retinex technique does not depend on face registration at all.
It may be easier to iteratively do anisotropic and isotropic filtering for some people. Also, with the retinex imaging I tend to get poor results, with weird shadows in places they shouldnt be. I am not sure if its because you need good face registration or not so Ill have to read the paper.
To anyone using the toolbox: the title of the publication associated with the INFace toolbox has changed; the correct title is: "Photometric normalization techniques for Illumination invariance"
Thanks for answering
This package is definitely one of the best source code on web on its own field.
That error jus means what it says. You run out of memory because your input image is too large. If you type help with the two functions, you will see that the two methods are not implemented using multigrid methods, but with a direct inversion of the (sparse) differential operator. Hence, you can only normalize images for which you are able to invert the operator in sparse form. Resize the image to a smaller size and try again.
Same problem for anisotropic.smoothing function like report 3 is viewed
answer to report 3: definitely no. I checked.
Can it be reason that I get "??? Out of memory. Type HELP MEMORY for your options."message on isotropic smoothing part?
@Alireza: All function of the toolbox return 8-bit images. This means that the result will always be in the range of [0,255]. If you need the output in [0,1] just divide the result of the normalization with 255. Thanks for the comment.
for SSR: output should be changed into [0,1] at the end
Didn't test yet but look like combination of best tools
I have uploaded my toolbox to face-rec.com, to matlab central, and it is also available from my web page at the university. I do not see why it shouldn't be down-loadable from several sources.
This code is available in Face-rec.com. Please don't put the same code
Didn't test yet, but it's a good initiative. thanks you
version 2.1 is available from the toolbox homepage
Added some keywords (tags) to download page.
The Inface toolbox version 2.0 was updated with several photometric techniques, some bugs were fixed, a homepage was created, etc. Look at the ChangeLok file for a list of all changes.
Replaced the zip archive.
Added new commentary.
Inspired by: Toolbox Non-Local Means
Create scripts with code, output, and formatted text in a single executable document.