OpenCV453
|
Intelligent Scissors image segmentation [詳解]
#include <segmentation.hpp>
公開メンバ関数 | |
CV_WRAP IntelligentScissorsMB & | setWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude) |
Specify weights of feature functions [詳解] | |
CV_WRAP IntelligentScissorsMB & | setGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f) |
Specify gradient magnitude max value threshold [詳解] | |
CV_WRAP IntelligentScissorsMB & | setEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f) |
Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters [詳解] | |
CV_WRAP IntelligentScissorsMB & | setEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false) |
Switch edge feature extractor to use Canny edge detector [詳解] | |
CV_WRAP IntelligentScissorsMB & | applyImage (InputArray image) |
Specify input image and extract image features [詳解] | |
CV_WRAP IntelligentScissorsMB & | applyImageFeatures (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]
CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage | ( | InputArray | image | ) |
Specify input image and extract image features
image | input image. Type is #CV_8UC1 / #CV_8UC3 |
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_edge | Specify cost of non-edge pixels. Type is CV_8UC1. Expected values are {0, 1} . |
gradient_direction | Specify gradient direction feature. Type is CV_32FC2. Values are expected to be normalized: x^2 + y^2 == 1 |
gradient_magnitude | Specify cost of gradient magnitude function: Type is CV_32FC1. Values should be in range [0, 1] . |
image | Optional parameter. Must be specified if subset of features is specified (non-specified features are calculated internally) |
CV_WRAP void cv::segmentation::IntelligentScissorsMB::buildMap | ( | const Point & | sourcePt | ) |
Prepares a map of optimal paths for the given source point on the image
sourcePt | The source point used to find the paths |
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
targetPt | The target point | |
[out] | contour | The 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> ) |
backward | Flag to indicate reverse order of retrived pixels (use "true" value to fetch points from the target to the source point) |
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
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).
gradient_magnitude_min_value | Minimal gradient magnitude value for edge pixels (default: 0, check is disabled) |
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.
gradient_magnitude_threshold_max | Specify gradient magnitude max value threshold (default: 0, disabled) |
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_edge | Specify cost of non-edge pixels (default: 0.43f) |
weight_gradient_direction | Specify cost of gradient direction function (default: 0.43f) |
weight_gradient_magnitude | Specify cost of gradient magnitude function (default: 0.14f) |