Commit b9e4b3e9 authored by jaco's avatar jaco

saliency sample added

parent a1aa3696
......@@ -94,11 +94,10 @@ class CV_EXPORTS_W StaticSaliency : public virtual Saliency
{
Params();
};
bool computeBinaryMap( const Mat& saliencyMap, Mat& binaryMap );
bool computeBinaryMap( const Mat& saliencyMap, Mat& outputMat );
//protected:
//virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
protected:
virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
private:
Params params;
......@@ -108,32 +107,32 @@ class CV_EXPORTS_W StaticSaliency : public virtual Saliency
class CV_EXPORTS_W MotionSaliency : public virtual Saliency
{
public:
struct CV_EXPORTS Params
{
Params();
};
// struct CV_EXPORTS Params
// {
// Params();
// };
//protected:
//virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
protected:
virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
private:
Params params;
//Params params;
};
/************************************ Objectness Base Class ************************************/
class CV_EXPORTS_W Objectness : public virtual Saliency
{
public:
struct CV_EXPORTS Params
{
Params();
};
// struct CV_EXPORTS Params
// {
// Params();
// };
// protected:
// virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
protected:
virtual bool computeSaliencyImpl( const Mat& image, Mat& saliencyMap ) = 0;
private:
Params params;
//Params params;
};
} /* namespace cv */
......
......@@ -45,7 +45,7 @@
#include "saliencyBaseClasses.hpp"
//TODO delete
#define SALIENCY_DEBUG true
//#define SALIENCY_DEBUG true
#ifdef SALIENCY_DEBUG
#include <opencv2/highgui.hpp>
#endif
......@@ -76,9 +76,8 @@ class CV_EXPORTS_W StaticSaliencySpectralResidual : public StaticSaliency
void write( FileStorage& fs ) const;
protected:
bool computeSaliencyImpl( const Mat& src, Mat& dst );
AlgorithmInfo* info() const;
AlgorithmInfo* info() const { return 0; }
private:
Params params;
......@@ -100,8 +99,8 @@ class CV_EXPORTS_W MotionSaliencyPBAS : public MotionSaliency
void read( const FileNode& fn );
void write( FileStorage& fs ) const;
};
//MotionSaliencyPBAS(const MotionSaliencyPBAS::Params &parameters = MotionSaliencyPBAS::Params());
MotionSaliencyPBAS();
MotionSaliencyPBAS( const MotionSaliencyPBAS::Params &parameters = MotionSaliencyPBAS::Params() );
//MotionSaliencyPBAS();
~MotionSaliencyPBAS();
void read( const FileNode& fn );
......@@ -109,7 +108,7 @@ class CV_EXPORTS_W MotionSaliencyPBAS : public MotionSaliency
protected:
bool computeSaliencyImpl( const Mat& src, Mat& dst );
AlgorithmInfo* info() const;
AlgorithmInfo* info() const { return 0; }
private:
Params params;
......@@ -130,8 +129,8 @@ class CV_EXPORTS_W ObjectnessBING : public Objectness
void read( const FileNode& fn );
void write( FileStorage& fs ) const;
};
//ObjectnessBING(const ObjectnessBING::Params &parameters = ObjectnessBING::Params());
ObjectnessBING();
ObjectnessBING( const ObjectnessBING::Params &parameters = ObjectnessBING::Params() );
//ObjectnessBING();
~ObjectnessBING();
void read( const FileNode& fn );
......@@ -139,7 +138,7 @@ class CV_EXPORTS_W ObjectnessBING : public Objectness
protected:
bool computeSaliencyImpl( const Mat& src, Mat& dst );
AlgorithmInfo* info() const;
AlgorithmInfo* info() const { return 0; }
private:
Params params;
......
#include <opencv2/core/utility.hpp>
#include <opencv2/saliency.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
static const char* keys =
{ "{@saliency_algorithm | | Saliency algorithm <saliencyAlgorithmType.[saliencyAlgorithmTypeSubType]> }"
"{@video_name | | video name }"
"{@start_frame |1| Start frame }" };
static void help()
{
cout << "\nThis example shows the functionality of \"Saliency \""
"Call:\n"
"./example_saliency_computeSaliency <saliencyAlgorithmType.[saliencyAlgorithmTypeSubType]> <video_name> <start_frame> \n"
<< endl;
}
int main( int argc, char** argv )
{
CommandLineParser parser( argc, argv, keys );
String saliency_algorithm = parser.get<String>( 0 );
String video_name = parser.get<String>( 1 );
int start_frame = parser.get<int>( 2 );
if( saliency_algorithm.empty() || video_name.empty() )
{
help();
return -1;
}
//open the capture
VideoCapture cap;
cap.open( video_name );
cap.set( CAP_PROP_POS_FRAMES, start_frame );
if( !cap.isOpened() )
{
help();
cout << "***Could not initialize capturing...***\n";
cout << "Current parameter's value: \n";
parser.printMessage();
return -1;
}
Mat frame;
//instantiates the specific Saliency
Ptr<Saliency> saliencyAlgorithm = Saliency::create( saliency_algorithm );
if( saliencyAlgorithm == NULL )
{
cout << "***Error in the instantiation of the saliency algorithm...***\n";
return -1;
}
Mat image, saliencyMap, binaryMap;
cap >> frame;
if( frame.empty() )
{
return 0;
}
frame.copyTo( image );
if( saliencyAlgorithm->computeSaliency( image, saliencyMap ) )
{
StaticSaliencySpectralResidual spec;
spec.computeBinaryMap( saliencyMap, binaryMap );
//saliencyAlgorithm->computeBinaryMap( saliencyMap, binaryMap );
imshow( "Saliency Map", saliencyMap );
imshow( "Original Image", image );
imshow( "Binary Map", binaryMap );
waitKey( 0 );
}
return 0;
}
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "precomp.hpp"
namespace cv
{
/**
* Motion Saliency
*/
/**
* Parameters
*/
//MotionSaliency::Params::Params()
//{
//
//}
}/* namespace cv */
......@@ -56,11 +56,23 @@ MotionSaliencyPBAS::Params::Params()
}
MotionSaliencyPBAS::MotionSaliencyPBAS()
void MotionSaliencyPBAS::Params::read( const cv::FileNode& fn )
{
//resizedImageSize=Size(fn["resizedImageSize"]);
}
void MotionSaliencyPBAS::Params::write( cv::FileStorage& fs ) const
{
//fs << "resizedImageSize" << resizedImageSize;
}
MotionSaliencyPBAS::MotionSaliencyPBAS(const MotionSaliencyPBAS::Params &parameters ) :
params( parameters )
{
className = "PBAS";
}
MotionSaliencyPBAS::~MotionSaliencyPBAS()
{
......
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "precomp.hpp"
namespace cv
{
/**
* Objectness
*/
/**
* Parameters
*/
//Objectness::Params::Params()
//{
//
//}
}/* namespace cv */
......@@ -56,17 +56,22 @@ ObjectnessBING::Params::Params()
}
/*ObjectnessBING::ObjectnessBING( const ObjectnessBING &parameters ) :
params( parameters )
void ObjectnessBING::Params::read( const cv::FileNode& fn )
{
className = "PBAS";
} */
//resizedImageSize=Size(fn["resizedImageSize"]);
ObjectnessBING::ObjectnessBING()
{
}
void ObjectnessBING::Params::write( cv::FileStorage& fs ) const
{
//fs << "resizedImageSize" << resizedImageSize;
}
ObjectnessBING::ObjectnessBING( const ObjectnessBING::Params &parameters ) :
params( parameters )
{
className = "BING";
}
ObjectnessBING::~ObjectnessBING()
{
......
......@@ -92,6 +92,11 @@ bool StaticSaliency::computeBinaryMap( const Mat& saliencyMap, Mat& BinaryMap )
}
//Convert
outputMat = outputMat * 255;
outputMat.convertTo( outputMat, CV_8U );
//saliencyMap = outputMat;
// adaptative thresholding using Otsu's method, to make saliency map binary
threshold( outputMat, BinaryMap, 0, 255, THRESH_BINARY | THRESH_OTSU );
......
......@@ -57,6 +57,17 @@ StaticSaliencySpectralResidual::Params::Params()
resizedImageSize=Size(64,64);
}
void StaticSaliencySpectralResidual::Params::read( const cv::FileNode& fn )
{
//resizedImageSize=Size(fn["resizedImageSize"]);
}
void StaticSaliencySpectralResidual::Params::write( cv::FileStorage& fs ) const
{
//fs << "resizedImageSize" << resizedImageSize;
}
StaticSaliencySpectralResidual::StaticSaliencySpectralResidual( const StaticSaliencySpectralResidual::Params &parameters ) :
params( parameters )
{
......@@ -78,7 +89,6 @@ void StaticSaliencySpectralResidual::write( cv::FileStorage& fs ) const
params.write( fs );
}
bool StaticSaliencySpectralResidual::computeSaliencyImpl( const Mat& image, Mat& saliencyMap )
{
......@@ -142,10 +152,6 @@ bool StaticSaliencySpectralResidual::computeSaliencyImpl( const Mat& image, Mat&
imshow( "Saliency Map", saliencyMap );
#endif
//TODO try the results and then delete
/*outputMat = outputMat * 255;
outputMat.convertTo( outputMat, CV_8U );
saliencyMap = outputMat; */
return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment