From a6df67e8bcd5159cde27556f4f6a315f8dc2215f Mon Sep 17 00:00:00 2001 From: shamikam Date: Mon, 16 Jan 2017 02:56:17 +0530 Subject: First Commit --- .../include/opencv2/ximgproc/segmentation.hpp | 252 +++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 thirdparty/linux/include/opencv2/ximgproc/segmentation.hpp (limited to 'thirdparty/linux/include/opencv2/ximgproc/segmentation.hpp') diff --git a/thirdparty/linux/include/opencv2/ximgproc/segmentation.hpp b/thirdparty/linux/include/opencv2/ximgproc/segmentation.hpp new file mode 100644 index 0000000..02d28bf --- /dev/null +++ b/thirdparty/linux/include/opencv2/ximgproc/segmentation.hpp @@ -0,0 +1,252 @@ +/* +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 + (3-clause BSD License) +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: + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions 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. + * Neither the names of the copyright holders nor the names of the contributors + may 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 copyright holders 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. +*/ + +#ifndef __OPENCV_XIMGPROC_SEGMENTATION_HPP__ +#define __OPENCV_XIMGPROC_SEGMENTATION_HPP__ + +#include + +namespace cv { + namespace ximgproc { + namespace segmentation { + //! @addtogroup ximgproc_segmentation + //! @{ + + /** @brief Graph Based Segmentation Algorithm. + The class implements the algorithm described in @cite PFF2004 . + */ + class CV_EXPORTS_W GraphSegmentation : public Algorithm { + public: + /** @brief Segment an image and store output in dst + @param src The input image. Any number of channel (1 (Eg: Gray), 3 (Eg: RGB), 4 (Eg: RGB-D)) can be provided + @param dst The output segmentation. It's a CV_32SC1 Mat with the same number of cols and rows as input image, with an unique, sequential, id for each pixel. + */ + CV_WRAP virtual void processImage(InputArray src, OutputArray dst) = 0; + + CV_WRAP virtual void setSigma(double sigma) = 0; + CV_WRAP virtual double getSigma() = 0; + + CV_WRAP virtual void setK(float k) = 0; + CV_WRAP virtual float getK() = 0; + + CV_WRAP virtual void setMinSize(int min_size) = 0; + CV_WRAP virtual int getMinSize() = 0; + }; + + /** @brief Creates a graph based segmentor + @param sigma The sigma parameter, used to smooth image + @param k The k parameter of the algorythm + @param min_size The minimum size of segments + */ + CV_EXPORTS_W Ptr createGraphSegmentation(double sigma=0.5, float k=300, int min_size=100); + + /** @brief Strategie for the selective search segmentation algorithm + The class implements a generic stragery for the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategy : public Algorithm { + public: + /** @brief Set a initial image, with a segementation. + @param img The input image. Any number of channel can be provided + @param regions A segementation of the image. The parameter must be the same size of img. + @param sizes The sizes of different regions + @param image_id If not set to -1, try to cache pre-computations. If the same set og (img, regions, size) is used, the image_id need to be the same. + */ + CV_WRAP virtual void setImage(InputArray img, InputArray regions, InputArray sizes, int image_id = -1) = 0; + + /** @brief Return the score between two regions (between 0 and 1) + @param r1 The first region + @param r2 The second region + */ + CV_WRAP virtual float get(int r1, int r2) = 0; + + /** @brief Inform the strategy that two regions will be merged + @param r1 The first region + @param r2 The second region + */ + CV_WRAP virtual void merge(int r1, int r2) = 0; + }; + + /** @brief Color-based strategy for the selective search segmentation algorithm + The class is implemented from the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategyColor : public SelectiveSearchSegmentationStrategy { + }; + + /** @brief Create a new color-based strategy */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyColor(); + + /** @brief Size-based strategy for the selective search segmentation algorithm + The class is implemented from the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategySize : public SelectiveSearchSegmentationStrategy { + }; + + /** @brief Create a new size-based strategy */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategySize(); + + /** @brief Texture-based strategy for the selective search segmentation algorithm + The class is implemented from the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategyTexture : public SelectiveSearchSegmentationStrategy { + }; + + /** @brief Create a new size-based strategy */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyTexture(); + + /** @brief Fill-based strategy for the selective search segmentation algorithm + The class is implemented from the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategyFill : public SelectiveSearchSegmentationStrategy { + }; + + /** @brief Create a new fill-based strategy */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyFill(); + + /** @brief Regroup multiple strategies for the selective search segmentation algorithm + */ + class CV_EXPORTS_W SelectiveSearchSegmentationStrategyMultiple : public SelectiveSearchSegmentationStrategy { + public: + + /** @brief Add a new sub-strategy + @param g The strategy + @param weight The weight of the strategy + */ + CV_WRAP virtual void addStrategy(Ptr g, float weight) = 0; + /** @brief Remove all sub-strategies + */ + CV_WRAP virtual void clearStrategies() = 0; + }; + + /** @brief Create a new multiple strategy */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyMultiple(); + + /** @brief Create a new multiple strategy and set one subtrategy + @param s1 The first strategy + */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyMultiple(Ptr s1); + + /** @brief Create a new multiple strategy and set two subtrategies, with equal weights + @param s1 The first strategy + @param s2 The second strategy + */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyMultiple(Ptr s1, Ptr s2); + + + /** @brief Create a new multiple strategy and set three subtrategies, with equal weights + @param s1 The first strategy + @param s2 The second strategy + @param s3 The third strategy + */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyMultiple(Ptr s1, Ptr s2, Ptr s3); + + /** @brief Create a new multiple strategy and set four subtrategies, with equal weights + @param s1 The first strategy + @param s2 The second strategy + @param s3 The third strategy + @param s4 The forth strategy + */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentationStrategyMultiple(Ptr s1, Ptr s2, Ptr s3, Ptr s4); + + /** @brief Selective search segmentation algorithm + The class implements the algorithm described in @cite uijlings2013selective. + */ + class CV_EXPORTS_W SelectiveSearchSegmentation : public Algorithm { + public: + + /** @brief Set a image used by switch* functions to initialize the class + @param img The image + */ + CV_WRAP virtual void setBaseImage(InputArray img) = 0; + + /** @brief Initialize the class with the 'Single stragegy' parameters describled in @cite uijlings2013selective. + @param k The k parameter for the graph segmentation + @param sigma The sigma parameter for the graph segmentation + */ + CV_WRAP virtual void switchToSingleStrategy(int k = 200, float sigma = 0.8f) = 0; + + /** @brief Initialize the class with the 'Selective search fast' parameters describled in @cite uijlings2013selective. + @param base_k The k parameter for the first graph segmentation + @param inc_k The increment of the k parameter for all graph segmentations + @param sigma The sigma parameter for the graph segmentation + */ + CV_WRAP virtual void switchToSelectiveSearchFast(int base_k = 150, int inc_k = 150, float sigma = 0.8f) = 0; + + /** @brief Initialize the class with the 'Selective search fast' parameters describled in @cite uijlings2013selective. + @param base_k The k parameter for the first graph segmentation + @param inc_k The increment of the k parameter for all graph segmentations + @param sigma The sigma parameter for the graph segmentation + */ + CV_WRAP virtual void switchToSelectiveSearchQuality(int base_k = 150, int inc_k = 150, float sigma = 0.8f) = 0; + + /** @brief Add a new image in the list of images to process. + @param img The image + */ + CV_WRAP virtual void addImage(InputArray img) = 0; + + /** @brief Clear the list of images to process + */ + CV_WRAP virtual void clearImages() = 0; + + /** @brief Add a new graph segmentation in the list of graph segementations to process. + @param g The graph segmentation + */ + CV_WRAP virtual void addGraphSegmentation(Ptr g) = 0; + + /** @brief Clear the list of graph segmentations to process; + */ + CV_WRAP virtual void clearGraphSegmentations() = 0; + + /** @brief Add a new strategy in the list of strategy to process. + @param s The strategy + */ + CV_WRAP virtual void addStrategy(Ptr s) = 0; + + /** @brief Clear the list of strategy to process; + */ + CV_WRAP virtual void clearStrategies() = 0; + + /** @brief Based on all images, graph segmentations and stragies, computes all possible rects and return them + @param rects The list of rects. The first ones are more relevents than the lasts ones. + */ + CV_WRAP virtual void process(std::vector& rects) = 0; + }; + + /** @brief Create a new SelectiveSearchSegmentation class. + */ + CV_EXPORTS_W Ptr createSelectiveSearchSegmentation(); + + //! @} + + } + } +} + +#endif -- cgit