Multiscale Retinex

Multiscale Retinex for image enhancement.

You are now following this Submission

Two different implementation of the Multiscale Retinex algorithm for image enhancement based on Petro, A. B., Sbert, C., & Morel, J. M. (2014). Multiscale retinex. Image Processing On Line, 71-88.
The first one use an exponential downscaling by 'scalefactor' until 'scalefactor^nscale', this has the advantage of speed up the algorithm for large image but produces more halo artifacts.
The second one take as input the different scales disered and thus allow non constrain scaling.
The miniature is generated by :

Im = imread('example.jpg');
% use the maximum chanel as an approximation of the image illumination
L = max(Im, [], 3);
% compute reflectance using both methods
ret = MSRetinex(mat2gray(L), 5, 3, 2, [5 5], 8);
ret2 = MSRetinex2(mat2gray(L), [5, 35, 150], [5 5], 8);
% use value of hsv domain to enhance the image
Ihsv = rgb2hsv(Im);
Ihsv(:, :, 3) = mat2gray(ret);
R1 = hsv2rgb(Ihsv);
Ihsv(:, :, 3) = mat2gray(ret2);
R2 = hsv2rgb(Ihsv);
% display the miniature
figure;
subplot(2, 1, 1)
imshowpair(Im, R1, 'montage')
title('MSRetinex output')
subplot(2, 1, 2)
imshowpair(Im, R2, 'montage')
title('MSRetinex2 output')

The image 'example.jpg' comes from : https://www.dropbox.com/s/096l3uy9vowgs4r/Code.rar, Wang, S., Zheng, J., Hu, H. M., & Li, B. (2013). Naturalness preserved enhancement algorithm for non-uniform illumination images. IEEE Transactions on Image Processing, 22(9), 3538-3548.

Cite As

Geoffrey Schivre (2026). Multiscale Retinex (https://se.mathworks.com/matlabcentral/fileexchange/71386-multiscale-retinex), MATLAB Central File Exchange. Retrieved .

Acknowledgements

Inspired: Hierax

General Information

MATLAB Release Compatibility

  • Compatible with R2015a and later releases

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.0.2

corrected minor bug while combining the different scales !

1.0.1

misspelling in algorithm presentation corrected

1.0.0