MATLAB: How to do Thermal image Normalization with range 0 to 40

computer visiondigital image processingImage Processing Toolboxthermal image

Hi all I'm doing research about using thermal image for temperature measurement for medical purposes, I try to repeat methodology of paper "Face and eyes localization algorithm in thermal images for temperature measurement of the inner canthus of the eyes". They used Normalization of thermal image with range 0 to 40, and they got these results.
I tried the code below:
tt = imread('test.jpg');
figure, imshow(tt)
tt = double(tt);
normimg = uint8(zeros(size(tt)));
for idx = 1 : 3
chan = tt(:,:,idx);
minvalue = min(chan(:));
maxvalue = max(chan(:));
normimg(:,:,idx) = uint8((chan-minvalue)*40/(maxvalue-minvalue));
end
figure, imshow(normimg)
and I got different results so what I should do to get same results Thank you in advance

Best Answer

You're not doing what they did. You're doing something completely different. All they did was to change the colormap, not change the matrix or get a new matrix scaled to a different range. So all you have to do is to display your thermal image and apply a colormap and use caxis() to set the range to 30-40
imshow(thermalImage, []);
colormap(hot(256)); % Whatever map you want.
caxis([30, 40]);
colorbar;
Now a value of 30 in your image will be mapped to the lowest color in the colorbar, and a value of 40 will be mapped to the highest color. Values outside those limits 30-40 will take on the value of the color at the limit.