SuperpixelSEEDS 类


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