添加项目文件。
This commit is contained in:
50
3rdparty/opencv/inc/opencv2/ximgproc/brightedges.hpp
vendored
Normal file
50
3rdparty/opencv/inc/opencv2/ximgproc/brightedges.hpp
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
/*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) 2017, IBM Corporation, all rights reserved.
|
||||
// Third party copyrights are property of their respective owners.
|
||||
//
|
||||
// @Authors
|
||||
// Marc Fiammante marc.fiammante@fr.ibm.com
|
||||
//
|
||||
// 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 OpenCV Foundation or contributors 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 OpenCV Foundation 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 "opencv2/core.hpp"
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc {
|
||||
CV_EXPORTS_W void BrightEdges(Mat &_original, Mat &_edgeview, int contrast = 1, int shortrange = 3, int longrange = 9);
|
||||
}
|
||||
}
|
||||
66
3rdparty/opencv/inc/opencv2/ximgproc/color_match.hpp
vendored
Normal file
66
3rdparty/opencv/inc/opencv2/ximgproc/color_match.hpp
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_COLOR_MATCH_HPP__
|
||||
#define __OPENCV_COLOR_MATCH_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief creates a quaternion image.
|
||||
*
|
||||
* @param img Source 8-bit, 32-bit or 64-bit image, with 3-channel image.
|
||||
* @param qimg result CV_64FC4 a quaternion image( 4 chanels zero channel and B,G,R).
|
||||
*/
|
||||
CV_EXPORTS_W void createQuaternionImage(InputArray img, OutputArray qimg);
|
||||
|
||||
/**
|
||||
* @brief calculates conjugate of a quaternion image.
|
||||
*
|
||||
* @param qimg quaternion image.
|
||||
* @param qcimg conjugate of qimg
|
||||
*/
|
||||
CV_EXPORTS_W void qconj(InputArray qimg, OutputArray qcimg);
|
||||
/**
|
||||
* @brief divides each element by its modulus.
|
||||
*
|
||||
* @param qimg quaternion image.
|
||||
* @param qnimg conjugate of qimg
|
||||
*/
|
||||
CV_EXPORTS_W void qunitary(InputArray qimg, OutputArray qnimg);
|
||||
/**
|
||||
* @brief Calculates the per-element quaternion product of two arrays
|
||||
*
|
||||
* @param src1 quaternion image.
|
||||
* @param src2 quaternion image.
|
||||
* @param dst product dst(I)=src1(I) . src2(I)
|
||||
*/
|
||||
CV_EXPORTS_W void qmultiply(InputArray src1, InputArray src2, OutputArray dst);
|
||||
/**
|
||||
* @brief Performs a forward or inverse Discrete quaternion Fourier transform of a 2D quaternion array.
|
||||
*
|
||||
* @param img quaternion image.
|
||||
* @param qimg quaternion image in dual space.
|
||||
* @param flags quaternion image in dual space. only DFT_INVERSE flags is supported
|
||||
* @param sideLeft true the hypercomplex exponential is to be multiplied on the left (false on the right ).
|
||||
*/
|
||||
CV_EXPORTS_W void qdft(InputArray img, OutputArray qimg, int flags, bool sideLeft);
|
||||
/**
|
||||
* @brief Compares a color template against overlapped color image regions.
|
||||
*
|
||||
* @param img Image where the search is running. It must be 3 channels image
|
||||
* @param templ Searched template. It must be not greater than the source image and have 3 channels
|
||||
* @param result Map of comparison results. It must be single-channel 64-bit floating-point
|
||||
*/
|
||||
CV_EXPORTS_W void colorMatchTemplate(InputArray img, InputArray templ, OutputArray result);
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
77
3rdparty/opencv/inc/opencv2/ximgproc/deriche_filter.hpp
vendored
Normal file
77
3rdparty/opencv/inc/opencv2/ximgproc/deriche_filter.hpp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* 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_DERICHEFILTER_HPP__
|
||||
#define __OPENCV_DERICHEFILTER_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief Applies Y Deriche filter to an image.
|
||||
*
|
||||
* For more details about this implementation, please see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.476.5736&rep=rep1&type=pdf
|
||||
*
|
||||
* @param op Source 8-bit or 16bit image, 1-channel or 3-channel image.
|
||||
* @param dst result CV_32FC image with same number of channel than _op.
|
||||
* @param alpha double see paper
|
||||
* @param omega double see paper
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void GradientDericheY(InputArray op, OutputArray dst, double alpha,double omega);
|
||||
/**
|
||||
* @brief Applies X Deriche filter to an image.
|
||||
*
|
||||
* For more details about this implementation, please see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.476.5736&rep=rep1&type=pdf
|
||||
*
|
||||
* @param op Source 8-bit or 16bit image, 1-channel or 3-channel image.
|
||||
* @param dst result CV_32FC image with same number of channel than _op.
|
||||
* @param alpha double see paper
|
||||
* @param omega double see paper
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void GradientDericheX(InputArray op, OutputArray dst, double alpha,double omega);
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
210
3rdparty/opencv/inc/opencv2/ximgproc/disparity_filter.hpp
vendored
Normal file
210
3rdparty/opencv/inc/opencv2/ximgproc/disparity_filter.hpp
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* 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_DISPARITYFILTER_HPP__
|
||||
#define __OPENCV_DISPARITYFILTER_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
#include <opencv2/calib3d.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/** @brief Main interface for all disparity map filters.
|
||||
*/
|
||||
class CV_EXPORTS_W DisparityFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Apply filtering to the disparity map.
|
||||
|
||||
@param disparity_map_left disparity map of the left view, 1 channel, CV_16S type. Implicitly assumes that disparity
|
||||
values are scaled by 16 (one-pixel disparity corresponds to the value of 16 in the disparity map). Disparity map
|
||||
can have any resolution, it will be automatically resized to fit left_view resolution.
|
||||
|
||||
@param left_view left view of the original stereo-pair to guide the filtering process, 8-bit single-channel
|
||||
or three-channel image.
|
||||
|
||||
@param filtered_disparity_map output disparity map.
|
||||
|
||||
@param disparity_map_right optional argument, some implementations might also use the disparity map
|
||||
of the right view to compute confidence maps, for instance.
|
||||
|
||||
@param ROI region of the disparity map to filter. Optional, usually it should be set automatically.
|
||||
|
||||
@param right_view optional argument, some implementations might also use the right view of the original
|
||||
stereo-pair.
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray disparity_map_left, InputArray left_view, OutputArray filtered_disparity_map, InputArray disparity_map_right = Mat(), Rect ROI = Rect(), InputArray right_view = Mat()) = 0;
|
||||
};
|
||||
|
||||
/** @brief Disparity map filter based on Weighted Least Squares filter (in form of Fast Global Smoother that
|
||||
is a lot faster than traditional Weighted Least Squares filter implementations) and optional use of
|
||||
left-right-consistency-based confidence to refine the results in half-occlusions and uniform areas.
|
||||
*/
|
||||
class CV_EXPORTS_W DisparityWLSFilter : public DisparityFilter
|
||||
{
|
||||
public:
|
||||
/** filter parameters */
|
||||
|
||||
/** @brief Lambda is a parameter defining the amount of regularization during filtering. Larger values force
|
||||
filtered disparity map edges to adhere more to source image edges. Typical value is 8000.
|
||||
*/
|
||||
CV_WRAP virtual double getLambda() = 0;
|
||||
/** @see getLambda */
|
||||
CV_WRAP virtual void setLambda(double _lambda) = 0;
|
||||
/** @brief SigmaColor is a parameter defining how sensitive the filtering process is to source image edges.
|
||||
Large values can lead to disparity leakage through low-contrast edges. Small values can make the filter too
|
||||
sensitive to noise and textures in the source image. Typical values range from 0.8 to 2.0.
|
||||
*/
|
||||
CV_WRAP virtual double getSigmaColor() = 0;
|
||||
/** @see getSigmaColor */
|
||||
CV_WRAP virtual void setSigmaColor(double _sigma_color) = 0;
|
||||
|
||||
/** confidence-related parameters */
|
||||
|
||||
/** @brief LRCthresh is a threshold of disparity difference used in left-right-consistency check during
|
||||
confidence map computation. The default value of 24 (1.5 pixels) is virtually always good enough.
|
||||
*/
|
||||
CV_WRAP virtual int getLRCthresh() = 0;
|
||||
/** @see getLRCthresh */
|
||||
CV_WRAP virtual void setLRCthresh(int _LRC_thresh) = 0;
|
||||
/** @brief DepthDiscontinuityRadius is a parameter used in confidence computation. It defines the size of
|
||||
low-confidence regions around depth discontinuities.
|
||||
*/
|
||||
CV_WRAP virtual int getDepthDiscontinuityRadius() = 0;
|
||||
/** @see getDepthDiscontinuityRadius */
|
||||
CV_WRAP virtual void setDepthDiscontinuityRadius(int _disc_radius) = 0;
|
||||
/** @brief Get the confidence map that was used in the last filter call. It is a CV_32F one-channel image
|
||||
with values ranging from 0.0 (totally untrusted regions of the raw disparity map) to 255.0 (regions containing
|
||||
correct disparity values with a high degree of confidence).
|
||||
*/
|
||||
CV_WRAP virtual Mat getConfidenceMap() = 0;
|
||||
/** @brief Get the ROI used in the last filter call
|
||||
*/
|
||||
CV_WRAP virtual Rect getROI() = 0;
|
||||
};
|
||||
|
||||
/** @brief Convenience factory method that creates an instance of DisparityWLSFilter and sets up all the relevant
|
||||
filter parameters automatically based on the matcher instance. Currently supports only StereoBM and StereoSGBM.
|
||||
|
||||
@param matcher_left stereo matcher instance that will be used with the filter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<DisparityWLSFilter> createDisparityWLSFilter(Ptr<StereoMatcher> matcher_left);
|
||||
|
||||
/** @brief Convenience method to set up the matcher for computing the right-view disparity map
|
||||
that is required in case of filtering with confidence.
|
||||
|
||||
@param matcher_left main stereo matcher instance that will be used with the filter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<StereoMatcher> createRightMatcher(Ptr<StereoMatcher> matcher_left);
|
||||
|
||||
/** @brief More generic factory method, create instance of DisparityWLSFilter and execute basic
|
||||
initialization routines. When using this method you will need to set-up the ROI, matchers and
|
||||
other parameters by yourself.
|
||||
|
||||
@param use_confidence filtering with confidence requires two disparity maps (for the left and right views) and is
|
||||
approximately two times slower. However, quality is typically significantly better.
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<DisparityWLSFilter> createDisparityWLSFilterGeneric(bool use_confidence);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Function for reading ground truth disparity maps. Supports basic Middlebury
|
||||
and MPI-Sintel formats. Note that the resulting disparity map is scaled by 16.
|
||||
|
||||
@param src_path path to the image, containing ground-truth disparity map
|
||||
|
||||
@param dst output disparity map, CV_16S depth
|
||||
|
||||
@result returns zero if successfully read the ground truth
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
int readGT(String src_path,OutputArray dst);
|
||||
|
||||
/** @brief Function for computing mean square error for disparity maps
|
||||
|
||||
@param GT ground truth disparity map
|
||||
|
||||
@param src disparity map to evaluate
|
||||
|
||||
@param ROI region of interest
|
||||
|
||||
@result returns mean square error between GT and src
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
double computeMSE(InputArray GT, InputArray src, Rect ROI);
|
||||
|
||||
/** @brief Function for computing the percent of "bad" pixels in the disparity map
|
||||
(pixels where error is higher than a specified threshold)
|
||||
|
||||
@param GT ground truth disparity map
|
||||
|
||||
@param src disparity map to evaluate
|
||||
|
||||
@param ROI region of interest
|
||||
|
||||
@param thresh threshold used to determine "bad" pixels
|
||||
|
||||
@result returns mean square error between GT and src
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
double computeBadPixelPercent(InputArray GT, InputArray src, Rect ROI, int thresh=24/*1.5 pixels*/);
|
||||
|
||||
/** @brief Function for creating a disparity map visualization (clamped CV_8U image)
|
||||
|
||||
@param src input disparity map (CV_16S depth)
|
||||
|
||||
@param dst output visualization
|
||||
|
||||
@param scale disparity map will be multiplied by this value for visualization
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void getDisparityVis(InputArray src,OutputArray dst,double scale=1.0);
|
||||
|
||||
//! @}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
104
3rdparty/opencv/inc/opencv2/ximgproc/edge_drawing.hpp
vendored
Normal file
104
3rdparty/opencv/inc/opencv2/ximgproc/edge_drawing.hpp
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_EDGE_DRAWING_HPP__
|
||||
#define __OPENCV_EDGE_DRAWING_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_edge_drawing
|
||||
//! @{
|
||||
|
||||
/** @brief Class implementing the ED (EdgeDrawing) @cite topal2012edge, EDLines @cite akinlar2011edlines, EDPF @cite akinlar2012edpf and EDCircles @cite akinlar2013edcircles algorithms
|
||||
*/
|
||||
|
||||
class CV_EXPORTS_W EdgeDrawing : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
enum GradientOperator
|
||||
{
|
||||
PREWITT = 0,
|
||||
SOBEL = 1,
|
||||
SCHARR = 2,
|
||||
LSD = 3
|
||||
};
|
||||
|
||||
struct CV_EXPORTS_W_SIMPLE Params
|
||||
{
|
||||
CV_WRAP Params();
|
||||
//! Parameter Free mode will be activated when this value is true.
|
||||
CV_PROP_RW bool PFmode;
|
||||
//! indicates the operator used for gradient calculation.The following operation flags are available(cv::ximgproc::EdgeDrawing::GradientOperator)
|
||||
CV_PROP_RW int EdgeDetectionOperator;
|
||||
//! threshold value used to create gradient image.
|
||||
CV_PROP_RW int GradientThresholdValue;
|
||||
//! threshold value used to create gradient image.
|
||||
CV_PROP_RW int AnchorThresholdValue;
|
||||
CV_PROP_RW int ScanInterval;
|
||||
//! minimun connected pixels length processed to create an edge segment.
|
||||
CV_PROP_RW int MinPathLength;
|
||||
//! sigma value for internal GaussianBlur() function.
|
||||
CV_PROP_RW float Sigma;
|
||||
CV_PROP_RW bool SumFlag;
|
||||
//! when this value is true NFA (Number of False Alarms) algorithm will be used for line and ellipse validation.
|
||||
CV_PROP_RW bool NFAValidation;
|
||||
//! minimun line length to detect.
|
||||
CV_PROP_RW int MinLineLength;
|
||||
CV_PROP_RW double MaxDistanceBetweenTwoLines;
|
||||
CV_PROP_RW double LineFitErrorThreshold;
|
||||
CV_PROP_RW double MaxErrorThreshold;
|
||||
|
||||
void read(const FileNode& fn);
|
||||
void write(FileStorage& fs) const;
|
||||
};
|
||||
|
||||
/** @brief Detects edges and prepares them to detect lines and ellipses.
|
||||
|
||||
@param src input image
|
||||
*/
|
||||
CV_WRAP virtual void detectEdges(InputArray src) = 0;
|
||||
CV_WRAP virtual void getEdgeImage(OutputArray dst) = 0;
|
||||
CV_WRAP virtual void getGradientImage(OutputArray dst) = 0;
|
||||
|
||||
CV_WRAP virtual std::vector<std::vector<Point> > getSegments() = 0;
|
||||
|
||||
/** @brief Detects lines.
|
||||
|
||||
@param lines output Vec<4f> contains start point and end point of detected lines.
|
||||
@note you should call detectEdges() method before call this.
|
||||
*/
|
||||
CV_WRAP virtual void detectLines(OutputArray lines) = 0;
|
||||
|
||||
/** @brief Detects circles and ellipses.
|
||||
|
||||
@param ellipses output Vec<6d> contains center point and perimeter for circles.
|
||||
@note you should call detectEdges() method before call this.
|
||||
*/
|
||||
CV_WRAP virtual void detectEllipses(OutputArray ellipses) = 0;
|
||||
|
||||
CV_WRAP Params params;
|
||||
|
||||
/** @brief sets parameters.
|
||||
|
||||
this function is meant to be used for parameter setting in other languages than c++.
|
||||
*/
|
||||
CV_WRAP void setParams(const EdgeDrawing::Params& parameters);
|
||||
virtual ~EdgeDrawing() { }
|
||||
};
|
||||
|
||||
/** @brief Creates a smart pointer to a EdgeDrawing object and initializes it
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<EdgeDrawing> createEdgeDrawing();
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __OPENCV_EDGE_DRAWING_HPP__ */
|
||||
528
3rdparty/opencv/inc/opencv2/ximgproc/edge_filter.hpp
vendored
Normal file
528
3rdparty/opencv/inc/opencv2/ximgproc/edge_filter.hpp
vendored
Normal file
@@ -0,0 +1,528 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* 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_EDGEFILTER_HPP__
|
||||
#define __OPENCV_EDGEFILTER_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
enum EdgeAwareFiltersList
|
||||
{
|
||||
DTF_NC,
|
||||
DTF_IC,
|
||||
DTF_RF,
|
||||
|
||||
GUIDED_FILTER,
|
||||
AM_FILTER
|
||||
};
|
||||
|
||||
|
||||
/** @brief Interface for realizations of Domain Transform filter.
|
||||
|
||||
For more details about this filter see @cite Gastal11 .
|
||||
*/
|
||||
class CV_EXPORTS_W DTFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Produce domain transform filtering operation on source image.
|
||||
|
||||
@param src filtering image with unsigned 8-bit or floating-point 32-bit depth and up to 4 channels.
|
||||
|
||||
@param dst destination image.
|
||||
|
||||
@param dDepth optional depth of the output image. dDepth can be set to -1, which will be equivalent
|
||||
to src.depth().
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray src, OutputArray dst, int dDepth = -1) = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method, create instance of DTFilter and produce initialization routines.
|
||||
|
||||
@param guide guided image (used to build transformed distance, which describes edge structure of
|
||||
guided image).
|
||||
|
||||
@param sigmaSpatial \f${\sigma}_H\f$ parameter in the original article, it's similar to the sigma in the
|
||||
coordinate space into bilateralFilter.
|
||||
|
||||
@param sigmaColor \f${\sigma}_r\f$ parameter in the original article, it's similar to the sigma in the
|
||||
color space into bilateralFilter.
|
||||
|
||||
@param mode one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for
|
||||
filtering 2D signals in the article.
|
||||
|
||||
@param numIters optional number of iterations used for filtering, 3 is quite enough.
|
||||
|
||||
For more details about Domain Transform filter parameters, see the original article @cite Gastal11 and
|
||||
[Domain Transform filter homepage](http://www.inf.ufrgs.br/~eslgastal/DomainTransform/).
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<DTFilter> createDTFilter(InputArray guide, double sigmaSpatial, double sigmaColor, int mode = DTF_NC, int numIters = 3);
|
||||
|
||||
/** @brief Simple one-line Domain Transform filter call. If you have multiple images to filter with the same
|
||||
guided image then use DTFilter interface to avoid extra computations on initialization stage.
|
||||
|
||||
@param guide guided image (also called as joint image) with unsigned 8-bit or floating-point 32-bit
|
||||
depth and up to 4 channels.
|
||||
@param src filtering image with unsigned 8-bit or floating-point 32-bit depth and up to 4 channels.
|
||||
@param dst destination image
|
||||
@param sigmaSpatial \f${\sigma}_H\f$ parameter in the original article, it's similar to the sigma in the
|
||||
coordinate space into bilateralFilter.
|
||||
@param sigmaColor \f${\sigma}_r\f$ parameter in the original article, it's similar to the sigma in the
|
||||
color space into bilateralFilter.
|
||||
@param mode one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for
|
||||
filtering 2D signals in the article.
|
||||
@param numIters optional number of iterations used for filtering, 3 is quite enough.
|
||||
@sa bilateralFilter, guidedFilter, amFilter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void dtFilter(InputArray guide, InputArray src, OutputArray dst, double sigmaSpatial, double sigmaColor, int mode = DTF_NC, int numIters = 3);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Interface for realizations of Guided Filter.
|
||||
|
||||
For more details about this filter see @cite Kaiming10 .
|
||||
*/
|
||||
class CV_EXPORTS_W GuidedFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Apply Guided Filter to the filtering image.
|
||||
|
||||
@param src filtering image with any numbers of channels.
|
||||
|
||||
@param dst output image.
|
||||
|
||||
@param dDepth optional depth of the output image. dDepth can be set to -1, which will be equivalent
|
||||
to src.depth().
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray src, OutputArray dst, int dDepth = -1) = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method, create instance of GuidedFilter and produce initialization routines.
|
||||
|
||||
@param guide guided image (or array of images) with up to 3 channels, if it have more then 3
|
||||
channels then only first 3 channels will be used.
|
||||
|
||||
@param radius radius of Guided Filter.
|
||||
|
||||
@param eps regularization term of Guided Filter. \f${eps}^2\f$ is similar to the sigma in the color
|
||||
space into bilateralFilter.
|
||||
|
||||
For more details about Guided Filter parameters, see the original article @cite Kaiming10 .
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<GuidedFilter> createGuidedFilter(InputArray guide, int radius, double eps);
|
||||
|
||||
/** @brief Simple one-line Guided Filter call.
|
||||
|
||||
If you have multiple images to filter with the same guided image then use GuidedFilter interface to
|
||||
avoid extra computations on initialization stage.
|
||||
|
||||
@param guide guided image (or array of images) with up to 3 channels, if it have more then 3
|
||||
channels then only first 3 channels will be used.
|
||||
|
||||
@param src filtering image with any numbers of channels.
|
||||
|
||||
@param dst output image.
|
||||
|
||||
@param radius radius of Guided Filter.
|
||||
|
||||
@param eps regularization term of Guided Filter. \f${eps}^2\f$ is similar to the sigma in the color
|
||||
space into bilateralFilter.
|
||||
|
||||
@param dDepth optional depth of the output image.
|
||||
|
||||
@sa bilateralFilter, dtFilter, amFilter */
|
||||
CV_EXPORTS_W void guidedFilter(InputArray guide, InputArray src, OutputArray dst, int radius, double eps, int dDepth = -1);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Interface for Adaptive Manifold Filter realizations.
|
||||
|
||||
For more details about this filter see @cite Gastal12 and References_.
|
||||
|
||||
Below listed optional parameters which may be set up with Algorithm::set function.
|
||||
- member double sigma_s = 16.0
|
||||
Spatial standard deviation.
|
||||
- member double sigma_r = 0.2
|
||||
Color space standard deviation.
|
||||
- member int tree_height = -1
|
||||
Height of the manifold tree (default = -1 : automatically computed).
|
||||
- member int num_pca_iterations = 1
|
||||
Number of iterations to computed the eigenvector.
|
||||
- member bool adjust_outliers = false
|
||||
Specify adjust outliers using Eq. 9 or not.
|
||||
- member bool use_RNG = true
|
||||
Specify use random number generator to compute eigenvector or not.
|
||||
*/
|
||||
class CV_EXPORTS_W AdaptiveManifoldFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
/** @brief Apply high-dimensional filtering using adaptive manifolds.
|
||||
|
||||
@param src filtering image with any numbers of channels.
|
||||
|
||||
@param dst output image.
|
||||
|
||||
@param joint optional joint (also called as guided) image with any numbers of channels.
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray src, OutputArray dst, InputArray joint = noArray()) = 0;
|
||||
|
||||
CV_WRAP virtual void collectGarbage() = 0;
|
||||
|
||||
CV_WRAP static Ptr<AdaptiveManifoldFilter> create();
|
||||
|
||||
/** @see setSigmaS */
|
||||
virtual double getSigmaS() const = 0;
|
||||
/** @copybrief getSigmaS @see getSigmaS */
|
||||
virtual void setSigmaS(double val) = 0;
|
||||
/** @see setSigmaR */
|
||||
virtual double getSigmaR() const = 0;
|
||||
/** @copybrief getSigmaR @see getSigmaR */
|
||||
virtual void setSigmaR(double val) = 0;
|
||||
/** @see setTreeHeight */
|
||||
virtual int getTreeHeight() const = 0;
|
||||
/** @copybrief getTreeHeight @see getTreeHeight */
|
||||
virtual void setTreeHeight(int val) = 0;
|
||||
/** @see setPCAIterations */
|
||||
virtual int getPCAIterations() const = 0;
|
||||
/** @copybrief getPCAIterations @see getPCAIterations */
|
||||
virtual void setPCAIterations(int val) = 0;
|
||||
/** @see setAdjustOutliers */
|
||||
virtual bool getAdjustOutliers() const = 0;
|
||||
/** @copybrief getAdjustOutliers @see getAdjustOutliers */
|
||||
virtual void setAdjustOutliers(bool val) = 0;
|
||||
/** @see setUseRNG */
|
||||
virtual bool getUseRNG() const = 0;
|
||||
/** @copybrief getUseRNG @see getUseRNG */
|
||||
virtual void setUseRNG(bool val) = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method, create instance of AdaptiveManifoldFilter and produce some initialization routines.
|
||||
|
||||
@param sigma_s spatial standard deviation.
|
||||
|
||||
@param sigma_r color space standard deviation, it is similar to the sigma in the color space into
|
||||
bilateralFilter.
|
||||
|
||||
@param adjust_outliers optional, specify perform outliers adjust operation or not, (Eq. 9) in the
|
||||
original paper.
|
||||
|
||||
For more details about Adaptive Manifold Filter parameters, see the original article @cite Gastal12 .
|
||||
|
||||
@note Joint images with CV_8U and CV_16U depth converted to images with CV_32F depth and [0; 1]
|
||||
color range before processing. Hence color space sigma sigma_r must be in [0; 1] range, unlike same
|
||||
sigmas in bilateralFilter and dtFilter functions.
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<AdaptiveManifoldFilter> createAMFilter(double sigma_s, double sigma_r, bool adjust_outliers = false);
|
||||
|
||||
/** @brief Simple one-line Adaptive Manifold Filter call.
|
||||
|
||||
@param joint joint (also called as guided) image or array of images with any numbers of channels.
|
||||
|
||||
@param src filtering image with any numbers of channels.
|
||||
|
||||
@param dst output image.
|
||||
|
||||
@param sigma_s spatial standard deviation.
|
||||
|
||||
@param sigma_r color space standard deviation, it is similar to the sigma in the color space into
|
||||
bilateralFilter.
|
||||
|
||||
@param adjust_outliers optional, specify perform outliers adjust operation or not, (Eq. 9) in the
|
||||
original paper.
|
||||
|
||||
@note Joint images with CV_8U and CV_16U depth converted to images with CV_32F depth and [0; 1]
|
||||
color range before processing. Hence color space sigma sigma_r must be in [0; 1] range, unlike same
|
||||
sigmas in bilateralFilter and dtFilter functions. @sa bilateralFilter, dtFilter, guidedFilter
|
||||
*/
|
||||
CV_EXPORTS_W void amFilter(InputArray joint, InputArray src, OutputArray dst, double sigma_s, double sigma_r, bool adjust_outliers = false);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Applies the joint bilateral filter to an image.
|
||||
|
||||
@param joint Joint 8-bit or floating-point, 1-channel or 3-channel image.
|
||||
|
||||
@param src Source 8-bit or floating-point, 1-channel or 3-channel image with the same depth as joint
|
||||
image.
|
||||
|
||||
@param dst Destination image of the same size and type as src .
|
||||
|
||||
@param d Diameter of each pixel neighborhood that is used during filtering. If it is non-positive,
|
||||
it is computed from sigmaSpace .
|
||||
|
||||
@param sigmaColor Filter sigma in the color space. A larger value of the parameter means that
|
||||
farther colors within the pixel neighborhood (see sigmaSpace ) will be mixed together, resulting in
|
||||
larger areas of semi-equal color.
|
||||
|
||||
@param sigmaSpace Filter sigma in the coordinate space. A larger value of the parameter means that
|
||||
farther pixels will influence each other as long as their colors are close enough (see sigmaColor ).
|
||||
When d\>0 , it specifies the neighborhood size regardless of sigmaSpace . Otherwise, d is
|
||||
proportional to sigmaSpace .
|
||||
|
||||
@param borderType
|
||||
|
||||
@note bilateralFilter and jointBilateralFilter use L1 norm to compute difference between colors.
|
||||
|
||||
@sa bilateralFilter, amFilter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void jointBilateralFilter(InputArray joint, InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT);
|
||||
|
||||
/** @brief Applies the bilateral texture filter to an image. It performs structure-preserving texture filter.
|
||||
For more details about this filter see @cite Cho2014.
|
||||
|
||||
@param src Source image whose depth is 8-bit UINT or 32-bit FLOAT
|
||||
|
||||
@param dst Destination image of the same size and type as src.
|
||||
|
||||
@param fr Radius of kernel to be used for filtering. It should be positive integer
|
||||
|
||||
@param numIter Number of iterations of algorithm, It should be positive integer
|
||||
|
||||
@param sigmaAlpha Controls the sharpness of the weight transition from edges to smooth/texture regions, where
|
||||
a bigger value means sharper transition. When the value is negative, it is automatically calculated.
|
||||
|
||||
@param sigmaAvg Range blur parameter for texture blurring. Larger value makes result to be more blurred. When the
|
||||
value is negative, it is automatically calculated as described in the paper.
|
||||
|
||||
@sa rollingGuidanceFilter, bilateralFilter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void bilateralTextureFilter(InputArray src, OutputArray dst, int fr = 3, int numIter = 1, double sigmaAlpha = -1., double sigmaAvg = -1.);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Applies the rolling guidance filter to an image.
|
||||
|
||||
For more details, please see @cite zhang2014rolling
|
||||
|
||||
@param src Source 8-bit or floating-point, 1-channel or 3-channel image.
|
||||
|
||||
@param dst Destination image of the same size and type as src.
|
||||
|
||||
@param d Diameter of each pixel neighborhood that is used during filtering. If it is non-positive,
|
||||
it is computed from sigmaSpace .
|
||||
|
||||
@param sigmaColor Filter sigma in the color space. A larger value of the parameter means that
|
||||
farther colors within the pixel neighborhood (see sigmaSpace ) will be mixed together, resulting in
|
||||
larger areas of semi-equal color.
|
||||
|
||||
@param sigmaSpace Filter sigma in the coordinate space. A larger value of the parameter means that
|
||||
farther pixels will influence each other as long as their colors are close enough (see sigmaColor ).
|
||||
When d\>0 , it specifies the neighborhood size regardless of sigmaSpace . Otherwise, d is
|
||||
proportional to sigmaSpace .
|
||||
|
||||
@param numOfIter Number of iterations of joint edge-preserving filtering applied on the source image.
|
||||
|
||||
@param borderType
|
||||
|
||||
@note rollingGuidanceFilter uses jointBilateralFilter as the edge-preserving filter.
|
||||
|
||||
@sa jointBilateralFilter, bilateralFilter, amFilter
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
void rollingGuidanceFilter(InputArray src, OutputArray dst, int d = -1, double sigmaColor = 25, double sigmaSpace = 3, int numOfIter = 4, int borderType = BORDER_DEFAULT);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Interface for implementations of Fast Bilateral Solver.
|
||||
|
||||
For more details about this solver see @cite BarronPoole2016 .
|
||||
*/
|
||||
class CV_EXPORTS_W FastBilateralSolverFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
/** @brief Apply smoothing operation to the source image.
|
||||
|
||||
@param src source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 3 channels.
|
||||
|
||||
@param confidence confidence image with unsigned 8-bit or floating-point 32-bit confidence and 1 channel.
|
||||
|
||||
@param dst destination image.
|
||||
|
||||
@note Confidence images with CV_8U depth are expected to in [0, 255] and CV_32F in [0, 1] range.
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray src, InputArray confidence, OutputArray dst) = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method, create instance of FastBilateralSolverFilter and execute the initialization routines.
|
||||
|
||||
@param guide image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels.
|
||||
|
||||
@param sigma_spatial parameter, that is similar to spatial space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param sigma_luma parameter, that is similar to luma space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param sigma_chroma parameter, that is similar to chroma space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param lambda smoothness strength parameter for solver.
|
||||
|
||||
@param num_iter number of iterations used for solver, 25 is usually enough.
|
||||
|
||||
@param max_tol convergence tolerance used for solver.
|
||||
|
||||
For more details about the Fast Bilateral Solver parameters, see the original paper @cite BarronPoole2016.
|
||||
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<FastBilateralSolverFilter> createFastBilateralSolverFilter(InputArray guide, double sigma_spatial, double sigma_luma, double sigma_chroma, double lambda = 128.0, int num_iter = 25, double max_tol = 1e-5);
|
||||
|
||||
|
||||
|
||||
/** @brief Simple one-line Fast Bilateral Solver filter call. If you have multiple images to filter with the same
|
||||
guide then use FastBilateralSolverFilter interface to avoid extra computations.
|
||||
|
||||
@param guide image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels.
|
||||
|
||||
@param src source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels.
|
||||
|
||||
@param confidence confidence image with unsigned 8-bit or floating-point 32-bit confidence and 1 channel.
|
||||
|
||||
@param dst destination image.
|
||||
|
||||
@param sigma_spatial parameter, that is similar to spatial space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param sigma_luma parameter, that is similar to luma space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param sigma_chroma parameter, that is similar to chroma space sigma (bandwidth) in bilateralFilter.
|
||||
|
||||
@param lambda smoothness strength parameter for solver.
|
||||
|
||||
@param num_iter number of iterations used for solver, 25 is usually enough.
|
||||
|
||||
@param max_tol convergence tolerance used for solver.
|
||||
|
||||
For more details about the Fast Bilateral Solver parameters, see the original paper @cite BarronPoole2016.
|
||||
|
||||
@note Confidence images with CV_8U depth are expected to in [0, 255] and CV_32F in [0, 1] range.
|
||||
*/
|
||||
CV_EXPORTS_W void fastBilateralSolverFilter(InputArray guide, InputArray src, InputArray confidence, OutputArray dst, double sigma_spatial = 8, double sigma_luma = 8, double sigma_chroma = 8, double lambda = 128.0, int num_iter = 25, double max_tol = 1e-5);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/** @brief Interface for implementations of Fast Global Smoother filter.
|
||||
|
||||
For more details about this filter see @cite Min2014 and @cite Farbman2008 .
|
||||
*/
|
||||
class CV_EXPORTS_W FastGlobalSmootherFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
/** @brief Apply smoothing operation to the source image.
|
||||
|
||||
@param src source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels.
|
||||
|
||||
@param dst destination image.
|
||||
*/
|
||||
CV_WRAP virtual void filter(InputArray src, OutputArray dst) = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method, create instance of FastGlobalSmootherFilter and execute the initialization routines.
|
||||
|
||||
@param guide image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels.
|
||||
|
||||
@param lambda parameter defining the amount of regularization
|
||||
|
||||
@param sigma_color parameter, that is similar to color space sigma in bilateralFilter.
|
||||
|
||||
@param lambda_attenuation internal parameter, defining how much lambda decreases after each iteration. Normally,
|
||||
it should be 0.25. Setting it to 1.0 may lead to streaking artifacts.
|
||||
|
||||
@param num_iter number of iterations used for filtering, 3 is usually enough.
|
||||
|
||||
For more details about Fast Global Smoother parameters, see the original paper @cite Min2014. However, please note that
|
||||
there are several differences. Lambda attenuation described in the paper is implemented a bit differently so do not
|
||||
expect the results to be identical to those from the paper; sigma_color values from the paper should be multiplied by 255.0 to
|
||||
achieve the same effect. Also, in case of image filtering where source and guide image are the same, authors
|
||||
propose to dynamically update the guide image after each iteration. To maximize the performance this feature
|
||||
was not implemented here.
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<FastGlobalSmootherFilter> createFastGlobalSmootherFilter(InputArray guide, double lambda, double sigma_color, double lambda_attenuation=0.25, int num_iter=3);
|
||||
|
||||
/** @brief Simple one-line Fast Global Smoother filter call. If you have multiple images to filter with the same
|
||||
guide then use FastGlobalSmootherFilter interface to avoid extra computations.
|
||||
|
||||
@param guide image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels.
|
||||
|
||||
@param src source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels.
|
||||
|
||||
@param dst destination image.
|
||||
|
||||
@param lambda parameter defining the amount of regularization
|
||||
|
||||
@param sigma_color parameter, that is similar to color space sigma in bilateralFilter.
|
||||
|
||||
@param lambda_attenuation internal parameter, defining how much lambda decreases after each iteration. Normally,
|
||||
it should be 0.25. Setting it to 1.0 may lead to streaking artifacts.
|
||||
|
||||
@param num_iter number of iterations used for filtering, 3 is usually enough.
|
||||
*/
|
||||
CV_EXPORTS_W void fastGlobalSmootherFilter(InputArray guide, InputArray src, OutputArray dst, double lambda, double sigma_color, double lambda_attenuation=0.25, int num_iter=3);
|
||||
|
||||
/** @brief Global image smoothing via L0 gradient minimization.
|
||||
|
||||
@param src source image for filtering with unsigned 8-bit or signed 16-bit or floating-point depth.
|
||||
|
||||
@param dst destination image.
|
||||
|
||||
@param lambda parameter defining the smooth term weight.
|
||||
|
||||
@param kappa parameter defining the increasing factor of the weight of the gradient data term.
|
||||
|
||||
For more details about L0 Smoother, see the original paper @cite xu2011image.
|
||||
*/
|
||||
CV_EXPORTS_W void l0Smooth(InputArray src, OutputArray dst, double lambda = 0.02, double kappa = 2.0);
|
||||
//! @}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
201
3rdparty/opencv/inc/opencv2/ximgproc/edgeboxes.hpp
vendored
Normal file
201
3rdparty/opencv/inc/opencv2/ximgproc/edgeboxes.hpp
vendored
Normal file
@@ -0,0 +1,201 @@
|
||||
/*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) 2000-2008, Intel Corporation, all rights reserved.
|
||||
// Copyright (C) 2009-2011, Willow Garage Inc., 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*/
|
||||
|
||||
#ifndef __OPENCV_EDGEBOXES_HPP__
|
||||
#define __OPENCV_EDGEBOXES_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_edgeboxes
|
||||
//! @{
|
||||
|
||||
// bounding box data structures
|
||||
typedef struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
float score;
|
||||
} Box;
|
||||
|
||||
typedef std::vector<Box> Boxes;
|
||||
|
||||
/** @brief Class implementing EdgeBoxes algorithm from @cite ZitnickECCV14edgeBoxes :
|
||||
*/
|
||||
class CV_EXPORTS_W EdgeBoxes : public Algorithm
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/** @brief Returns array containing proposal boxes.
|
||||
|
||||
@param edge_map edge image.
|
||||
@param orientation_map orientation map.
|
||||
@param boxes proposal boxes.
|
||||
@param scores of the proposal boxes, provided a vector of float types.
|
||||
*/
|
||||
CV_WRAP virtual void getBoundingBoxes(InputArray edge_map, InputArray orientation_map, CV_OUT std::vector<Rect> &boxes, OutputArray scores = noArray()) = 0;
|
||||
|
||||
/** @brief Returns the step size of sliding window search.
|
||||
*/
|
||||
CV_WRAP virtual float getAlpha() const = 0;
|
||||
/** @brief Sets the step size of sliding window search.
|
||||
*/
|
||||
CV_WRAP virtual void setAlpha(float value) = 0;
|
||||
|
||||
/** @brief Returns the nms threshold for object proposals.
|
||||
*/
|
||||
CV_WRAP virtual float getBeta() const = 0;
|
||||
/** @brief Sets the nms threshold for object proposals.
|
||||
*/
|
||||
CV_WRAP virtual void setBeta(float value) = 0;
|
||||
|
||||
/** @brief Returns adaptation rate for nms threshold.
|
||||
*/
|
||||
CV_WRAP virtual float getEta() const = 0;
|
||||
/** @brief Sets the adaptation rate for nms threshold.
|
||||
*/
|
||||
CV_WRAP virtual void setEta(float value) = 0;
|
||||
|
||||
/** @brief Returns the min score of boxes to detect.
|
||||
*/
|
||||
CV_WRAP virtual float getMinScore() const = 0;
|
||||
/** @brief Sets the min score of boxes to detect.
|
||||
*/
|
||||
CV_WRAP virtual void setMinScore(float value) = 0;
|
||||
|
||||
/** @brief Returns the max number of boxes to detect.
|
||||
*/
|
||||
CV_WRAP virtual int getMaxBoxes() const = 0;
|
||||
/** @brief Sets max number of boxes to detect.
|
||||
*/
|
||||
CV_WRAP virtual void setMaxBoxes(int value) = 0;
|
||||
|
||||
/** @brief Returns the edge min magnitude.
|
||||
*/
|
||||
CV_WRAP virtual float getEdgeMinMag() const = 0;
|
||||
/** @brief Sets the edge min magnitude.
|
||||
*/
|
||||
CV_WRAP virtual void setEdgeMinMag(float value) = 0;
|
||||
|
||||
/** @brief Returns the edge merge threshold.
|
||||
*/
|
||||
CV_WRAP virtual float getEdgeMergeThr() const = 0;
|
||||
/** @brief Sets the edge merge threshold.
|
||||
*/
|
||||
CV_WRAP virtual void setEdgeMergeThr(float value) = 0;
|
||||
|
||||
/** @brief Returns the cluster min magnitude.
|
||||
*/
|
||||
CV_WRAP virtual float getClusterMinMag() const = 0;
|
||||
/** @brief Sets the cluster min magnitude.
|
||||
*/
|
||||
CV_WRAP virtual void setClusterMinMag(float value) = 0;
|
||||
|
||||
/** @brief Returns the max aspect ratio of boxes.
|
||||
*/
|
||||
CV_WRAP virtual float getMaxAspectRatio() const = 0;
|
||||
/** @brief Sets the max aspect ratio of boxes.
|
||||
*/
|
||||
CV_WRAP virtual void setMaxAspectRatio(float value) = 0;
|
||||
|
||||
/** @brief Returns the minimum area of boxes.
|
||||
*/
|
||||
CV_WRAP virtual float getMinBoxArea() const = 0;
|
||||
/** @brief Sets the minimum area of boxes.
|
||||
*/
|
||||
CV_WRAP virtual void setMinBoxArea(float value) = 0;
|
||||
|
||||
/** @brief Returns the affinity sensitivity.
|
||||
*/
|
||||
CV_WRAP virtual float getGamma() const = 0;
|
||||
/** @brief Sets the affinity sensitivity
|
||||
*/
|
||||
CV_WRAP virtual void setGamma(float value) = 0;
|
||||
|
||||
/** @brief Returns the scale sensitivity.
|
||||
*/
|
||||
CV_WRAP virtual float getKappa() const = 0;
|
||||
/** @brief Sets the scale sensitivity.
|
||||
*/
|
||||
CV_WRAP virtual void setKappa(float value) = 0;
|
||||
|
||||
};
|
||||
|
||||
/** @brief Creates a Edgeboxes
|
||||
|
||||
@param alpha step size of sliding window search.
|
||||
@param beta nms threshold for object proposals.
|
||||
@param eta adaptation rate for nms threshold.
|
||||
@param minScore min score of boxes to detect.
|
||||
@param maxBoxes max number of boxes to detect.
|
||||
@param edgeMinMag edge min magnitude. Increase to trade off accuracy for speed.
|
||||
@param edgeMergeThr edge merge threshold. Increase to trade off accuracy for speed.
|
||||
@param clusterMinMag cluster min magnitude. Increase to trade off accuracy for speed.
|
||||
@param maxAspectRatio max aspect ratio of boxes.
|
||||
@param minBoxArea minimum area of boxes.
|
||||
@param gamma affinity sensitivity.
|
||||
@param kappa scale sensitivity.
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<EdgeBoxes>
|
||||
createEdgeBoxes(float alpha=0.65f,
|
||||
float beta=0.75f,
|
||||
float eta=1,
|
||||
float minScore=0.01f,
|
||||
int maxBoxes=10000,
|
||||
float edgeMinMag=0.1f,
|
||||
float edgeMergeThr=0.5f,
|
||||
float clusterMinMag=0.5f,
|
||||
float maxAspectRatio=3,
|
||||
float minBoxArea=1000,
|
||||
float gamma=2,
|
||||
float kappa=1.5f);
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __OPENCV_EDGEBOXES_HPP__ */
|
||||
33
3rdparty/opencv/inc/opencv2/ximgproc/edgepreserving_filter.hpp
vendored
Normal file
33
3rdparty/opencv/inc/opencv2/ximgproc/edgepreserving_filter.hpp
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_EDGEPRESERVINGFILTER_HPP__
|
||||
#define __OPENCV_EDGEPRESERVINGFILTER_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief Smoothes an image using the Edge-Preserving filter.
|
||||
*
|
||||
* The function smoothes Gaussian noise as well as salt & pepper noise.
|
||||
* For more details about this implementation, please see
|
||||
* [ReiWoe18] Reich, S. and Wörgötter, F. and Dellen, B. (2018). A Real-Time Edge-Preserving Denoising Filter. Proceedings of the 13th International Joint Conference on Computer Vision, Imaging and Computer Graphics Theory and Applications (VISIGRAPP): Visapp, 85-94, 4. DOI: 10.5220/0006509000850094.
|
||||
*
|
||||
* @param src Source 8-bit 3-channel image.
|
||||
* @param dst Destination image of the same size and type as src.
|
||||
* @param d Diameter of each pixel neighborhood that is used during filtering. Must be greater or equal 3.
|
||||
* @param threshold Threshold, which distinguishes between noise, outliers, and data.
|
||||
*/
|
||||
CV_EXPORTS_W void edgePreservingFilter( InputArray src, OutputArray dst, int d, double threshold );
|
||||
|
||||
}} // namespace
|
||||
|
||||
//! @}
|
||||
|
||||
#endif
|
||||
82
3rdparty/opencv/inc/opencv2/ximgproc/estimated_covariance.hpp
vendored
Normal file
82
3rdparty/opencv/inc/opencv2/ximgproc/estimated_covariance.hpp
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
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) 2000-2015, Intel Corporation, all rights reserved.
|
||||
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
|
||||
Copyright (C) 2009-2015, NVIDIA Corporation, all rights reserved.
|
||||
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
|
||||
Copyright (C) 2015, OpenCV Foundation, all rights reserved.
|
||||
Copyright (C) 2015, Itseez Inc., 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.
|
||||
|
||||
Algorithmic details of this algorithm can be found at:
|
||||
* O. Green, Y. Birk, "A Computationally Efficient Algorithm for the 2D Covariance Method", ACM/IEEE International Conference on High Performance Computing, Networking, Storage and Analysis, Denver, Colorado, 2013
|
||||
A previous and less efficient version of the algorithm can be found:
|
||||
* O. Green, L. David, A. Galperin, Y. Birk, "Efficient parallel computation of the estimated covariance matrix", arXiv, 2013
|
||||
|
||||
|
||||
*/
|
||||
#ifndef __OPENCV_ESTIMATECOVARIANCE_HPP__
|
||||
#define __OPENCV_ESTIMATECOVARIANCE_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
/** @brief Computes the estimated covariance matrix of an image using the sliding
|
||||
window forumlation.
|
||||
|
||||
@param src The source image. Input image must be of a complex type.
|
||||
@param dst The destination estimated covariance matrix. Output matrix will be size (windowRows*windowCols, windowRows*windowCols).
|
||||
@param windowRows The number of rows in the window.
|
||||
@param windowCols The number of cols in the window.
|
||||
The window size parameters control the accuracy of the estimation.
|
||||
The sliding window moves over the entire image from the top-left corner
|
||||
to the bottom right corner. Each location of the window represents a sample.
|
||||
If the window is the size of the image, then this gives the exact covariance matrix.
|
||||
For all other cases, the sizes of the window will impact the number of samples
|
||||
and the number of elements in the estimated covariance matrix.
|
||||
*/
|
||||
|
||||
CV_EXPORTS_W void covarianceEstimation(InputArray src, OutputArray dst, int windowRows, int windowCols);
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
164
3rdparty/opencv/inc/opencv2/ximgproc/fast_hough_transform.hpp
vendored
Normal file
164
3rdparty/opencv/inc/opencv2/ximgproc/fast_hough_transform.hpp
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
/*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) 2015, Smart Engines Ltd, all rights reserved.
|
||||
// Copyright (C) 2015, Institute for Information Transmission Problems of the Russian Academy of Sciences (Kharkevich Institute), all rights reserved.
|
||||
// Copyright (C) 2015, Dmitry Nikolaev, Simon Karpenko, Michail Aliev, Elena Kuznetsova, 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*/
|
||||
|
||||
#ifndef __OPENCV_FAST_HOUGH_TRANSFORM_HPP__
|
||||
#define __OPENCV_FAST_HOUGH_TRANSFORM_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include "opencv2/core.hpp"
|
||||
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
|
||||
/**
|
||||
* @brief Specifies the part of Hough space to calculate
|
||||
* @details The enum specifies the part of Hough space to calculate. Each
|
||||
* member specifies primarily direction of lines (horizontal or vertical)
|
||||
* and the direction of angle changes.
|
||||
* Direction of angle changes is from multiples of 90 to odd multiples of 45.
|
||||
* The image considered to be written top-down and left-to-right.
|
||||
* Angles are started from vertical line and go clockwise.
|
||||
* Separate quarters and halves are written in orientation they should be in
|
||||
* full Hough space.
|
||||
*/
|
||||
enum AngleRangeOption
|
||||
{
|
||||
ARO_0_45 = 0, //< Vertical primarily direction and clockwise angle changes
|
||||
ARO_45_90 = 1, //< Horizontal primarily direction and counterclockwise angle changes
|
||||
ARO_90_135 = 2, //< Horizontal primarily direction and clockwise angle changes
|
||||
ARO_315_0 = 3, //< Vertical primarily direction and counterclockwise angle changes
|
||||
ARO_315_45 = 4, //< Vertical primarily direction
|
||||
ARO_45_135 = 5, //< Horizontal primarily direction
|
||||
ARO_315_135 = 6, //< Full set of directions
|
||||
ARO_CTR_HOR = 7, //< 90 +/- atan(0.5), interval approximately from 64.5 to 116.5 degrees.
|
||||
//< It is used for calculating Fast Hough Transform for images skewed by atan(0.5).
|
||||
ARO_CTR_VER = 8 //< +/- atan(0.5), interval approximately from 333.5(-26.5) to 26.5 degrees
|
||||
//< It is used for calculating Fast Hough Transform for images skewed by atan(0.5).
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Specifies binary operations.
|
||||
* @details The enum specifies binary operations, that is such ones which involve
|
||||
* two operands. Formally, a binary operation @f$ f @f$ on a set @f$ S @f$
|
||||
* is a binary relation that maps elements of the Cartesian product
|
||||
* @f$ S \times S @f$ to @f$ S @f$:
|
||||
* @f[ f: S \times S \to S @f]
|
||||
* @ingroup MinUtils_MathOper
|
||||
*/
|
||||
enum HoughOp
|
||||
{
|
||||
FHT_MIN = 0, //< Binary minimum operation. The constant specifies the binary minimum operation
|
||||
//< @f$ f @f$ that is defined as follows: @f[ f(x, y) = \min(x, y) @f]
|
||||
FHT_MAX = 1, //< Binary maximum operation. The constant specifies the binary maximum operation
|
||||
//< @f$ f @f$ that is defined as follows: @f[ f(x, y) = \max(x, y) @f]
|
||||
FHT_ADD = 2, //< Binary addition operation. The constant specifies the binary addition operation
|
||||
//< @f$ f @f$ that is defined as follows: @f[ f(x, y) = x + y @f]
|
||||
FHT_AVE = 3 //< Binary average operation. The constant specifies the binary average operation
|
||||
//< @f$ f @f$ that is defined as follows: @f[ f(x, y) = \frac{x + y}{2} @f]
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Specifies to do or not to do skewing of Hough transform image
|
||||
* @details The enum specifies to do or not to do skewing of Hough transform image
|
||||
* so it would be no cycling in Hough transform image through borders of image.
|
||||
*/
|
||||
enum HoughDeskewOption
|
||||
{
|
||||
HDO_RAW = 0, //< Use raw cyclic image
|
||||
HDO_DESKEW = 1 //< Prepare deskewed image
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Specifies the degree of rules validation.
|
||||
* @details The enum specifies the degree of rules validation. This can be used,
|
||||
* for example, to choose a proper way of input arguments validation.
|
||||
*/
|
||||
typedef enum {
|
||||
RO_STRICT = 0x00, ///< Validate each rule in a proper way.
|
||||
RO_IGNORE_BORDERS = 0x01, ///< Skip validations of image borders.
|
||||
} RulesOption;
|
||||
|
||||
/**
|
||||
* @brief Calculates 2D Fast Hough transform of an image.
|
||||
* @param dst The destination image, result of transformation.
|
||||
* @param src The source (input) image.
|
||||
* @param dstMatDepth The depth of destination image
|
||||
* @param op The operation to be applied, see cv::HoughOp
|
||||
* @param angleRange The part of Hough space to calculate, see cv::AngleRangeOption
|
||||
* @param makeSkew Specifies to do or not to do image skewing, see cv::HoughDeskewOption
|
||||
*
|
||||
* The function calculates the fast Hough transform for full, half or quarter
|
||||
* range of angles.
|
||||
*/
|
||||
CV_EXPORTS_W void FastHoughTransform( InputArray src,
|
||||
OutputArray dst,
|
||||
int dstMatDepth,
|
||||
int angleRange = ARO_315_135,
|
||||
int op = FHT_ADD,
|
||||
int makeSkew = HDO_DESKEW );
|
||||
|
||||
/**
|
||||
* @brief Calculates coordinates of line segment corresponded by point in Hough space.
|
||||
* @param houghPoint Point in Hough space.
|
||||
* @param srcImgInfo The source (input) image of Hough transform.
|
||||
* @param angleRange The part of Hough space where point is situated, see cv::AngleRangeOption
|
||||
* @param makeSkew Specifies to do or not to do image skewing, see cv::HoughDeskewOption
|
||||
* @param rules Specifies strictness of line segment calculating, see cv::RulesOption
|
||||
* @retval [Vec4i] Coordinates of line segment corresponded by point in Hough space.
|
||||
* @remarks If rules parameter set to RO_STRICT
|
||||
then returned line cut along the border of source image.
|
||||
* @remarks If rules parameter set to RO_WEAK then in case of point, which belongs
|
||||
the incorrect part of Hough image, returned line will not intersect source image.
|
||||
*
|
||||
* The function calculates coordinates of line segment corresponded by point in Hough space.
|
||||
*/
|
||||
CV_EXPORTS_W Vec4i HoughPoint2Line(const Point &houghPoint,
|
||||
InputArray srcImgInfo,
|
||||
int angleRange = ARO_315_135,
|
||||
int makeSkew = HDO_DESKEW,
|
||||
int rules = RO_IGNORE_BORDERS );
|
||||
|
||||
} }// namespace cv::ximgproc
|
||||
|
||||
#endif //__cplusplus
|
||||
#endif //__OPENCV_FAST_HOUGH_TRANSFORM_HPP__
|
||||
79
3rdparty/opencv/inc/opencv2/ximgproc/fast_line_detector.hpp
vendored
Normal file
79
3rdparty/opencv/inc/opencv2/ximgproc/fast_line_detector.hpp
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_FAST_LINE_DETECTOR_HPP__
|
||||
#define __OPENCV_FAST_LINE_DETECTOR_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_fast_line_detector
|
||||
//! @{
|
||||
|
||||
/** @brief Class implementing the FLD (Fast Line Detector) algorithm described
|
||||
in @cite Lee14 .
|
||||
*/
|
||||
|
||||
//! @include samples/fld_lines.cpp
|
||||
|
||||
class CV_EXPORTS_W FastLineDetector : public Algorithm
|
||||
{
|
||||
public:
|
||||
/** @example fld_lines.cpp
|
||||
An example using the FastLineDetector
|
||||
*/
|
||||
/** @brief Finds lines in the input image.
|
||||
This is the output of the default parameters of the algorithm on the above
|
||||
shown image.
|
||||
|
||||

|
||||
|
||||
@param image A grayscale (CV_8UC1) input image. If only a roi needs to be
|
||||
selected, use: `fld_ptr-\>detect(image(roi), lines, ...);
|
||||
lines += Scalar(roi.x, roi.y, roi.x, roi.y);`
|
||||
@param lines A vector of Vec4f elements specifying the beginning
|
||||
and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point
|
||||
1 is the start, point 2 - end. Returned lines are directed so that the
|
||||
brighter side is on their left.
|
||||
*/
|
||||
CV_WRAP virtual void detect(InputArray image, OutputArray lines) = 0;
|
||||
|
||||
/** @brief Draws the line segments on a given image.
|
||||
@param image The image, where the lines will be drawn. Should be bigger
|
||||
or equal to the image, where the lines were found.
|
||||
@param lines A vector of the lines that needed to be drawn.
|
||||
@param draw_arrow If true, arrow heads will be drawn.
|
||||
@param linecolor Line color.
|
||||
@param linethickness Line thickness.
|
||||
*/
|
||||
CV_WRAP virtual void drawSegments(InputOutputArray image, InputArray lines,
|
||||
bool draw_arrow = false, Scalar linecolor = Scalar(0, 0, 255), int linethickness = 1) = 0;
|
||||
|
||||
virtual ~FastLineDetector() { }
|
||||
};
|
||||
|
||||
/** @brief Creates a smart pointer to a FastLineDetector object and initializes it
|
||||
|
||||
@param length_threshold Segment shorter than this will be discarded
|
||||
@param distance_threshold A point placed from a hypothesis line
|
||||
segment farther than this will be regarded as an outlier
|
||||
@param canny_th1 First threshold for hysteresis procedure in Canny()
|
||||
@param canny_th2 Second threshold for hysteresis procedure in Canny()
|
||||
@param canny_aperture_size Aperturesize for the sobel operator in Canny().
|
||||
If zero, Canny() is not applied and the input image is taken as an edge image.
|
||||
@param do_merge If true, incremental merging of segments will be performed
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<FastLineDetector> createFastLineDetector(
|
||||
int length_threshold = 10, float distance_threshold = 1.414213562f,
|
||||
double canny_th1 = 50.0, double canny_th2 = 50.0, int canny_aperture_size = 3,
|
||||
bool do_merge = false);
|
||||
|
||||
//! @} ximgproc_fast_line_detector
|
||||
}
|
||||
}
|
||||
#endif
|
||||
119
3rdparty/opencv/inc/opencv2/ximgproc/fourier_descriptors.hpp
vendored
Normal file
119
3rdparty/opencv/inc/opencv2/ximgproc/fourier_descriptors.hpp
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_FOURIERDESCRIPTORS_HPP__
|
||||
#define __OPENCV_FOURIERDESCRIPTORS_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_fourier
|
||||
//! @{
|
||||
|
||||
/** @brief Class for ContourFitting algorithms.
|
||||
ContourFitting match two contours \f$ z_a \f$ and \f$ z_b \f$ minimizing distance
|
||||
\f[ d(z_a,z_b)=\sum (a_n - s b_n e^{j(n \alpha +\phi )})^2 \f] where \f$ a_n \f$ and \f$ b_n \f$ are Fourier descriptors of \f$ z_a \f$ and \f$ z_b \f$ and s is a scaling factor and \f$ \phi \f$ is angle rotation and \f$ \alpha \f$ is starting point factor adjustement
|
||||
*/
|
||||
class CV_EXPORTS_W ContourFitting : public Algorithm
|
||||
{
|
||||
int ctrSize;
|
||||
int fdSize;
|
||||
std::vector<std::complex<double> > b;
|
||||
std::vector<std::complex<double> > a;
|
||||
std::vector<double> frequence;
|
||||
std::vector<double> rho, psi;
|
||||
void frequencyInit();
|
||||
void fAlpha(double x, double &fn, double &df);
|
||||
double distance(std::complex<double> r, double alpha);
|
||||
double newtonRaphson(double x1, double x2);
|
||||
public:
|
||||
/** @brief Fit two closed curves using fourier descriptors. More details in @cite PersoonFu1977 and @cite BergerRaghunathan1998
|
||||
|
||||
* @param ctr number of Fourier descriptors equal to number of contour points after resampling.
|
||||
* @param fd Contour defining second shape (Target).
|
||||
*/
|
||||
ContourFitting(int ctr=1024,int fd=16):ctrSize(ctr),fdSize(fd){};
|
||||
/** @brief Fit two closed curves using fourier descriptors. More details in @cite PersoonFu1977 and @cite BergerRaghunathan1998
|
||||
|
||||
@param src Contour defining first shape.
|
||||
@param dst Contour defining second shape (Target).
|
||||
@param alphaPhiST : \f$ \alpha \f$=alphaPhiST(0,0), \f$ \phi \f$=alphaPhiST(0,1) (in radian), s=alphaPhiST(0,2), Tx=alphaPhiST(0,3), Ty=alphaPhiST(0,4) rotation center
|
||||
@param dist distance between src and dst after matching.
|
||||
@param fdContour false then src and dst are contours and true src and dst are fourier descriptors.
|
||||
*/
|
||||
void estimateTransformation(InputArray src, InputArray dst, OutputArray alphaPhiST, double *dist = 0, bool fdContour = false);
|
||||
/** @brief Fit two closed curves using fourier descriptors. More details in @cite PersoonFu1977 and @cite BergerRaghunathan1998
|
||||
|
||||
@param src Contour defining first shape.
|
||||
@param dst Contour defining second shape (Target).
|
||||
@param alphaPhiST : \f$ \alpha \f$=alphaPhiST(0,0), \f$ \phi \f$=alphaPhiST(0,1) (in radian), s=alphaPhiST(0,2), Tx=alphaPhiST(0,3), Ty=alphaPhiST(0,4) rotation center
|
||||
@param dist distance between src and dst after matching.
|
||||
@param fdContour false then src and dst are contours and true src and dst are fourier descriptors.
|
||||
*/
|
||||
CV_WRAP void estimateTransformation(InputArray src, InputArray dst, OutputArray alphaPhiST, CV_OUT double &dist , bool fdContour = false);
|
||||
/** @brief set number of Fourier descriptors used in estimateTransformation
|
||||
|
||||
@param n number of Fourier descriptors equal to number of contour points after resampling.
|
||||
*/
|
||||
CV_WRAP void setCtrSize(int n);
|
||||
/** @brief set number of Fourier descriptors when estimateTransformation used vector<Point>
|
||||
|
||||
@param n number of fourier descriptors used for optimal curve matching.
|
||||
*/
|
||||
CV_WRAP void setFDSize(int n);
|
||||
/**
|
||||
@returns number of fourier descriptors
|
||||
*/
|
||||
CV_WRAP int getCtrSize() { return ctrSize; };
|
||||
/**
|
||||
@returns number of fourier descriptors used for optimal curve matching
|
||||
*/
|
||||
CV_WRAP int getFDSize() { return fdSize; };
|
||||
};
|
||||
/**
|
||||
* @brief Fourier descriptors for planed closed curves
|
||||
*
|
||||
* For more details about this implementation, please see @cite PersoonFu1977
|
||||
*
|
||||
* @param src contour type vector<Point> , vector<Point2f> or vector<Point2d>
|
||||
* @param dst Mat of type CV_64FC2 and nbElt rows A VERIFIER
|
||||
* @param nbElt number of rows in dst or getOptimalDFTSize rows if nbElt=-1
|
||||
* @param nbFD number of FD return in dst dst = [FD(1...nbFD/2) FD(nbFD/2-nbElt+1...:nbElt)]
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void fourierDescriptor(InputArray src, OutputArray dst, int nbElt=-1,int nbFD=-1);
|
||||
/**
|
||||
* @brief transform a contour
|
||||
*
|
||||
* @param src contour or Fourier Descriptors if fd is true
|
||||
* @param t transform Mat given by estimateTransformation
|
||||
* @param dst Mat of type CV_64FC2 and nbElt rows
|
||||
* @param fdContour true src are Fourier Descriptors. fdContour false src is a contour
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void transformFD(InputArray src, InputArray t,OutputArray dst, bool fdContour=true);
|
||||
/**
|
||||
* @brief Contour sampling .
|
||||
*
|
||||
* @param src contour type vector<Point> , vector<Point2f> or vector<Point2d>
|
||||
* @param out Mat of type CV_64FC2 and nbElt rows
|
||||
* @param nbElt number of points in out contour
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void contourSampling(InputArray src, OutputArray out, int nbElt);
|
||||
|
||||
/**
|
||||
* @brief create ContourFitting algorithm object
|
||||
*
|
||||
* @param ctr number of Fourier descriptors equal to number of contour points after resampling.
|
||||
* @param fd Contour defining second shape (Target).
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<ContourFitting> createContourFitting(int ctr = 1024, int fd = 16);
|
||||
|
||||
//! @} ximgproc_fourier
|
||||
}
|
||||
}
|
||||
#endif
|
||||
157
3rdparty/opencv/inc/opencv2/ximgproc/lsc.hpp
vendored
Normal file
157
3rdparty/opencv/inc/opencv2/ximgproc/lsc.hpp
vendored
Normal file
@@ -0,0 +1,157 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (BSD License)
|
||||
*
|
||||
* Copyright (c) 2014, 2015
|
||||
* Zhengqin Li <li-zq12 at mails dot tsinghua dot edu dot cn>
|
||||
* Jiansheng Chen <jschenthu at mail dot tsinghua dot edu dot cn>
|
||||
* Tsinghua University
|
||||
*
|
||||
* 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 name of the copyright holders nor the names of its
|
||||
* 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 THE
|
||||
* COPYRIGHT OWNER 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.
|
||||
*********************************************************************/
|
||||
|
||||
/*
|
||||
|
||||
"Superpixel Segmentation using Linear Spectral Clustering"
|
||||
Zhengqin Li, Jiansheng Chen, IEEE Conference on Computer Vision and Pattern
|
||||
Recognition (CVPR), Jun. 2015
|
||||
|
||||
OpenCV port by: Cristian Balint <cristian dot balint at gmail dot com>
|
||||
*/
|
||||
|
||||
#ifndef __OPENCV_LSC_HPP__
|
||||
#define __OPENCV_LSC_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_superpixel
|
||||
//! @{
|
||||
|
||||
/** @brief Class implementing the LSC (Linear Spectral Clustering) superpixels
|
||||
algorithm described in @cite LiCVPR2015LSC.
|
||||
|
||||
LSC (Linear Spectral Clustering) produces compact and uniform superpixels with low
|
||||
computational costs. Basically, a normalized cuts formulation of the superpixel
|
||||
segmentation is adopted based on a similarity metric that measures the color
|
||||
similarity and space proximity between image pixels. LSC is of linear computational
|
||||
complexity and high memory efficiency and is able to preserve global properties of images
|
||||
|
||||
*/
|
||||
|
||||
class CV_EXPORTS_W SuperpixelLSC : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Calculates the actual amount of superpixels on a given segmentation computed
|
||||
and stored in SuperpixelLSC object.
|
||||
*/
|
||||
CV_WRAP virtual int getNumberOfSuperpixels() const = 0;
|
||||
|
||||
/** @brief Calculates the superpixel segmentation on a given image with the initialized
|
||||
parameters in the SuperpixelLSC object.
|
||||
|
||||
This function can be called again without the need of initializing the algorithm with
|
||||
createSuperpixelLSC(). This save the computational cost of allocating memory for all the
|
||||
structures of the algorithm.
|
||||
|
||||
@param num_iterations Number of iterations. Higher number improves the result.
|
||||
|
||||
The function computes the superpixels segmentation of an image with the parameters initialized
|
||||
with the function createSuperpixelLSC(). The algorithms starts from a grid of superpixels and
|
||||
then refines the boundaries by proposing updates of edges boundaries.
|
||||
|
||||
*/
|
||||
CV_WRAP virtual void iterate( int num_iterations = 10 ) = 0;
|
||||
|
||||
/** @brief Returns the segmentation labeling of the image.
|
||||
|
||||
Each label represents a superpixel, and each pixel is assigned to one superpixel label.
|
||||
|
||||
@param labels_out Return: A CV_32SC1 integer array containing the labels of the superpixel
|
||||
segmentation. The labels are in the range [0, getNumberOfSuperpixels()].
|
||||
|
||||
The function returns an image with the labels of the superpixel segmentation. The labels are in
|
||||
the range [0, getNumberOfSuperpixels()].
|
||||
*/
|
||||
CV_WRAP virtual void getLabels( OutputArray labels_out ) const = 0;
|
||||
|
||||
/** @brief Returns the mask of the superpixel segmentation stored in SuperpixelLSC object.
|
||||
|
||||
@param image Return: CV_8U1 image mask where -1 indicates that the pixel is a superpixel border,
|
||||
and 0 otherwise.
|
||||
|
||||
@param thick_line If false, the border is only one pixel wide, otherwise all pixels at the border
|
||||
are masked.
|
||||
|
||||
The function return the boundaries of the superpixel segmentation.
|
||||
*/
|
||||
CV_WRAP virtual void getLabelContourMask( OutputArray image, bool thick_line = true ) const = 0;
|
||||
|
||||
/** @brief Enforce label connectivity.
|
||||
|
||||
@param min_element_size The minimum element size in percents that should be absorbed into a bigger
|
||||
superpixel. Given resulted average superpixel size valid value should be in 0-100 range, 25 means
|
||||
that less then a quarter sized superpixel should be absorbed, this is default.
|
||||
|
||||
The function merge component that is too small, assigning the previously found adjacent label
|
||||
to this component. Calling this function may change the final number of superpixels.
|
||||
*/
|
||||
CV_WRAP virtual void enforceLabelConnectivity( int min_element_size = 25 ) = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/** @brief Class implementing the LSC (Linear Spectral Clustering) superpixels
|
||||
|
||||
@param image Image to segment
|
||||
@param region_size Chooses an average superpixel size measured in pixels
|
||||
@param ratio Chooses the enforcement of superpixel compactness factor of superpixel
|
||||
|
||||
The function initializes a SuperpixelLSC object for the input image. It sets the parameters of
|
||||
superpixel algorithm, which are: region_size and ruler. It preallocate some buffers for future
|
||||
computing iterations over the given image. An example of LSC is ilustrated in the following picture.
|
||||
For enanched results it is recommended for color images to preprocess image with little gaussian blur
|
||||
with a small 3 x 3 kernel and additional conversion into CieLAB color space.
|
||||
|
||||

|
||||
|
||||
*/
|
||||
|
||||
CV_EXPORTS_W Ptr<SuperpixelLSC> createSuperpixelLSC( InputArray image, int region_size = 10, float ratio = 0.075f );
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
67
3rdparty/opencv/inc/opencv2/ximgproc/paillou_filter.hpp
vendored
Normal file
67
3rdparty/opencv/inc/opencv2/ximgproc/paillou_filter.hpp
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* 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_PAILLOUFILTER_HPP__
|
||||
#define __OPENCV_PAILLOUFILTER_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief Applies Paillou filter to an image.
|
||||
*
|
||||
* For more details about this implementation, please see @cite paillou1997detecting
|
||||
*
|
||||
* @param op Source CV_8U(S) or CV_16U(S), 1-channel or 3-channels image.
|
||||
* @param _dst result CV_32F image with same number of channel than op.
|
||||
* @param omega double see paper
|
||||
* @param alpha double see paper
|
||||
*
|
||||
* @sa GradientPaillouX, GradientPaillouY
|
||||
*/
|
||||
CV_EXPORTS void GradientPaillouY(InputArray op, OutputArray _dst, double alpha, double omega);
|
||||
CV_EXPORTS void GradientPaillouX(InputArray op, OutputArray _dst, double alpha, double omega);
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
32
3rdparty/opencv/inc/opencv2/ximgproc/peilin.hpp
vendored
Normal file
32
3rdparty/opencv/inc/opencv2/ximgproc/peilin.hpp
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_PEILIN_HPP__
|
||||
#define __OPENCV_PEILIN_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief Calculates an affine transformation that normalize given image using Pei&Lin Normalization.
|
||||
*
|
||||
* Assume given image \f$I=T(\bar{I})\f$ where \f$\bar{I}\f$ is a normalized image and \f$T\f$ is an affine transformation distorting this image by translation, rotation, scaling and skew.
|
||||
* The function returns an affine transformation matrix corresponding to the transformation \f$T^{-1}\f$ described in [PeiLin95].
|
||||
* For more details about this implementation, please see
|
||||
* [PeiLin95] Soo-Chang Pei and Chao-Nan Lin. Image normalization for pattern recognition. Image and Vision Computing, Vol. 13, N.10, pp. 711-723, 1995.
|
||||
*
|
||||
* @param I Given transformed image.
|
||||
* @return Transformation matrix corresponding to inversed image transformation
|
||||
*/
|
||||
CV_EXPORTS Matx23d PeiLinNormalization ( InputArray I );
|
||||
/** @overload */
|
||||
CV_EXPORTS_W void PeiLinNormalization ( InputArray I, OutputArray T );
|
||||
|
||||
}} // namespace
|
||||
|
||||
#endif
|
||||
40
3rdparty/opencv/inc/opencv2/ximgproc/radon_transform.hpp
vendored
Normal file
40
3rdparty/opencv/inc/opencv2/ximgproc/radon_transform.hpp
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_RADON_TRANSFORM_HPP__
|
||||
#define __OPENCV_RADON_TRANSFORM_HPP__
|
||||
|
||||
#include "opencv2/core.hpp"
|
||||
#include "opencv2/imgproc.hpp"
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
/**
|
||||
* @brief Calculate Radon Transform of an image.
|
||||
* @param src The source (input) image.
|
||||
* @param dst The destination image, result of transformation.
|
||||
* @param theta Angle resolution of the transform in degrees.
|
||||
* @param start_angle Start angle of the transform in degrees.
|
||||
* @param end_angle End angle of the transform in degrees.
|
||||
* @param crop Crop the source image into a circle.
|
||||
* @param norm Normalize the output Mat to grayscale and convert type to CV_8U
|
||||
*
|
||||
* This function calculates the Radon Transform of a given image in any range.
|
||||
* See https://engineering.purdue.edu/~malcolm/pct/CTI_Ch03.pdf for detail.
|
||||
* If the input type is CV_8U, the output will be CV_32S.
|
||||
* If the input type is CV_32F or CV_64F, the output will be CV_64F
|
||||
* The output size will be num_of_integral x src_diagonal_length.
|
||||
* If crop is selected, the input image will be crop into square then circle,
|
||||
* and output size will be num_of_integral x min_edge.
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS_W void RadonTransform(InputArray src,
|
||||
OutputArray dst,
|
||||
double theta = 1,
|
||||
double start_angle = 0,
|
||||
double end_angle = 180,
|
||||
bool crop = false,
|
||||
bool norm = false);
|
||||
} }
|
||||
|
||||
#endif
|
||||
53
3rdparty/opencv/inc/opencv2/ximgproc/ridgefilter.hpp
vendored
Normal file
53
3rdparty/opencv/inc/opencv2/ximgproc/ridgefilter.hpp
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
/*
|
||||
Ridge Detection Filter.
|
||||
OpenCV port by : Kushal Vyas (@kushalvyas), Venkatesh Vijaykumar(@venkateshvijaykumar)
|
||||
Adapted from Niki Estner's explanation of RidgeFilter.
|
||||
*/
|
||||
|
||||
#ifndef __OPENCV_XIMGPROC_RIDGEFILTER_HPP__
|
||||
#define __OPENCV_XIMGPROC_RIDGEFILTER_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/** @brief Applies Ridge Detection Filter to an input image.
|
||||
Implements Ridge detection similar to the one in [Mathematica](http://reference.wolfram.com/language/ref/RidgeFilter.html)
|
||||
using the eigen values from the Hessian Matrix of the input image using Sobel Derivatives.
|
||||
Additional refinement can be done using Skeletonization and Binarization. Adapted from @cite segleafvein and @cite M_RF
|
||||
|
||||
*/
|
||||
class CV_EXPORTS_W RidgeDetectionFilter : public Algorithm
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@brief Create pointer to the Ridge detection filter.
|
||||
@param ddepth Specifies output image depth. Defualt is CV_32FC1
|
||||
@param dx Order of derivative x, default is 1
|
||||
@param dy Order of derivative y, default is 1
|
||||
@param ksize Sobel kernel size , default is 3
|
||||
@param out_dtype Converted format for output, default is CV_8UC1
|
||||
@param scale Optional scale value for derivative values, default is 1
|
||||
@param delta Optional bias added to output, default is 0
|
||||
@param borderType Pixel extrapolation method, default is BORDER_DEFAULT
|
||||
@see Sobel, threshold, getStructuringElement, morphologyEx.( for additional refinement)
|
||||
*/
|
||||
CV_WRAP static Ptr<RidgeDetectionFilter> create(int ddepth = CV_32FC1, int dx=1, int dy=1, int ksize = 3, int out_dtype=CV_8UC1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT);
|
||||
/**
|
||||
@brief Apply Ridge detection filter on input image.
|
||||
@param _img InputArray as supported by Sobel. img can be 1-Channel or 3-Channels.
|
||||
@param out OutputAray of structure as RidgeDetectionFilter::ddepth. Output image with ridges.
|
||||
*/
|
||||
CV_WRAP virtual void getRidgeFilteredImage(InputArray _img, OutputArray out) = 0;
|
||||
};
|
||||
|
||||
//! @}
|
||||
}} // namespace
|
||||
#endif
|
||||
119
3rdparty/opencv/inc/opencv2/ximgproc/run_length_morphology.hpp
vendored
Normal file
119
3rdparty/opencv/inc/opencv2/ximgproc/run_length_morphology.hpp
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
|
||||
#ifndef __OPENCV_RUN_LENGTH_MORPHOLOGY_HPP__
|
||||
#define __OPENCV_RUN_LENGTH_MORPHOLOGY_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
namespace rl {
|
||||
|
||||
|
||||
//! @addtogroup ximgproc_run_length_morphology
|
||||
//! @{
|
||||
|
||||
/**
|
||||
* @brief Applies a fixed-level threshold to each array element.
|
||||
*
|
||||
*
|
||||
* @param src input array (single-channel).
|
||||
* @param rlDest resulting run length encoded image.
|
||||
* @param thresh threshold value.
|
||||
* @param type thresholding type (only cv::THRESH_BINARY and cv::THRESH_BINARY_INV are supported)
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS void threshold(InputArray src, OutputArray rlDest, double thresh, int type);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Dilates an run-length encoded binary image by using a specific structuring element.
|
||||
*
|
||||
*
|
||||
* @param rlSrc input image
|
||||
* @param rlDest result
|
||||
* @param rlKernel kernel
|
||||
* @param anchor position of the anchor within the element; default value (0, 0)
|
||||
* is usually the element center.
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS void dilate(InputArray rlSrc, OutputArray rlDest, InputArray rlKernel, Point anchor = Point(0, 0));
|
||||
|
||||
/**
|
||||
* @brief Erodes an run-length encoded binary image by using a specific structuring element.
|
||||
*
|
||||
*
|
||||
* @param rlSrc input image
|
||||
* @param rlDest result
|
||||
* @param rlKernel kernel
|
||||
* @param bBoundaryOn indicates whether pixel outside the image boundary are assumed to be on
|
||||
(True: works in the same way as the default of cv::erode, False: is a little faster)
|
||||
* @param anchor position of the anchor within the element; default value (0, 0)
|
||||
* is usually the element center.
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS void erode(InputArray rlSrc, OutputArray rlDest, InputArray rlKernel,
|
||||
bool bBoundaryOn = true, Point anchor = Point(0, 0));
|
||||
|
||||
/**
|
||||
* @brief Returns a run length encoded structuring element of the specified size and shape.
|
||||
*
|
||||
*
|
||||
* @param shape Element shape that can be one of cv::MorphShapes
|
||||
* @param ksize Size of the structuring element.
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS cv::Mat getStructuringElement(int shape, Size ksize);
|
||||
|
||||
/**
|
||||
* @brief Paint run length encoded binary image into an image.
|
||||
*
|
||||
*
|
||||
* @param image image to paint into (currently only single channel images).
|
||||
* @param rlSrc run length encoded image
|
||||
* @param value all foreground pixel of the binary image are set to this value
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS void paint(InputOutputArray image, InputArray rlSrc, const cv::Scalar& value);
|
||||
|
||||
/**
|
||||
* @brief Check whether a custom made structuring element can be used with run length morphological operations.
|
||||
* (It must consist of a continuous array of single runs per row)
|
||||
*
|
||||
* @param rlStructuringElement mask to be tested
|
||||
*/
|
||||
CV_EXPORTS bool isRLMorphologyPossible(InputArray rlStructuringElement);
|
||||
|
||||
/**
|
||||
* @brief Creates a run-length encoded image from a vector of runs (column begin, column end, row)
|
||||
*
|
||||
* @param runs vector of runs
|
||||
* @param res result
|
||||
* @param size image size (to be used if an "on" boundary should be used in erosion, using the default
|
||||
* means that the size is computed from the extension of the input)
|
||||
*/
|
||||
CV_EXPORTS void createRLEImage(const std::vector<cv::Point3i>& runs, OutputArray res, Size size = Size(0, 0));
|
||||
|
||||
/**
|
||||
* @brief Applies a morphological operation to a run-length encoded binary image.
|
||||
*
|
||||
*
|
||||
* @param rlSrc input image
|
||||
* @param rlDest result
|
||||
* @param op all operations supported by cv::morphologyEx (except cv::MORPH_HITMISS)
|
||||
* @param rlKernel kernel
|
||||
* @param bBoundaryOnForErosion indicates whether pixel outside the image boundary are assumed
|
||||
* to be on for erosion operations (True: works in the same way as the default of cv::erode,
|
||||
* False: is a little faster)
|
||||
* @param anchor position of the anchor within the element; default value (0, 0) is usually the element center.
|
||||
*
|
||||
*/
|
||||
CV_EXPORTS void morphologyEx(InputArray rlSrc, OutputArray rlDest, int op, InputArray rlKernel,
|
||||
bool bBoundaryOnForErosion = true, Point anchor = Point(0,0));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
83
3rdparty/opencv/inc/opencv2/ximgproc/scansegment.hpp
vendored
Normal file
83
3rdparty/opencv/inc/opencv2/ximgproc/scansegment.hpp
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
// This file is part of OpenCV project.
|
||||
// It is subject to the license terms in the LICENSE file found in the top-level directory
|
||||
// of this distribution and at http://opencv.org/license.html.
|
||||
//
|
||||
// Copyright (C) 2021, Dr Seng Cheong Loke (lokesengcheong@gmail.com)
|
||||
|
||||
#ifndef __OPENCV_XIMGPROC_SCANSEGMENT_HPP__
|
||||
#define __OPENCV_XIMGPROC_SCANSEGMENT_HPP__
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv { namespace ximgproc {
|
||||
|
||||
/** @brief Class implementing the F-DBSCAN (Accelerated superpixel image segmentation with a parallelized DBSCAN algorithm) superpixels
|
||||
algorithm by Loke SC, et al. @cite loke2021accelerated for original paper.
|
||||
|
||||
The algorithm uses a parallelised DBSCAN cluster search that is resistant to noise, competitive in segmentation quality, and faster than
|
||||
existing superpixel segmentation methods. When tested on the Berkeley Segmentation Dataset, the average processing speed is 175 frames/s
|
||||
with a Boundary Recall of 0.797 and an Achievable Segmentation Accuracy of 0.944. The computational complexity is quadratic O(n2) and
|
||||
more suited to smaller images, but can still process a 2MP colour image faster than the SEEDS algorithm in OpenCV. The output is deterministic
|
||||
when the number of processing threads is fixed, and requires the source image to be in Lab colour format.
|
||||
*/
|
||||
class CV_EXPORTS_W ScanSegment : public Algorithm
|
||||
{
|
||||
public:
|
||||
virtual ~ScanSegment();
|
||||
|
||||
/** @brief Returns the actual superpixel segmentation from the last image processed using iterate.
|
||||
|
||||
Returns zero if no image has been processed.
|
||||
*/
|
||||
CV_WRAP virtual int getNumberOfSuperpixels() = 0;
|
||||
|
||||
/** @brief Calculates the superpixel segmentation on a given image with the initialized
|
||||
parameters in the ScanSegment object.
|
||||
|
||||
This function can be called again for other images without the need of initializing the algorithm with createScanSegment().
|
||||
This save the computational cost of allocating memory for all the structures of the algorithm.
|
||||
|
||||
@param img Input image. Supported format: CV_8UC3. Image size must match with the initialized
|
||||
image size with the function createScanSegment(). It MUST be in Lab color space.
|
||||
*/
|
||||
CV_WRAP virtual void iterate(InputArray img) = 0;
|
||||
|
||||
/** @brief Returns the segmentation labeling of the image.
|
||||
|
||||
Each label represents a superpixel, and each pixel is assigned to one superpixel label.
|
||||
|
||||
@param labels_out Return: A CV_32UC1 integer array containing the labels of the superpixel
|
||||
segmentation. The labels are in the range [0, getNumberOfSuperpixels()].
|
||||
*/
|
||||
CV_WRAP virtual void getLabels(OutputArray labels_out) = 0;
|
||||
|
||||
/** @brief Returns the mask of the superpixel segmentation stored in the ScanSegment object.
|
||||
|
||||
The function return the boundaries of the superpixel segmentation.
|
||||
|
||||
@param image Return: CV_8UC1 image mask where -1 indicates that the pixel is a superpixel border, and 0 otherwise.
|
||||
@param thick_line If false, the border is only one pixel wide, otherwise all pixels at the border are masked.
|
||||
*/
|
||||
CV_WRAP virtual void getLabelContourMask(OutputArray image, bool thick_line = false) = 0;
|
||||
};
|
||||
|
||||
/** @brief Initializes a ScanSegment object.
|
||||
|
||||
The function initializes a ScanSegment object for the input image. It stores the parameters of
|
||||
the image: image_width and image_height. It also sets the parameters of the F-DBSCAN superpixel
|
||||
algorithm, which are: num_superpixels, threads, and merge_small.
|
||||
|
||||
@param image_width Image width.
|
||||
@param image_height Image height.
|
||||
@param num_superpixels Desired number of superpixels. Note that the actual number may be smaller
|
||||
due to restrictions (depending on the image size). Use getNumberOfSuperpixels() to
|
||||
get the actual number.
|
||||
@param slices Number of processing threads for parallelisation. Setting -1 uses the maximum number
|
||||
of threads. In practice, four threads is enough for smaller images and eight threads for larger ones.
|
||||
@param merge_small merge small segments to give the desired number of superpixels. Processing is
|
||||
much faster without merging, but many small segments will be left in the image.
|
||||
*/
|
||||
CV_EXPORTS_W cv::Ptr<ScanSegment> createScanSegment(int image_width, int image_height, int num_superpixels, int slices = 8, bool merge_small = true);
|
||||
|
||||
}} // namespace
|
||||
#endif
|
||||
183
3rdparty/opencv/inc/opencv2/ximgproc/seeds.hpp
vendored
Normal file
183
3rdparty/opencv/inc/opencv2/ximgproc/seeds.hpp
vendored
Normal file
@@ -0,0 +1,183 @@
|
||||
/*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) 2014, Beat Kueng (beat-kueng@gmx.net), Lukas Vogel, Morten Lysgaard
|
||||
// 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*/
|
||||
|
||||
#ifndef __OPENCV_SEEDS_HPP__
|
||||
#define __OPENCV_SEEDS_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_superpixel
|
||||
//! @{
|
||||
|
||||
/** @brief Class implementing the SEEDS (Superpixels Extracted via Energy-Driven Sampling) superpixels
|
||||
algorithm described in @cite VBRV14 .
|
||||
|
||||
The algorithm uses an efficient hill-climbing algorithm to optimize the superpixels' energy
|
||||
function that is based on color histograms and a boundary term, which is optional. The energy
|
||||
function encourages superpixels to be of the same color, and if the boundary term is activated, the
|
||||
superpixels have smooth boundaries and are of similar shape. In practice it starts from a regular
|
||||
grid of superpixels and moves the pixels or blocks of pixels at the boundaries to refine the
|
||||
solution. The algorithm runs in real-time using a single CPU.
|
||||
*/
|
||||
class CV_EXPORTS_W SuperpixelSEEDS : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Calculates the superpixel segmentation on a given image stored in SuperpixelSEEDS object.
|
||||
|
||||
The function computes the superpixels segmentation of an image with the parameters initialized
|
||||
with the function createSuperpixelSEEDS().
|
||||
*/
|
||||
CV_WRAP virtual int getNumberOfSuperpixels() = 0;
|
||||
|
||||
/** @brief Calculates the superpixel segmentation on a given image with the initialized
|
||||
parameters in the SuperpixelSEEDS object.
|
||||
|
||||
This function can be called again for other images without the need of initializing the
|
||||
algorithm with createSuperpixelSEEDS(). This save the computational cost of allocating memory
|
||||
for all the structures of the algorithm.
|
||||
|
||||
@param img Input image. Supported formats: CV_8U, CV_16U, CV_32F. Image size & number of
|
||||
channels must match with the initialized image size & channels with the function
|
||||
createSuperpixelSEEDS(). It should be in HSV or Lab color space. Lab is a bit better, but also
|
||||
slower.
|
||||
|
||||
@param num_iterations Number of pixel level iterations. Higher number improves the result.
|
||||
|
||||
The function computes the superpixels segmentation of an image with the parameters initialized
|
||||
with the function createSuperpixelSEEDS(). The algorithms starts from a grid of superpixels and
|
||||
then refines the boundaries by proposing updates of blocks of pixels that lie at the boundaries
|
||||
from large to smaller size, finalizing with proposing pixel updates. An illustrative example
|
||||
can be seen below.
|
||||
|
||||

|
||||
*/
|
||||
CV_WRAP virtual void iterate(InputArray img, int num_iterations=4) = 0;
|
||||
|
||||
/** @brief Returns the segmentation labeling of the image.
|
||||
|
||||
Each label represents a superpixel, and each pixel is assigned to one superpixel label.
|
||||
|
||||
@param labels_out Return: A CV_32UC1 integer array containing the labels of the superpixel
|
||||
segmentation. The labels are in the range [0, getNumberOfSuperpixels()].
|
||||
|
||||
The function returns an image with ssthe labels of the superpixel segmentation. The labels are in
|
||||
the range [0, getNumberOfSuperpixels()].
|
||||
*/
|
||||
CV_WRAP virtual void getLabels(OutputArray labels_out) = 0;
|
||||
|
||||
/** @brief Returns the mask of the superpixel segmentation stored in SuperpixelSEEDS object.
|
||||
|
||||
@param image Return: CV_8UC1 image mask where -1 indicates that the pixel is a superpixel border,
|
||||
and 0 otherwise.
|
||||
|
||||
@param thick_line If false, the border is only one pixel wide, otherwise all pixels at the border
|
||||
are masked.
|
||||
|
||||
The function return the boundaries of the superpixel segmentation.
|
||||
|
||||
@note
|
||||
- (Python) A demo on how to generate superpixels in images from the webcam can be found at
|
||||
opencv_source_code/samples/python2/seeds.py
|
||||
- (cpp) A demo on how to generate superpixels in images from the webcam can be found at
|
||||
opencv_source_code/modules/ximgproc/samples/seeds.cpp. By adding a file image as a command
|
||||
line argument, the static image will be used instead of the webcam.
|
||||
- It will show a window with the video from the webcam with the superpixel boundaries marked
|
||||
in red (see below). Use Space to switch between different output modes. At the top of the
|
||||
window there are 4 sliders, from which the user can change on-the-fly the number of
|
||||
superpixels, the number of block levels, the strength of the boundary prior term to modify
|
||||
the shape, and the number of iterations at pixel level. This is useful to play with the
|
||||
parameters and set them to the user convenience. In the console the frame-rate of the
|
||||
algorithm is indicated.
|
||||
|
||||

|
||||
*/
|
||||
CV_WRAP virtual void getLabelContourMask(OutputArray image, bool thick_line = false) = 0;
|
||||
|
||||
virtual ~SuperpixelSEEDS() {}
|
||||
};
|
||||
|
||||
/** @brief Initializes a SuperpixelSEEDS object.
|
||||
|
||||
@param image_width Image width.
|
||||
@param image_height Image height.
|
||||
@param image_channels Number of channels of the image.
|
||||
@param num_superpixels Desired number of superpixels. Note that the actual number may be smaller
|
||||
due to restrictions (depending on the image size and num_levels). Use getNumberOfSuperpixels() to
|
||||
get the actual number.
|
||||
@param num_levels Number of block levels. The more levels, the more accurate is the segmentation,
|
||||
but needs more memory and CPU time.
|
||||
@param prior enable 3x3 shape smoothing term if \>0. A larger value leads to smoother shapes. prior
|
||||
must be in the range [0, 5].
|
||||
@param histogram_bins Number of histogram bins.
|
||||
@param double_step If true, iterate each block level twice for higher accuracy.
|
||||
|
||||
The function initializes a SuperpixelSEEDS object for the input image. It stores the parameters of
|
||||
the image: image_width, image_height and image_channels. It also sets the parameters of the SEEDS
|
||||
superpixel algorithm, which are: num_superpixels, num_levels, use_prior, histogram_bins and
|
||||
double_step.
|
||||
|
||||
The number of levels in num_levels defines the amount of block levels that the algorithm use in the
|
||||
optimization. The initialization is a grid, in which the superpixels are equally distributed through
|
||||
the width and the height of the image. The larger blocks correspond to the superpixel size, and the
|
||||
levels with smaller blocks are formed by dividing the larger blocks into 2 x 2 blocks of pixels,
|
||||
recursively until the smaller block level. An example of initialization of 4 block levels is
|
||||
illustrated in the following figure.
|
||||
|
||||

|
||||
*/
|
||||
CV_EXPORTS_W Ptr<SuperpixelSEEDS> createSuperpixelSEEDS(
|
||||
int image_width, int image_height, int image_channels,
|
||||
int num_superpixels, int num_levels, int prior = 2,
|
||||
int histogram_bins=5, bool double_step = false);
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
252
3rdparty/opencv/inc/opencv2/ximgproc/segmentation.hpp
vendored
Normal file
252
3rdparty/opencv/inc/opencv2/ximgproc/segmentation.hpp
vendored
Normal file
@@ -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 <opencv2/core.hpp>
|
||||
|
||||
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<GraphSegmentation> 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 segmentation.
|
||||
@param img The input image. Any number of channel can be provided
|
||||
@param regions A segmentation 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<SelectiveSearchSegmentationStrategyColor> 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<SelectiveSearchSegmentationStrategySize> 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<SelectiveSearchSegmentationStrategyTexture> 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<SelectiveSearchSegmentationStrategyFill> 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<SelectiveSearchSegmentationStrategy> 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<SelectiveSearchSegmentationStrategyMultiple> createSelectiveSearchSegmentationStrategyMultiple();
|
||||
|
||||
/** @brief Create a new multiple strategy and set one subtrategy
|
||||
@param s1 The first strategy
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<SelectiveSearchSegmentationStrategyMultiple> createSelectiveSearchSegmentationStrategyMultiple(Ptr<SelectiveSearchSegmentationStrategy> 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<SelectiveSearchSegmentationStrategyMultiple> createSelectiveSearchSegmentationStrategyMultiple(Ptr<SelectiveSearchSegmentationStrategy> s1, Ptr<SelectiveSearchSegmentationStrategy> 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<SelectiveSearchSegmentationStrategyMultiple> createSelectiveSearchSegmentationStrategyMultiple(Ptr<SelectiveSearchSegmentationStrategy> s1, Ptr<SelectiveSearchSegmentationStrategy> s2, Ptr<SelectiveSearchSegmentationStrategy> 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<SelectiveSearchSegmentationStrategyMultiple> createSelectiveSearchSegmentationStrategyMultiple(Ptr<SelectiveSearchSegmentationStrategy> s1, Ptr<SelectiveSearchSegmentationStrategy> s2, Ptr<SelectiveSearchSegmentationStrategy> s3, Ptr<SelectiveSearchSegmentationStrategy> 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<GraphSegmentation> 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<SelectiveSearchSegmentationStrategy> 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(CV_OUT std::vector<Rect>& rects) = 0;
|
||||
};
|
||||
|
||||
/** @brief Create a new SelectiveSearchSegmentation class.
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<SelectiveSearchSegmentation> createSelectiveSearchSegmentation();
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
168
3rdparty/opencv/inc/opencv2/ximgproc/slic.hpp
vendored
Normal file
168
3rdparty/opencv/inc/opencv2/ximgproc/slic.hpp
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
/*********************************************************************
|
||||
* Software License Agreement (BSD License)
|
||||
*
|
||||
* Copyright (c) 2013
|
||||
* Radhakrishna Achanta
|
||||
* email : Radhakrishna [dot] Achanta [at] epfl [dot] ch
|
||||
* web : http://ivrl.epfl.ch/people/achanta
|
||||
*
|
||||
* 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 name of the copyright holders nor the names of its
|
||||
* 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 THE
|
||||
* COPYRIGHT OWNER 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.
|
||||
*********************************************************************/
|
||||
|
||||
/*
|
||||
"SLIC Superpixels Compared to State-of-the-art Superpixel Methods"
|
||||
Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua,
|
||||
and Sabine Susstrunk, IEEE TPAMI, Volume 34, Issue 11, Pages 2274-2282,
|
||||
November 2012.
|
||||
|
||||
"SLIC Superpixels" Radhakrishna Achanta, Appu Shaji, Kevin Smith,
|
||||
Aurelien Lucchi, Pascal Fua, and Sabine Süsstrunk, EPFL Technical
|
||||
Report no. 149300, June 2010.
|
||||
|
||||
OpenCV port by: Cristian Balint <cristian dot balint at gmail dot com>
|
||||
*/
|
||||
|
||||
#ifndef __OPENCV_SLIC_HPP__
|
||||
#define __OPENCV_SLIC_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_superpixel
|
||||
//! @{
|
||||
|
||||
enum SLICType { SLIC = 100, SLICO = 101, MSLIC = 102 };
|
||||
|
||||
/** @brief Class implementing the SLIC (Simple Linear Iterative Clustering) superpixels
|
||||
algorithm described in @cite Achanta2012.
|
||||
|
||||
SLIC (Simple Linear Iterative Clustering) clusters pixels using pixel channels and image plane space
|
||||
to efficiently generate compact, nearly uniform superpixels. The simplicity of approach makes it
|
||||
extremely easy to use a lone parameter specifies the number of superpixels and the efficiency of
|
||||
the algorithm makes it very practical.
|
||||
Several optimizations are available for SLIC class:
|
||||
SLICO stands for "Zero parameter SLIC" and it is an optimization of baseline SLIC described in @cite Achanta2012.
|
||||
MSLIC stands for "Manifold SLIC" and it is an optimization of baseline SLIC described in @cite Liu_2017_IEEE.
|
||||
*/
|
||||
|
||||
class CV_EXPORTS_W SuperpixelSLIC : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief Calculates the actual amount of superpixels on a given segmentation computed
|
||||
and stored in SuperpixelSLIC object.
|
||||
*/
|
||||
CV_WRAP virtual int getNumberOfSuperpixels() const = 0;
|
||||
|
||||
/** @brief Calculates the superpixel segmentation on a given image with the initialized
|
||||
parameters in the SuperpixelSLIC object.
|
||||
|
||||
This function can be called again without the need of initializing the algorithm with
|
||||
createSuperpixelSLIC(). This save the computational cost of allocating memory for all the
|
||||
structures of the algorithm.
|
||||
|
||||
@param num_iterations Number of iterations. Higher number improves the result.
|
||||
|
||||
The function computes the superpixels segmentation of an image with the parameters initialized
|
||||
with the function createSuperpixelSLIC(). The algorithms starts from a grid of superpixels and
|
||||
then refines the boundaries by proposing updates of edges boundaries.
|
||||
|
||||
*/
|
||||
CV_WRAP virtual void iterate( int num_iterations = 10 ) = 0;
|
||||
|
||||
/** @brief Returns the segmentation labeling of the image.
|
||||
|
||||
Each label represents a superpixel, and each pixel is assigned to one superpixel label.
|
||||
|
||||
@param labels_out Return: A CV_32SC1 integer array containing the labels of the superpixel
|
||||
segmentation. The labels are in the range [0, getNumberOfSuperpixels()].
|
||||
|
||||
The function returns an image with the labels of the superpixel segmentation. The labels are in
|
||||
the range [0, getNumberOfSuperpixels()].
|
||||
*/
|
||||
CV_WRAP virtual void getLabels( OutputArray labels_out ) const = 0;
|
||||
|
||||
/** @brief Returns the mask of the superpixel segmentation stored in SuperpixelSLIC object.
|
||||
|
||||
@param image Return: CV_8U1 image mask where -1 indicates that the pixel is a superpixel border,
|
||||
and 0 otherwise.
|
||||
|
||||
@param thick_line If false, the border is only one pixel wide, otherwise all pixels at the border
|
||||
are masked.
|
||||
|
||||
The function return the boundaries of the superpixel segmentation.
|
||||
*/
|
||||
CV_WRAP virtual void getLabelContourMask( OutputArray image, bool thick_line = true ) const = 0;
|
||||
|
||||
/** @brief Enforce label connectivity.
|
||||
|
||||
@param min_element_size The minimum element size in percents that should be absorbed into a bigger
|
||||
superpixel. Given resulted average superpixel size valid value should be in 0-100 range, 25 means
|
||||
that less then a quarter sized superpixel should be absorbed, this is default.
|
||||
|
||||
The function merge component that is too small, assigning the previously found adjacent label
|
||||
to this component. Calling this function may change the final number of superpixels.
|
||||
*/
|
||||
CV_WRAP virtual void enforceLabelConnectivity( int min_element_size = 25 ) = 0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/** @brief Initialize a SuperpixelSLIC object
|
||||
|
||||
@param image Image to segment
|
||||
@param algorithm Chooses the algorithm variant to use:
|
||||
SLIC segments image using a desired region_size, and in addition SLICO will optimize using adaptive compactness factor,
|
||||
while MSLIC will optimize using manifold methods resulting in more content-sensitive superpixels.
|
||||
@param region_size Chooses an average superpixel size measured in pixels
|
||||
@param ruler Chooses the enforcement of superpixel smoothness factor of superpixel
|
||||
|
||||
The function initializes a SuperpixelSLIC object for the input image. It sets the parameters of choosed
|
||||
superpixel algorithm, which are: region_size and ruler. It preallocate some buffers for future
|
||||
computing iterations over the given image. For enanched results it is recommended for color images to
|
||||
preprocess image with little gaussian blur using a small 3 x 3 kernel and additional conversion into
|
||||
CieLAB color space. An example of SLIC versus SLICO and MSLIC is ilustrated in the following picture.
|
||||
|
||||

|
||||
|
||||
*/
|
||||
|
||||
CV_EXPORTS_W Ptr<SuperpixelSLIC> createSuperpixelSLIC( InputArray image, int algorithm = SLICO,
|
||||
int region_size = 10, float ruler = 10.0f );
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
270
3rdparty/opencv/inc/opencv2/ximgproc/sparse_match_interpolator.hpp
vendored
Normal file
270
3rdparty/opencv/inc/opencv2/ximgproc/sparse_match_interpolator.hpp
vendored
Normal file
@@ -0,0 +1,270 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* 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_SPARSEMATCHINTERPOLATOR_HPP__
|
||||
#define __OPENCV_SPARSEMATCHINTERPOLATOR_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv {
|
||||
namespace ximgproc {
|
||||
|
||||
//! @addtogroup ximgproc_filters
|
||||
//! @{
|
||||
|
||||
/** @brief Main interface for all filters, that take sparse matches as an
|
||||
input and produce a dense per-pixel matching (optical flow) as an output.
|
||||
*/
|
||||
class CV_EXPORTS_W SparseMatchInterpolator : public Algorithm
|
||||
{
|
||||
public:
|
||||
/** @brief Interpolate input sparse matches.
|
||||
|
||||
@param from_image first of the two matched images, 8-bit single-channel or three-channel.
|
||||
|
||||
@param from_points points of the from_image for which there are correspondences in the
|
||||
to_image (Point2f vector or Mat of depth CV_32F)
|
||||
|
||||
@param to_image second of the two matched images, 8-bit single-channel or three-channel.
|
||||
|
||||
@param to_points points in the to_image corresponding to from_points
|
||||
(Point2f vector or Mat of depth CV_32F)
|
||||
|
||||
@param dense_flow output dense matching (two-channel CV_32F image)
|
||||
*/
|
||||
CV_WRAP virtual void interpolate(InputArray from_image, InputArray from_points,
|
||||
InputArray to_image , InputArray to_points,
|
||||
OutputArray dense_flow) = 0;
|
||||
};
|
||||
|
||||
/** @brief Sparse match interpolation algorithm based on modified locally-weighted affine
|
||||
estimator from @cite Revaud2015 and Fast Global Smoother as post-processing filter.
|
||||
*/
|
||||
class CV_EXPORTS_W EdgeAwareInterpolator : public SparseMatchInterpolator
|
||||
{
|
||||
public:
|
||||
/** @brief Interface to provide a more elaborated cost map, i.e. edge map, for the edge-aware term.
|
||||
* This implementation is based on a rather simple gradient-based edge map estimation.
|
||||
* To used more complex edge map estimator (e.g. StructuredEdgeDetection that has been
|
||||
* used in the original publication) that may lead to improved accuracies, the internal
|
||||
* edge map estimation can be bypassed here.
|
||||
* @param _costMap a type CV_32FC1 Mat is required.
|
||||
* @see cv::ximgproc::createSuperpixelSLIC
|
||||
*/
|
||||
CV_WRAP virtual void setCostMap(const Mat & _costMap) = 0;
|
||||
/** @brief Parameter to tune the approximate size of the superpixel used for oversegmentation.
|
||||
* @see cv::ximgproc::createSuperpixelSLIC
|
||||
*/
|
||||
/** @brief K is a number of nearest-neighbor matches considered, when fitting a locally affine
|
||||
model. Usually it should be around 128. However, lower values would make the interpolation
|
||||
noticeably faster.
|
||||
*/
|
||||
CV_WRAP virtual void setK(int _k) = 0;
|
||||
/** @see setK */
|
||||
CV_WRAP virtual int getK() = 0;
|
||||
|
||||
/** @brief Sigma is a parameter defining how fast the weights decrease in the locally-weighted affine
|
||||
fitting. Higher values can help preserve fine details, lower values can help to get rid of noise in the
|
||||
output flow.
|
||||
*/
|
||||
CV_WRAP virtual void setSigma(float _sigma) = 0;
|
||||
/** @see setSigma */
|
||||
CV_WRAP virtual float getSigma() = 0;
|
||||
|
||||
/** @brief Lambda is a parameter defining the weight of the edge-aware term in geodesic distance,
|
||||
should be in the range of 0 to 1000.
|
||||
*/
|
||||
CV_WRAP virtual void setLambda(float _lambda) = 0;
|
||||
/** @see setLambda */
|
||||
CV_WRAP virtual float getLambda() = 0;
|
||||
|
||||
/** @brief Sets whether the fastGlobalSmootherFilter() post-processing is employed. It is turned on by
|
||||
default.
|
||||
*/
|
||||
CV_WRAP virtual void setUsePostProcessing(bool _use_post_proc) = 0;
|
||||
/** @see setUsePostProcessing */
|
||||
CV_WRAP virtual bool getUsePostProcessing() = 0;
|
||||
|
||||
/** @brief Sets the respective fastGlobalSmootherFilter() parameter.
|
||||
*/
|
||||
CV_WRAP virtual void setFGSLambda(float _lambda) = 0;
|
||||
/** @see setFGSLambda */
|
||||
CV_WRAP virtual float getFGSLambda() = 0;
|
||||
|
||||
/** @see setFGSLambda */
|
||||
CV_WRAP virtual void setFGSSigma(float _sigma) = 0;
|
||||
/** @see setFGSLambda */
|
||||
CV_WRAP virtual float getFGSSigma() = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method that creates an instance of the
|
||||
EdgeAwareInterpolator.
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<EdgeAwareInterpolator> createEdgeAwareInterpolator();
|
||||
|
||||
/** @brief Sparse match interpolation algorithm based on modified piecewise locally-weighted affine
|
||||
* estimator called Robust Interpolation method of Correspondences or RIC from @cite Hu2017 and Variational
|
||||
* and Fast Global Smoother as post-processing filter. The RICInterpolator is a extension of the EdgeAwareInterpolator.
|
||||
* Main concept of this extension is an piece-wise affine model based on over-segmentation via SLIC superpixel estimation.
|
||||
* The method contains an efficient propagation mechanism to estimate among the pieces-wise models.
|
||||
*/
|
||||
class CV_EXPORTS_W RICInterpolator : public SparseMatchInterpolator
|
||||
{
|
||||
public:
|
||||
/** @brief K is a number of nearest-neighbor matches considered, when fitting a locally affine
|
||||
*model for a superpixel segment. However, lower values would make the interpolation
|
||||
*noticeably faster. The original implementation of @cite Hu2017 uses 32.
|
||||
*/
|
||||
CV_WRAP virtual void setK(int k = 32) = 0;
|
||||
/** @copybrief setK
|
||||
* @see setK
|
||||
*/
|
||||
CV_WRAP virtual int getK() const = 0;
|
||||
/** @brief Interface to provide a more elaborated cost map, i.e. edge map, for the edge-aware term.
|
||||
* This implementation is based on a rather simple gradient-based edge map estimation.
|
||||
* To used more complex edge map estimator (e.g. StructuredEdgeDetection that has been
|
||||
* used in the original publication) that may lead to improved accuracies, the internal
|
||||
* edge map estimation can be bypassed here.
|
||||
* @param costMap a type CV_32FC1 Mat is required.
|
||||
* @see cv::ximgproc::createSuperpixelSLIC
|
||||
*/
|
||||
CV_WRAP virtual void setCostMap(const Mat & costMap) = 0;
|
||||
/** @brief Get the internal cost, i.e. edge map, used for estimating the edge-aware term.
|
||||
* @see setCostMap
|
||||
*/
|
||||
CV_WRAP virtual void setSuperpixelSize(int spSize = 15) = 0;
|
||||
/** @copybrief setSuperpixelSize
|
||||
* @see setSuperpixelSize
|
||||
*/
|
||||
CV_WRAP virtual int getSuperpixelSize() const = 0;
|
||||
/** @brief Parameter defines the number of nearest-neighbor matches for each superpixel considered, when fitting a locally affine
|
||||
*model.
|
||||
*/
|
||||
CV_WRAP virtual void setSuperpixelNNCnt(int spNN = 150) = 0;
|
||||
/** @copybrief setSuperpixelNNCnt
|
||||
* @see setSuperpixelNNCnt
|
||||
*/
|
||||
CV_WRAP virtual int getSuperpixelNNCnt() const = 0;
|
||||
/** @brief Parameter to tune enforcement of superpixel smoothness factor used for oversegmentation.
|
||||
* @see cv::ximgproc::createSuperpixelSLIC
|
||||
*/
|
||||
CV_WRAP virtual void setSuperpixelRuler(float ruler = 15.f) = 0;
|
||||
/** @copybrief setSuperpixelRuler
|
||||
* @see setSuperpixelRuler
|
||||
*/
|
||||
CV_WRAP virtual float getSuperpixelRuler() const = 0;
|
||||
/** @brief Parameter to choose superpixel algorithm variant to use:
|
||||
* - cv::ximgproc::SLICType SLIC segments image using a desired region_size (value: 100)
|
||||
* - cv::ximgproc::SLICType SLICO will optimize using adaptive compactness factor (value: 101)
|
||||
* - cv::ximgproc::SLICType MSLIC will optimize using manifold methods resulting in more content-sensitive superpixels (value: 102).
|
||||
* @see cv::ximgproc::createSuperpixelSLIC
|
||||
*/
|
||||
CV_WRAP virtual void setSuperpixelMode(int mode = 100) = 0;
|
||||
/** @copybrief setSuperpixelMode
|
||||
* @see setSuperpixelMode
|
||||
*/
|
||||
CV_WRAP virtual int getSuperpixelMode() const = 0;
|
||||
/** @brief Alpha is a parameter defining a global weight for transforming geodesic distance into weight.
|
||||
*/
|
||||
CV_WRAP virtual void setAlpha(float alpha = 0.7f) = 0;
|
||||
/** @copybrief setAlpha
|
||||
* @see setAlpha
|
||||
*/
|
||||
CV_WRAP virtual float getAlpha() const = 0;
|
||||
/** @brief Parameter defining the number of iterations for piece-wise affine model estimation.
|
||||
*/
|
||||
CV_WRAP virtual void setModelIter(int modelIter = 4) = 0;
|
||||
/** @copybrief setModelIter
|
||||
* @see setModelIter
|
||||
*/
|
||||
CV_WRAP virtual int getModelIter() const = 0;
|
||||
/** @brief Parameter to choose wether additional refinement of the piece-wise affine models is employed.
|
||||
*/
|
||||
CV_WRAP virtual void setRefineModels(bool refineModles = true) = 0;
|
||||
/** @copybrief setRefineModels
|
||||
* @see setRefineModels
|
||||
*/
|
||||
CV_WRAP virtual bool getRefineModels() const = 0;
|
||||
/** @brief MaxFlow is a threshold to validate the predictions using a certain piece-wise affine model.
|
||||
* If the prediction exceeds the treshold the translational model will be applied instead.
|
||||
*/
|
||||
CV_WRAP virtual void setMaxFlow(float maxFlow = 250.f) = 0;
|
||||
/** @copybrief setMaxFlow
|
||||
* @see setMaxFlow
|
||||
*/
|
||||
CV_WRAP virtual float getMaxFlow() const = 0;
|
||||
/** @brief Parameter to choose wether the VariationalRefinement post-processing is employed.
|
||||
*/
|
||||
CV_WRAP virtual void setUseVariationalRefinement(bool use_variational_refinement = false) = 0;
|
||||
/** @copybrief setUseVariationalRefinement
|
||||
* @see setUseVariationalRefinement
|
||||
*/
|
||||
CV_WRAP virtual bool getUseVariationalRefinement() const = 0;
|
||||
/** @brief Sets whether the fastGlobalSmootherFilter() post-processing is employed.
|
||||
*/
|
||||
CV_WRAP virtual void setUseGlobalSmootherFilter(bool use_FGS = true) = 0;
|
||||
/** @copybrief setUseGlobalSmootherFilter
|
||||
* @see setUseGlobalSmootherFilter
|
||||
*/
|
||||
CV_WRAP virtual bool getUseGlobalSmootherFilter() const = 0;
|
||||
/** @brief Sets the respective fastGlobalSmootherFilter() parameter.
|
||||
*/
|
||||
CV_WRAP virtual void setFGSLambda(float lambda = 500.f) = 0;
|
||||
/** @copybrief setFGSLambda
|
||||
* @see setFGSLambda
|
||||
*/
|
||||
CV_WRAP virtual float getFGSLambda() const = 0;
|
||||
/** @brief Sets the respective fastGlobalSmootherFilter() parameter.
|
||||
*/
|
||||
CV_WRAP virtual void setFGSSigma(float sigma = 1.5f) = 0;
|
||||
/** @copybrief setFGSSigma
|
||||
* @see setFGSSigma
|
||||
*/
|
||||
CV_WRAP virtual float getFGSSigma() const = 0;
|
||||
};
|
||||
|
||||
/** @brief Factory method that creates an instance of the
|
||||
RICInterpolator.
|
||||
*/
|
||||
CV_EXPORTS_W
|
||||
Ptr<RICInterpolator> createRICInterpolator();
|
||||
//! @}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
148
3rdparty/opencv/inc/opencv2/ximgproc/structured_edge_detection.hpp
vendored
Normal file
148
3rdparty/opencv/inc/opencv2/ximgproc/structured_edge_detection.hpp
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
/*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) 2000-2008, Intel Corporation, all rights reserved.
|
||||
// Copyright (C) 2009-2011, Willow Garage Inc., 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*/
|
||||
|
||||
#ifndef __OPENCV_STRUCTURED_EDGE_DETECTION_HPP__
|
||||
#define __OPENCV_STRUCTURED_EDGE_DETECTION_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
/** @file
|
||||
@date Jun 17, 2014
|
||||
@author Yury Gitman
|
||||
*/
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
//! @addtogroup ximgproc_edge
|
||||
//! @{
|
||||
|
||||
/*!
|
||||
Helper class for training part of [P. Dollar and C. L. Zitnick. Structured Forests for Fast Edge Detection, 2013].
|
||||
*/
|
||||
class CV_EXPORTS_W RFFeatureGetter : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/*!
|
||||
* This functions extracts feature channels from src.
|
||||
* Than StructureEdgeDetection uses this feature space
|
||||
* to detect edges.
|
||||
*
|
||||
* \param src : source image to extract features
|
||||
* \param features : output n-channel floating point feature matrix.
|
||||
*
|
||||
* \param gnrmRad : __rf.options.gradientNormalizationRadius
|
||||
* \param gsmthRad : __rf.options.gradientSmoothingRadius
|
||||
* \param shrink : __rf.options.shrinkNumber
|
||||
* \param outNum : __rf.options.numberOfOutputChannels
|
||||
* \param gradNum : __rf.options.numberOfGradientOrientations
|
||||
*/
|
||||
CV_WRAP virtual void getFeatures(const Mat &src, Mat &features,
|
||||
const int gnrmRad,
|
||||
const int gsmthRad,
|
||||
const int shrink,
|
||||
const int outNum,
|
||||
const int gradNum) const = 0;
|
||||
};
|
||||
|
||||
CV_EXPORTS_W Ptr<RFFeatureGetter> createRFFeatureGetter();
|
||||
|
||||
|
||||
|
||||
/** @brief Class implementing edge detection algorithm from @cite Dollar2013 :
|
||||
*/
|
||||
class CV_EXPORTS_W StructuredEdgeDetection : public Algorithm
|
||||
{
|
||||
public:
|
||||
|
||||
/** @brief The function detects edges in src and draw them to dst.
|
||||
|
||||
The algorithm underlies this function is much more robust to texture presence, than common
|
||||
approaches, e.g. Sobel
|
||||
@param src source image (RGB, float, in [0;1]) to detect edges
|
||||
@param dst destination image (grayscale, float, in [0;1]) where edges are drawn
|
||||
@sa Sobel, Canny
|
||||
*/
|
||||
CV_WRAP virtual void detectEdges(cv::InputArray src, cv::OutputArray dst) const = 0;
|
||||
|
||||
/** @brief The function computes orientation from edge image.
|
||||
|
||||
@param src edge image.
|
||||
@param dst orientation image.
|
||||
*/
|
||||
CV_WRAP virtual void computeOrientation(cv::InputArray src, cv::OutputArray dst) const = 0;
|
||||
|
||||
|
||||
/** @brief The function edgenms in edge image and suppress edges where edge is stronger in orthogonal direction.
|
||||
|
||||
@param edge_image edge image from detectEdges function.
|
||||
@param orientation_image orientation image from computeOrientation function.
|
||||
@param dst suppressed image (grayscale, float, in [0;1])
|
||||
@param r radius for NMS suppression.
|
||||
@param s radius for boundary suppression.
|
||||
@param m multiplier for conservative suppression.
|
||||
@param isParallel enables/disables parallel computing.
|
||||
*/
|
||||
CV_WRAP virtual void edgesNms(cv::InputArray edge_image, cv::InputArray orientation_image, cv::OutputArray dst, int r = 2, int s = 0, float m = 1, bool isParallel = true) const = 0;
|
||||
};
|
||||
|
||||
/*!
|
||||
* The only constructor
|
||||
*
|
||||
* \param model : name of the file where the model is stored
|
||||
* \param howToGetFeatures : optional object inheriting from RFFeatureGetter.
|
||||
* You need it only if you would like to train your
|
||||
* own forest, pass NULL otherwise
|
||||
*/
|
||||
CV_EXPORTS_W Ptr<StructuredEdgeDetection> createStructuredEdgeDetection(const String &model,
|
||||
Ptr<const RFFeatureGetter> howToGetFeatures = Ptr<RFFeatureGetter>());
|
||||
|
||||
//! @}
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif /* __OPENCV_STRUCTURED_EDGE_DETECTION_HPP__ */
|
||||
96
3rdparty/opencv/inc/opencv2/ximgproc/weighted_median_filter.hpp
vendored
Normal file
96
3rdparty/opencv/inc/opencv2/ximgproc/weighted_median_filter.hpp
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
/*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) 2015, The Chinese University of Hong Kong, 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*/
|
||||
|
||||
#ifndef __OPENCV_WEIGHTED_MEDIAN_FILTER_HPP__
|
||||
#define __OPENCV_WEIGHTED_MEDIAN_FILTER_HPP__
|
||||
#ifdef __cplusplus
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @date Sept 9, 2015
|
||||
* @author Zhou Chao
|
||||
*/
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
#include <string>
|
||||
|
||||
namespace cv
|
||||
{
|
||||
namespace ximgproc
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief Specifies weight types of weighted median filter.
|
||||
*/
|
||||
enum WMFWeightType
|
||||
{
|
||||
WMF_EXP = 1 , //!< \f$exp(-|I1-I2|^2/(2*sigma^2))\f$
|
||||
WMF_IV1 = 1 << 1, //!< \f$(|I1-I2|+sigma)^-1\f$
|
||||
WMF_IV2 = 1 << 2, //!< \f$(|I1-I2|^2+sigma^2)^-1\f$
|
||||
WMF_COS = 1 << 3, //!< \f$dot(I1,I2)/(|I1|*|I2|)\f$
|
||||
WMF_JAC = 1 << 4, //!< \f$(min(r1,r2)+min(g1,g2)+min(b1,b2))/(max(r1,r2)+max(g1,g2)+max(b1,b2))\f$
|
||||
WMF_OFF = 1 << 5 //!< unweighted
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Applies weighted median filter to an image.
|
||||
*
|
||||
* For more details about this implementation, please see @cite zhang2014100+
|
||||
*
|
||||
* @param joint Joint 8-bit, 1-channel or 3-channel image.
|
||||
* @param src Source 8-bit or floating-point, 1-channel or 3-channel image.
|
||||
* @param dst Destination image.
|
||||
* @param r Radius of filtering kernel, should be a positive integer.
|
||||
* @param sigma Filter range standard deviation for the joint image.
|
||||
* @param weightType weightType The type of weight definition, see WMFWeightType
|
||||
* @param mask A 0-1 mask that has the same size with I. This mask is used to ignore the effect of some pixels. If the pixel value on mask is 0,
|
||||
* the pixel will be ignored when maintaining the joint-histogram. This is useful for applications like optical flow occlusion handling.
|
||||
*
|
||||
* @sa medianBlur, jointBilateralFilter
|
||||
*/
|
||||
CV_EXPORTS_W void weightedMedianFilter(InputArray joint, InputArray src, OutputArray dst,
|
||||
int r, double sigma = 25.5, int weightType = WMF_EXP, InputArray mask = noArray());
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user