类 ScanSegment
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.ximgproc.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(long addr)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 static ScanSegment__fromPtr__(long addr)protected voidfinalize()voidgetLabelContourMask(Mat image)返回 ScanSegment 对象中存储的超像素分割的掩码。voidgetLabelContourMask(Mat image, boolean thick_line)返回 ScanSegment 对象中存储的超像素分割的掩码。voidgetLabels(Mat labels_out)返回图像的分割标签。intgetNumberOfSuperpixels()返回使用 iterate 处理的最后一张图像的实际超像素分割。voiditerate(Mat img)使用 ScanSegment 对象中初始化的参数计算给定图像的超像素分割。-
从类继承的方法 org.opencv.core.Algorithm
clear, empty, getDefaultName, getNativeObjAddr, save
-
-
-
-
方法详细信息
-
__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。
-
-