OpenCV453
公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
cv::segmentation::IntelligentScissorsMB クラス

Intelligent Scissors image segmentation [詳解]

#include <segmentation.hpp>

公開メンバ関数

CV_WRAP IntelligentScissorsMBsetWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude)
 Specify weights of feature functions [詳解]
 
CV_WRAP IntelligentScissorsMBsetGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f)
 Specify gradient magnitude max value threshold [詳解]
 
CV_WRAP IntelligentScissorsMBsetEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f)
 Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters [詳解]
 
CV_WRAP IntelligentScissorsMBsetEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)
 Switch edge feature extractor to use Canny edge detector [詳解]
 
CV_WRAP IntelligentScissorsMBapplyImage (InputArray image)
 Specify input image and extract image features [詳解]
 
CV_WRAP IntelligentScissorsMBapplyImageFeatures (InputArray non_edge, InputArray gradient_direction, InputArray gradient_magnitude, InputArray image=noArray())
 Specify custom features of imput image [詳解]
 
CV_WRAP void buildMap (const Point &sourcePt)
 Prepares a map of optimal paths for the given source point on the image [詳解]
 
CV_WRAP void getContour (const Point &targetPt, OutputArray contour, bool backward=false) const
 Extracts optimal contour for the given target point on the image [詳解]
 
Impl * getImpl () const
 

限定公開変数類

std::shared_ptr< Impl > impl
 

詳解

Intelligent Scissors image segmentation

This class is used to find the path (contour) between two points which can be used for image segmentation.

Usage example:

Reference: "Intelligent Scissors for Image Composition" algorithm designed by Eric N. Mortensen and William A. Barrett, Brigham Young University [Mortensen95intelligentscissors]

関数詳解

◆ applyImage()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage ( InputArray  image)

Specify input image and extract image features

引数
imageinput image. Type is #CV_8UC1 / #CV_8UC3

◆ applyImageFeatures()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImageFeatures ( InputArray  non_edge,
InputArray  gradient_direction,
InputArray  gradient_magnitude,
InputArray  image = noArray() 
)

Specify custom features of imput image

Customized advanced variant of applyImage() call.

引数
non_edgeSpecify cost of non-edge pixels. Type is CV_8UC1. Expected values are {0, 1}.
gradient_directionSpecify gradient direction feature. Type is CV_32FC2. Values are expected to be normalized: x^2 + y^2 == 1
gradient_magnitudeSpecify cost of gradient magnitude function: Type is CV_32FC1. Values should be in range [0, 1].
imageOptional parameter. Must be specified if subset of features is specified (non-specified features are calculated internally)

◆ buildMap()

CV_WRAP void cv::segmentation::IntelligentScissorsMB::buildMap ( const Point sourcePt)

Prepares a map of optimal paths for the given source point on the image

覚え書き
applyImage() / applyImageFeatures() must be called before this call
引数
sourcePtThe source point used to find the paths

◆ getContour()

CV_WRAP void cv::segmentation::IntelligentScissorsMB::getContour ( const Point targetPt,
OutputArray  contour,
bool  backward = false 
) const

Extracts optimal contour for the given target point on the image

覚え書き
buildMap() must be called before this call
引数
targetPtThe target point
[out]contourThe list of pixels which contains optimal path between the source and the target points of the image. Type is CV_32SC2 (compatible with std::vector<Point>)
backwardFlag to indicate reverse order of retrived pixels (use "true" value to fetch points from the target to the source point)

◆ setEdgeFeatureCannyParameters()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureCannyParameters ( double  threshold1,
double  threshold2,
int  apertureSize = 3,
bool  L2gradient = false 
)

Switch edge feature extractor to use Canny edge detector

覚え書き
"Laplacian Zero-Crossing" feature extractor is used by default (following to original article)
参照
Canny

◆ setEdgeFeatureZeroCrossingParameters()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureZeroCrossingParameters ( float  gradient_magnitude_min_value = 0.0f)

Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters

This feature extractor is used by default according to article.

Implementation has additional filtering for regions with low-amplitude noise. This filtering is enabled through parameter of minimal gradient amplitude (use some small value 4, 8, 16).

覚え書き
Current implementation of this feature extractor is based on processing of grayscale images (color image is converted to grayscale image first).
Canny edge detector is a bit slower, but provides better results (especially on color images): use setEdgeFeatureCannyParameters().
引数
gradient_magnitude_min_valueMinimal gradient magnitude value for edge pixels (default: 0, check is disabled)

◆ setGradientMagnitudeMaxLimit()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setGradientMagnitudeMaxLimit ( float  gradient_magnitude_threshold_max = 0.0f)

Specify gradient magnitude max value threshold

Zero limit value is used to disable gradient magnitude thresholding (default behavior, as described in original article). Otherwize pixels with gradient magnitude >= threshold have zero cost.

覚え書き
Thresholding should be used for images with irregular regions (to avoid stuck on parameters from high-contract areas, like embedded logos).
引数
gradient_magnitude_threshold_maxSpecify gradient magnitude max value threshold (default: 0, disabled)

◆ setWeights()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setWeights ( float  weight_non_edge,
float  weight_gradient_direction,
float  weight_gradient_magnitude 
)

Specify weights of feature functions

Consider keeping weights normalized (sum of weights equals to 1.0) Discrete dynamic programming (DP) goal is minimization of costs between pixels.

引数
weight_non_edgeSpecify cost of non-edge pixels (default: 0.43f)
weight_gradient_directionSpecify cost of gradient direction function (default: 0.43f)
weight_gradient_magnitudeSpecify cost of gradient magnitude function (default: 0.14f)

このクラス詳解は次のファイルから抽出されました: