Applying retinex decomposition

I have come across papers mentioning retinex decomposition (into illumination and reflectance components). Could someone explain in simple terms how it works (with examples)? Is it different or related to the retinex we have in G’MIC or RT? I would love to have a nudge in the right direction. Thanks!

Ping @David_Tschumperle @jdc

I don’t know exactly what you mean, but there is at least another interpretation of Retinex


I have implemented this in RT / Local adjustements / Softlight and Original retinex (not avaiable in “normal” mode)

Simply, this algorithm based on a Laplacian and Fourier PDE solution, “equalize” luminance and in some aspects is near “ciecam02”

if you try on a portrait with areas that are too bright and others that are a little too dark, the algorithm will smooth the whole picture a bit like it would with “dodge” and “burn”


Enhancement algorithms use either or both of these components to improve an image. They may call them different names and variables, and derive them differently, but the concept is still the same. Like any decomposition, e.g., wavelet, it would be a useful tool to have at our disposal.


Lightness and Retinex Theory – older than I am. :slight_smile:  The first sentence says it all.


A weighted variational model for simultaneous reflectance and illumination estimation


Intrinsic Image Decomposition Using a Sparse Representation of Reflectance


1 Like


If you look at the paper, I give, you will see that the reference text, is the one you mentioned (McCann 1970)

In the “Ipol”, the “decomposition” is done with a Laplacian “threshold” to take into account the reflectance…and illumination. With the threshold you adjust the “quantity” of Luminance you don’t want to take into account.

It is the same theory…

But, but, but,… the algorithm of McCann is very complex, that of “Ipol” is simple (since we can consider that using a Laplacian, a Fourier transform and the Poisson equation is simple)

But the result, in the exemple “Ipol” I give, and my result are close to the results that you show

there are 4 parts in the Ipol algorithm:

  • a) apply a “Laplacian threshold” (I have modified this algo to take into account the background, and the deltaE)
  • b) Fourier transformation (also I modify)
  • c) Poisson PDE
  • d) Normalize luminance : after a) b) c) the luminance is completely changed. “Normalize” ensures that the final image will have the same “mean” and the same “variance”. Only is changed the variation of luminance (in shadows, in highlight) :slight_smile:

I even think that it should be possible to apply, with “wavelet decomposition” for each level, with a “curve” to differenciate action between levels ??

wavelet decompostion ==> Laplacian + Fourier + Poisson + (? normalize) ==> recompostion