Gegl Operation : Retinex

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





hello,

I'm trying to port the retinex operation of gimp to a Gegl operation and facing following problems.

First approach :
1. a GeglOperationMeta since the Retinex algorithm depending on the parameters needs multiple blurred images (gegl:gaussian-blur). 

2. The difference between the original image and each of  the blurred images have to be summed an result in an intermediate image.
This seems not possible without implementing an operation with a specific calculation :
   
    intermediate[n] += weight * (log (input[n] + 1.) - log (blur[n]))

3. The next step would be another specialised op that performs :

    logl = log(intermediate[0] + intermediate[1] + intermediate[2] + 3.)
    dest[n+i] = (gain * ((log(alpha * (input[n]+1.)) - logl) * intermediate[n]) + offset);

4. Finally the values have to be corrected with the variance and mean calculated on the whole image.

Second approach :
GeglOperationAreaFilter implemented steps 1..3 of first apporach within the process method.
The same problem for step 4.

Any suggestions on :

How to go with step 4 since the operations process method can only calculate a mean and variance for its ROI?

Additional observation for Retinex and Gaussian Blur if the value of scale/stdev is equal or bigger then the default size of the gegl ROI then way the splitting in smaller chunks becomes a bottleneck. If the extra area needed around the ROI is important in respect to the ROI what kind of operation should be used?


_______________________________________________
Gegl-developer mailing list
Gegl-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gegl-developer

[Index of Archives]     [Yosemite News]     [Yosemite Photos]     [gtk]     [GIMP Users]     [KDE]     [Gimp's Home]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux