From c02b5f1d45e985a594af1a53df68d432491d8168 Mon Sep 17 00:00:00 2001 From: Alexandre Benoit Date: Sun, 4 Sep 2011 08:00:28 +0000 Subject: [PATCH] Updated retina access methods and OpenEXR image tone mapping demo cleaned --- .../include/opencv2/contrib/retina.hpp | 28 +++++++++++++++++-- modules/contrib/src/retina.cpp | 10 ++++++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/modules/contrib/include/opencv2/contrib/retina.hpp b/modules/contrib/include/opencv2/contrib/retina.hpp index 32eb44e91..b7f3fe1d5 100644 --- a/modules/contrib/include/opencv2/contrib/retina.hpp +++ b/modules/contrib/include/opencv2/contrib/retina.hpp @@ -189,16 +189,28 @@ public: /** * accessor of the details channel of the retina (models foveal vision) - * @param retinaOutput_parvo : the output buffer (reallocated if necessary) + * @param retinaOutput_parvo : the output buffer (reallocated if necessary), this output is rescaled for standard 8bits image processing use in OpenCV */ void getParvo(Mat &retinaOutput_parvo); + /** + * accessor of the details channel of the retina (models foveal vision) + * @param retinaOutput_parvo : the output buffer (reallocated if necessary), this output is the original retina filter model output, without any quantification or rescaling + */ + void getParvo(std::valarray &retinaOutput_parvo); + /** * accessor of the motion channel of the retina (models peripheral vision) - * @param retinaOutput_magno : the output buffer (reallocated if necessary) + * @param retinaOutput_magno : the output buffer (reallocated if necessary), this output is rescaled for standard 8bits image processing use in OpenCV */ void getMagno(Mat &retinaOutput_magno); + /** + * accessor of the motion channel of the retina (models peripheral vision) + * @param retinaOutput_magno : the output buffer (reallocated if necessary), this output is the original retina filter model output, without any quantification or rescaling + */ + void getMagno(std::valarray &retinaOutput_magno); + /** * activate color saturation as the final step of the color demultiplexing process * -> this saturation is a sigmoide function applied to each channel of the demultiplexed image. @@ -212,6 +224,18 @@ public: */ void clearBuffers(); + /** + * Activate/desactivate the Magnocellular pathway processing (motion information extraction), by default, it is activated + * @param activate: true if Magnocellular output should be activated, false if not + */ + void activateMovingContoursProcessing(const bool activate); + + /** + * Activate/desactivate the Parvocellular pathway processing (contours information extraction), by default, it is activated + * @param activate: true if Parvocellular (contours information extraction) output should be activated, false if not + */ + void activateContoursProcessing(const bool activate); + protected: // Parameteres setup members FileStorage _parametersSaveFile; //!< parameters file ... saved on instance delete diff --git a/modules/contrib/src/retina.cpp b/modules/contrib/src/retina.cpp index f4aeb6e3f..954afd0ce 100644 --- a/modules/contrib/src/retina.cpp +++ b/modules/contrib/src/retina.cpp @@ -297,6 +297,9 @@ void Retina::getMagno(cv::Mat &retinaOutput_magno) //retinaOutput_magno/=255.0; } +// original API level data accessors +void Retina::getMagno(std::valarray &retinaOutput_magno){_retinaFilter->getMovingContours();} +void Retina::getParvo(std::valarray &retinaOutput_parvo){_retinaFilter->getContours();} // private method called by constructirs void Retina::_init(const std::string parametersSaveFile, const cv::Size inputSize, const bool colorMode, RETINA_COLORSAMPLINGMETHOD colorSamplingMethod, const bool useRetinaLogSampling, const double reductionFactor, const double samplingStrenght) @@ -312,7 +315,8 @@ void Retina::_init(const std::string parametersSaveFile, const cv::Size inputSiz _inputBuffer.resize(nbPixels*3); // buffer supports gray images but also 3 channels color buffers... (larger is better...) // allocate the retina model - delete _retinaFilter; + if (_retinaFilter) + delete _retinaFilter; _retinaFilter = new RetinaFilter(inputSize.height, inputSize.width, colorMode, colorSamplingMethod, useRetinaLogSampling, reductionFactor, samplingStrenght); // prepare the parameter XML tree @@ -424,5 +428,9 @@ const bool Retina::_convertCvMat2ValarrayBuffer(const cv::Mat inputMatToConvert, void Retina::clearBuffers() {_retinaFilter->clearAllBuffers();} +void Retina::activateMovingContoursProcessing(const bool activate){_retinaFilter->activateMovingContoursProcessing(activate);} + +void Retina::activateContoursProcessing(const bool activate){_retinaFilter->activateMovingContoursProcessing(activate);} + } // end of namespace cv