Class LineSegmentDetector


  • public class LineSegmentDetector
    extends Algorithm
    Line segment detector class following the algorithm described at CITE: Rafael12 . Note: Implementation has been removed from OpenCV version 3.4.6 to 3.4.15 and version 4.1.0 to 4.5.3 due original code license conflict. restored again after [Computation of a NFA](https://github.com/rafael-grompone-von-gioi/binomial_nfa) code published under the MIT license.
    • Constructor Detail

      • LineSegmentDetector

        protected LineSegmentDetector​(long addr)
    • Method Detail

      • detect

        public void detect​(Mat image,
                           Mat lines,
                           Mat width,
                           Mat prec,
                           Mat nfa)
        Finds lines in the input image. This is the output of the default parameters of the algorithm on the above shown image. ![image](pics/building_lsd.png)
        Parameters:
        image - A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use: lsd_ptr->detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
        lines - A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.
        width - Vector of widths of the regions, where the lines are found. E.g. Width of line.
        prec - Vector of precisions with which the lines are found.
        nfa - Vector containing number of false alarms in the line region, with precision of 10%. The bigger the value, logarithmically better the detection.
        • -1 corresponds to 10 mean false alarms
        • 0 corresponds to 1 mean false alarm
        • 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
      • detect

        public void detect​(Mat image,
                           Mat lines,
                           Mat width,
                           Mat prec)
        Finds lines in the input image. This is the output of the default parameters of the algorithm on the above shown image. ![image](pics/building_lsd.png)
        Parameters:
        image - A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use: lsd_ptr->detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
        lines - A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.
        width - Vector of widths of the regions, where the lines are found. E.g. Width of line.
        prec - Vector of precisions with which the lines are found. bigger the value, logarithmically better the detection.
        • -1 corresponds to 10 mean false alarms
        • 0 corresponds to 1 mean false alarm
        • 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
      • detect

        public void detect​(Mat image,
                           Mat lines,
                           Mat width)
        Finds lines in the input image. This is the output of the default parameters of the algorithm on the above shown image. ![image](pics/building_lsd.png)
        Parameters:
        image - A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use: lsd_ptr->detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
        lines - A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient.
        width - Vector of widths of the regions, where the lines are found. E.g. Width of line. bigger the value, logarithmically better the detection.
        • -1 corresponds to 10 mean false alarms
        • 0 corresponds to 1 mean false alarm
        • 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
      • detect

        public void detect​(Mat image,
                           Mat lines)
        Finds lines in the input image. This is the output of the default parameters of the algorithm on the above shown image. ![image](pics/building_lsd.png)
        Parameters:
        image - A grayscale (CV_8UC1) input image. If only a roi needs to be selected, use: lsd_ptr->detect(image(roi), lines, ...); lines += Scalar(roi.x, roi.y, roi.x, roi.y);
        lines - A vector of Vec4f elements specifying the beginning and ending point of a line. Where Vec4f is (x1, y1, x2, y2), point 1 is the start, point 2 - end. Returned lines are strictly oriented depending on the gradient. bigger the value, logarithmically better the detection.
        • -1 corresponds to 10 mean false alarms
        • 0 corresponds to 1 mean false alarm
        • 1 corresponds to 0.1 mean false alarms This vector will be calculated only when the objects type is #LSD_REFINE_ADV.
      • drawSegments

        public void drawSegments​(Mat image,
                                 Mat lines)
        Draws the line segments on a given image.
        Parameters:
        image - The image, where the lines will be drawn. Should be bigger or equal to the image, where the lines were found.
        lines - A vector of the lines that needed to be drawn.
      • compareSegments

        public int compareSegments​(Size size,
                                   Mat lines1,
                                   Mat lines2,
                                   Mat image)
        Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
        Parameters:
        size - The size of the image, where lines1 and lines2 were found.
        lines1 - The first group of lines that needs to be drawn. It is visualized in blue color.
        lines2 - The second group of lines. They visualized in red color.
        image - Optional image, where the lines will be drawn. The image should be color(3-channel) in order for lines1 and lines2 to be drawn in the above mentioned colors.
        Returns:
        automatically generated
      • compareSegments

        public int compareSegments​(Size size,
                                   Mat lines1,
                                   Mat lines2)
        Draws two groups of lines in blue and red, counting the non overlapping (mismatching) pixels.
        Parameters:
        size - The size of the image, where lines1 and lines2 were found.
        lines1 - The first group of lines that needs to be drawn. It is visualized in blue color.
        lines2 - The second group of lines. They visualized in red color. in order for lines1 and lines2 to be drawn in the above mentioned colors.
        Returns:
        automatically generated
      • finalize

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