Class IntelligentScissorsMB

java.lang.Object
org.opencv.imgproc.IntelligentScissorsMB

public class IntelligentScissorsMB
extends 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 Details

  • Constructor Details

  • Method Details

    • 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 with gradient magnitude &gt;= 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

      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 &gt;= 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

      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 generated
      threshold2 - automatically generated
      apertureSize - automatically generated
      L2gradient - 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 generated
      threshold2 - automatically generated
      apertureSize - 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 generated
      threshold2 - automatically generated
      Returns:
      automatically generated
    • applyImage

      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 imput 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 imput 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 point
      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&lt;Point&gt;)
      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 point
      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&lt;Point&gt;)
    • finalize

      protected void finalize() throws Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable