类 SuperpixelSEEDS


  • public class SuperpixelSEEDS
    extends Algorithm
    类实现了在 CITE: VBRV14 中描述的 SEEDS(通过能量驱动采样提取的超像素)超像素算法。该算法使用高效的爬山算法来优化超像素的能量函数,该函数基于颜色直方图和一个边界项(可选)。能量函数鼓励超像素具有相同的颜色,如果边界项被激活,则超像素具有平滑的边界并且具有相似的形状。在实践中,它从超像素的规则网格开始,并移动边界上的像素或像素块以优化解决方案。该算法使用单个 CPU 实时运行。
    • 构造函数详细信息

      • SuperpixelSEEDS

        protected SuperpixelSEEDS​(long addr)
    • 方法详细信息

      • getNumberOfSuperpixels

        public int getNumberOfSuperpixels()
        计算存储在 SuperpixelSEEDS 对象中的给定图像上的超像素分割。该函数使用使用函数 createSuperpixelSEEDS() 初始化的参数计算图像的超像素分割。
        返回
        自动生成
      • iterate

        public void iterate​(Mat img,
                            int num_iterations)
        使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。可以再次调用此函数用于其他图像,而无需使用 createSuperpixelSEEDS() 初始化算法。这节省了为算法的所有结构分配内存的计算成本。
        参数
        img - 输入图像。支持的格式:CV_8U、CV_16U、CV_32F。图像大小和通道数必须与使用函数 createSuperpixelSEEDS() 初始化的图像大小和通道数相匹配。它应该在 HSV 或 Lab 颜色空间中。Lab 更好一点,但速度也更慢。
        num_iterations - 像素级别迭代次数。数字越大,结果越好。该函数使用使用函数 createSuperpixelSEEDS() 初始化的参数计算图像的超像素分割。该算法从超像素网格开始,然后通过提出位于边界上的像素块从大到小的更新来细化边界,最后提出像素更新。可以在下面看到一个说明性示例。 ![image](pics/superpixels_blocks2.png)
      • iterate

        public void iterate​(Mat img)
        使用 SuperpixelSEEDS 对象中初始化的参数计算给定图像上的超像素分割。可以再次调用此函数用于其他图像,而无需使用 createSuperpixelSEEDS() 初始化算法。这节省了为算法的所有结构分配内存的计算成本。
        参数
        img - 输入图像。支持的格式:CV_8U、CV_16U、CV_32F。图像大小和通道数必须与使用函数 createSuperpixelSEEDS() 初始化的图像大小和通道数相匹配。它应该在 HSV 或 Lab 颜色空间中。Lab 更好一点,但速度也更慢。该函数使用使用函数 createSuperpixelSEEDS() 初始化的参数计算图像的超像素分割。该算法从超像素网格开始,然后通过提出位于边界上的像素块从大到小的更新来细化边界,最后提出像素更新。可以在下面看到一个说明性示例。 ![image](pics/superpixels_blocks2.png)
      • getLabels

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

        public void getLabelContourMask​(Mat image,
                                        boolean thick_line)
        返回存储在 SuperpixelSEEDS 对象中的超像素分割的掩码。
        参数
        image - 返回:CV_8UC1 图像掩码,其中 -1 表示像素是超像素边界,否则为 0。
        thick_line - 如果为 false,则边框只有一个像素宽,否则边框上的所有像素都会被屏蔽。该函数返回超像素分割的边界。注意:
        • (Python) 如何从网络摄像头生成图像中的超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到
          • (cpp) 如何从网络摄像头生成图像中的超像素的演示可以在 opencv_source_code/modules/ximgproc/samples/seeds.cpp 中找到。通过添加文件图像作为命令行参数,将使用静态图像代替网络摄像头。
          • 它将显示一个带有来自网络摄像头的视频的窗口,其中超像素边界以红色标记(见下文)。使用空格键在不同的输出模式之间切换。在窗口顶部有 4 个滑块,用户可以从中动态更改超像素的数量、块级别的数量、边界先验项的强度以修改形状以及像素级别的迭代次数。这对于使用参数并将其设置为用户方便是有用的。在控制台中指示算法的帧速率。
          ![image](pics/superpixels_demo.png)
      • getLabelContourMask

        public void getLabelContourMask​(Mat image)
        返回存储在 SuperpixelSEEDS 对象中的超像素分割的掩码。
        参数
        image - 返回:CV_8UC1 图像掩码,其中 -1 表示像素是超像素边界,否则为 0。被屏蔽。该函数返回超像素分割的边界。注意:
        • (Python) 如何从网络摄像头生成图像中的超像素的演示可以在 opencv_source_code/samples/python2/seeds.py 中找到
          • (cpp) 如何从网络摄像头生成图像中的超像素的演示可以在 opencv_source_code/modules/ximgproc/samples/seeds.cpp 中找到。通过添加文件图像作为命令行参数,将使用静态图像代替网络摄像头。
          • 它将显示一个带有来自网络摄像头的视频的窗口,其中超像素边界以红色标记(见下文)。使用空格键在不同的输出模式之间切换。在窗口顶部有 4 个滑块,用户可以从中动态更改超像素的数量、块级别的数量、边界先验项的强度以修改形状以及像素级别的迭代次数。这对于使用参数并将其设置为用户方便是有用的。在控制台中指示算法的帧速率。
          ![image](pics/superpixels_demo.png)
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        finalize 在类 Algorithm
        抛出
        java.lang.Throwable