diff --git a/modules/contrib/src/basicretinafilter.cpp b/modules/contrib/src/basicretinafilter.cpp index f6f1c23cc2..52338afaf7 100644 --- a/modules/contrib/src/basicretinafilter.cpp +++ b/modules/contrib/src/basicretinafilter.cpp @@ -334,7 +334,8 @@ void BasicRetinaFilter::_localLuminanceAdaptation(const float *inputFrame, const for (register unsigned int IDpixel=0 ; IDpixel<_filterOutput.getNBpixels() ; ++IDpixel, ++inputFramePTR) { float X0=*(localLuminancePTR++)*_localLuminanceFactor+_localLuminanceAddon; - *(outputFramePTR++) = (_maxInputValue+X0)**inputFramePTR/(*inputFramePTR +X0); + // TODO : the following line can lead to a divide by zero ! A small offset is added, take care if the offset is too large in case of High Dynamic Range images which can use very small values... + *(outputFramePTR++) = (_maxInputValue+X0)**inputFramePTR/(*inputFramePTR +X0+0.00000000001); //std::cout<<"BasicRetinaFilter::inputFrame[IDpixel]=%f, X0=%f, outputFrame[IDpixel]=%f\n", inputFrame[IDpixel], X0, outputFrame[IDpixel]); } } diff --git a/samples/cpp/retinaDemo.cpp b/samples/cpp/retinaDemo.cpp index b6a592370d..c9fd9729e1 100644 --- a/samples/cpp/retinaDemo.cpp +++ b/samples/cpp/retinaDemo.cpp @@ -47,6 +47,8 @@ int main(int argc, char* argv[]) { std::cout<<"* => reports comments/remarks at benoit.alexandre.vision@gmail.com"< more informations and papers at : http://sites.google.com/site/benoitalexandrevision/"< you can use this to fine tune parameters and load them if you save to file 'RetinaSpecificParameters.xml'"<write("RetinaDefaultParameters.xml"); + // load parameters if file exists + myRetina->setup("RetinaSpecificParameters.xml"); myRetina->clearBuffers(); + // declare retina output buffers cv::Mat retinaOutput_parvo; cv::Mat retinaOutput_magno;