Package org.opencv.imgproc
Class IntelligentScissorsMB
- java.lang.Object
-
- org.opencv.imgproc.IntelligentScissorsMB
-
public class IntelligentScissorsMB extends java.lang.Object
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: SNIPPET: snippets/imgproc_segmentation.cpp usage_example_intelligent_scissors Reference: <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.3811&rep=rep1&type=pdf">"Intelligent Scissors for Image Composition"</a> algorithm designed by Eric N. Mortensen and William A. Barrett, Brigham Young University CITE: Mortensen95intelligentscissors
-
-
Field Summary
Fields Modifier and Type Field Description protected long
nativeObj
-
Constructor Summary
Constructors Modifier Constructor Description IntelligentScissorsMB()
protected
IntelligentScissorsMB(long addr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static IntelligentScissorsMB
__fromPtr__(long addr)
IntelligentScissorsMB
applyImage(Mat image)
Specify input image and extract image featuresIntelligentScissorsMB
applyImageFeatures(Mat non_edge, Mat gradient_direction, Mat gradient_magnitude)
Specify custom features of input image Customized advanced variant of applyImage() call.IntelligentScissorsMB
applyImageFeatures(Mat non_edge, Mat gradient_direction, Mat gradient_magnitude, Mat image)
Specify custom features of input image Customized advanced variant of applyImage() call.void
buildMap(Point sourcePt)
Prepares a map of optimal paths for the given source point on the image Note: applyImage() / applyImageFeatures() must be called before this callprotected void
finalize()
void
getContour(Point targetPt, Mat contour)
Extracts optimal contour for the given target point on the image Note: buildMap() must be called before this callvoid
getContour(Point targetPt, Mat contour, boolean backward)
Extracts optimal contour for the given target point on the image Note: buildMap() must be called before this calllong
getNativeObjAddr()
IntelligentScissorsMB
setEdgeFeatureCannyParameters(double threshold1, double threshold2)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: CannyIntelligentScissorsMB
setEdgeFeatureCannyParameters(double threshold1, double threshold2, int apertureSize)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: CannyIntelligentScissorsMB
setEdgeFeatureCannyParameters(double threshold1, double threshold2, int apertureSize, boolean L2gradient)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: CannyIntelligentScissorsMB
setEdgeFeatureZeroCrossingParameters()
Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters This feature extractor is used by default according to article.IntelligentScissorsMB
setEdgeFeatureZeroCrossingParameters(float gradient_magnitude_min_value)
Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters This feature extractor is used by default according to article.IntelligentScissorsMB
setGradientMagnitudeMaxLimit()
Specify gradient magnitude max value threshold Zero limit value is used to disable gradient magnitude thresholding (default behavior, as described in original article).IntelligentScissorsMB
setGradientMagnitudeMaxLimit(float gradient_magnitude_threshold_max)
Specify gradient magnitude max value threshold Zero limit value is used to disable gradient magnitude thresholding (default behavior, as described in original article).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.
-
-
-
Method Detail
-
getNativeObjAddr
public long getNativeObjAddr()
-
__fromPtr__
public static IntelligentScissorsMB __fromPtr__(long addr)
-
setWeights
public 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.- Parameters:
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)- Returns:
- automatically generated
-
setGradientMagnitudeMaxLimit
public IntelligentScissorsMB setGradientMagnitudeMaxLimit(float gradient_magnitude_threshold_max)
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 withgradient magnitude >= threshold
have zero cost. Note: Thresholding should be used for images with irregular regions (to avoid stuck on parameters from high-contract areas, like embedded logos).- Parameters:
gradient_magnitude_threshold_max
- Specify gradient magnitude max value threshold (default: 0, disabled)- Returns:
- automatically generated
-
setGradientMagnitudeMaxLimit
public IntelligentScissorsMB setGradientMagnitudeMaxLimit()
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 withgradient magnitude >= threshold
have zero cost. Note: Thresholding should be used for images with irregular regions (to avoid stuck on parameters from high-contract areas, like embedded logos).- Returns:
- automatically generated
-
setEdgeFeatureZeroCrossingParameters
public IntelligentScissorsMB setEdgeFeatureZeroCrossingParameters(float gradient_magnitude_min_value)
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). Note: Current implementation of this feature extractor is based on processing of grayscale images (color image is converted to grayscale image first). Note: Canny edge detector is a bit slower, but provides better results (especially on color images): use setEdgeFeatureCannyParameters().- Parameters:
gradient_magnitude_min_value
- Minimal gradient magnitude value for edge pixels (default: 0, check is disabled)- Returns:
- automatically generated
-
setEdgeFeatureZeroCrossingParameters
public IntelligentScissorsMB setEdgeFeatureZeroCrossingParameters()
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). Note: Current implementation of this feature extractor is based on processing of grayscale images (color image is converted to grayscale image first). Note: Canny edge detector is a bit slower, but provides better results (especially on color images): use setEdgeFeatureCannyParameters().- Returns:
- automatically generated
-
setEdgeFeatureCannyParameters
public IntelligentScissorsMB setEdgeFeatureCannyParameters(double threshold1, double threshold2, int apertureSize, boolean L2gradient)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: Canny- Parameters:
threshold1
- automatically generatedthreshold2
- automatically generatedapertureSize
- automatically generatedL2gradient
- automatically generated- Returns:
- automatically generated
-
setEdgeFeatureCannyParameters
public IntelligentScissorsMB setEdgeFeatureCannyParameters(double threshold1, double threshold2, int apertureSize)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: Canny- Parameters:
threshold1
- automatically generatedthreshold2
- automatically generatedapertureSize
- automatically generated- Returns:
- automatically generated
-
setEdgeFeatureCannyParameters
public IntelligentScissorsMB setEdgeFeatureCannyParameters(double threshold1, double threshold2)
Switch edge feature extractor to use Canny edge detector Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) SEE: Canny- Parameters:
threshold1
- automatically generatedthreshold2
- automatically generated- Returns:
- automatically generated
-
applyImage
public IntelligentScissorsMB applyImage(Mat image)
Specify input image and extract image features- Parameters:
image
- input image. Type is #CV_8UC1 / #CV_8UC3- Returns:
- automatically generated
-
applyImageFeatures
public IntelligentScissorsMB applyImageFeatures(Mat non_edge, Mat gradient_direction, Mat gradient_magnitude, Mat image)
Specify custom features of input image Customized advanced variant of applyImage() call.- Parameters:
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)- Returns:
- automatically generated
-
applyImageFeatures
public IntelligentScissorsMB applyImageFeatures(Mat non_edge, Mat gradient_direction, Mat gradient_magnitude)
Specify custom features of input image Customized advanced variant of applyImage() call.- Parameters:
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]
.- Returns:
- automatically generated
-
buildMap
public void buildMap(Point sourcePt)
Prepares a map of optimal paths for the given source point on the image Note: applyImage() / applyImageFeatures() must be called before this call- Parameters:
sourcePt
- The source point used to find the paths
-
getContour
public void getContour(Point targetPt, Mat contour, boolean backward)
Extracts optimal contour for the given target point on the image Note: buildMap() must be called before this call- Parameters:
targetPt
- The target pointcontour
- The list of pixels which contains optimal path between the source and the target points of the image. Type is CV_32SC2 (compatible withstd::vector<Point>
)backward
- Flag to indicate reverse order of retrived pixels (use "true" value to fetch points from the target to the source point)
-
getContour
public void getContour(Point targetPt, Mat contour)
Extracts optimal contour for the given target point on the image Note: buildMap() must be called before this call- Parameters:
targetPt
- The target pointcontour
- The list of pixels which contains optimal path between the source and the target points of the image. Type is CV_32SC2 (compatible withstd::vector<Point>
)
-
finalize
protected void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
-