类 ScanSegment


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

      • 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