ScanSegment 类


  • public class ScanSegment
    extends Algorithm
    该类实现了 Loke SC 等人提出的 F-DBSCAN(使用并行 DBSCAN 算法的加速超像素图像分割)超像素算法。引文: loke2021accelerated(原始论文)。该算法使用并行化的 DBSCAN 聚类搜索,该搜索具有抗噪性,在分割质量方面具有竞争力,并且比现有的超像素分割方法更快。在伯克利分割数据集上进行测试时,平均处理速度为 175 帧/秒,边界召回率为 0.797,可实现的分割精度为 0.944。计算复杂度为二次 O(n2),更适合较小的图像,但仍然可以比 OpenCV 中的 SEEDS 算法更快地处理 2MP 彩色图像。当处理线程数固定时,输出是确定性的,并且要求源图像为 Lab 颜色格式。
    • 构造函数摘要

      构造函数 
      修饰符 构造函数 描述
      protected ScanSegment​(long addr)  
    • 方法摘要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      static ScanSegment __fromPtr__​(long addr)  
      protected void finalize()  
      void getLabelContourMask​(Mat image)
      返回存储在 ScanSegment 对象中的超像素分割掩码。
      void getLabelContourMask​(Mat image, boolean thick_line)
      返回存储在 ScanSegment 对象中的超像素分割掩码。
      void getLabels​(Mat labels_out)
      返回图像的分割标签。
      int getNumberOfSuperpixels()
      返回使用 iterate 处理的最后一张图像的实际超像素分割结果。
      void iterate​(Mat img)
      使用 ScanSegment 对象中初始化的参数计算给定图像的超像素分割。无需使用 createScanSegment() 初始化算法即可对其他图像再次调用此函数。这节省了为算法的所有结构分配内存的计算成本。
      • 从类 java.lang.Object 继承的方法

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造函数详情

      • ScanSegment

        protected ScanSegment​(long addr)
    • 方法详情

      • __fromPtr__

        public static ScanSegment __fromPtr__​(long addr)
      • getNumberOfSuperpixels

        public int getNumberOfSuperpixels()
        返回使用 iterate 处理的最后一张图像的实际超像素分割结果。如果未处理任何图像,则返回零。
        返回值
        自动生成
      • iterate

        public void iterate​(Mat img)
        使用 ScanSegment 对象中初始化的参数计算给定图像的超像素分割。无需使用 createScanSegment() 初始化算法即可对其他图像再次调用此函数。这节省了为算法的所有结构分配内存的计算成本。
        参数
        img - 输入图像。支持格式:CV_8UC3。图像大小必须与使用函数 createScanSegment() 初始化的图像大小匹配。它必须在 Lab 颜色空间中。
      • getLabels

        public void getLabels​(Mat labels_out)
        返回图像的分割标签。每个标签代表一个超像素,每个像素都分配给一个超像素标签。
        参数
        labels_out - 返回值:包含超像素分割标签的 CV_32UC1 整数数组。标签范围为 [0, getNumberOfSuperpixels()]。
      • getLabelContourMask

        public void getLabelContourMask​(Mat image,
                                        boolean thick_line)
        返回存储在 ScanSegment 对象中的超像素分割掩码。该函数返回超像素分割的边界。
        参数
        image - 返回值:CV_8UC1 图像掩码,其中 -1 表示像素为超像素边界,0 表示否则。
        thick_line - 如果为 false,则边界只有一像素宽,否则边界上的所有像素都被屏蔽。
      • getLabelContourMask

        public void getLabelContourMask​(Mat image)
        返回存储在 ScanSegment 对象中的超像素分割掩码。该函数返回超像素分割的边界。
        参数
        image - 返回值:CV_8UC1 图像掩码,其中 -1 表示像素为超像素边界,0 表示否则。
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        覆盖
        finalize 在类 Algorithm
        抛出
        java.lang.Throwable