File Exchange

image thumbnail

The INface toolbox v2.0 for illumination invariant face recognition

version (715 KB) by Vitomir Struc
Photometric normalization techniques used for achieving illumination invariant face recognition.


Updated 26 Jan 2012

View License

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.

Comments and Ratings (23)

Hamsa L

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)

close all
clear all

%% Init. operations
figure;imshow(GRY),title('in GRY')

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);
for i=1:a
for j=1: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'));
for i=1:a
for j=1:b
if Z(i,j)==0;

%% 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

Last report:
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, 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 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.

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux