Class EdgeDrawing


  • public class EdgeDrawing
    extends Algorithm
    Class implementing the ED (EdgeDrawing) CITE: topal2012edge, EDLines CITE: akinlar2011edlines, EDPF CITE: akinlar2012edpf and EDCircles CITE: akinlar2013edcircles algorithms EDGE DRAWING LIBRARY FOR GEOMETRIC FEATURE EXTRACTION AND VALIDATION Edge Drawing (ED) algorithm is an proactive approach on edge detection problem. In contrast to many other existing edge detection algorithms which follow a subtractive approach (i.e. after applying gradient filters onto an image eliminating pixels w.r.t. several rules, e.g. non-maximal suppression and hysteresis in Canny), ED algorithm works via an additive strategy, i.e. it picks edge pixels one by one, hence the name Edge Drawing. Then we process those random shaped edge segments to extract higher level edge features, i.e. lines, circles, ellipses, etc. The popular method of extraction edge pixels from the thresholded gradient magnitudes is non-maximal supressiun that tests every pixel whether it has the maximum gradient response along its gradient direction and eliminates if it does not. However, this method does not check status of the neighboring pixels, and therefore might result low quality (in terms of edge continuity, smoothness, thinness, localization) edge segments. Instead of non-maximal supression, ED points a set of edge pixels and join them by maximizing the total gradient response of edge segments. Therefore it can extract high quality edge segments without need for an additional hysteresis step.
    • Constructor Detail

      • EdgeDrawing

        protected EdgeDrawing​(long addr)
    • Method Detail

      • __fromPtr__

        public static EdgeDrawing __fromPtr__​(long addr)
      • detectEdges

        public void detectEdges​(Mat src)
        Detects edges and prepares them to detect lines and ellipses.
        Parameters:
        src - input image
      • getEdgeImage

        public void getEdgeImage​(Mat dst)
      • getGradientImage

        public void getGradientImage​(Mat dst)
      • getSegments

        public java.util.List<MatOfPoint> getSegments()
      • detectLines

        public void detectLines​(Mat lines)
        Detects lines.
        Parameters:
        lines - output Vec<4f> contains start point and end point of detected lines. Note: you should call detectEdges() method before call this.
      • detectEllipses

        public void detectEllipses​(Mat ellipses)
        Detects circles and ellipses.
        Parameters:
        ellipses - output Vec<6d> contains center point and perimeter for circles. Note: you should call detectEdges() method before call this.
      • setParams

        public void setParams​(EdgeDrawing_Params parameters)
        sets parameters. this function is meant to be used for parameter setting in other languages than c++.
        Parameters:
        parameters - automatically generated
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class Algorithm
        Throws:
        java.lang.Throwable