类 PCTSignatures


  • public class PCTSignatures
    extends Algorithm
    实现 PCT (位置-颜色-纹理) 签名提取的类,如 CITE: KrulisLS16 中所述。该算法分为特征采样器和聚类器。特征采样器在给定坐标集处生成样本。然后,聚类器使用 k-means 算法对这些样本生成聚类。由此产生的聚类集是输入图像的签名。签名是由 SIGNATURE_DIMENSION 维点组成的数组。使用的维度包括:权重、x、y 位置;lab 颜色、对比度、熵。CITE: KrulisLS16 CITE: BeecksUS10
    • 构造函数摘要

      构造函数 
      修饰符 构造函数 描述
      保护 PCTSignatures​(long addr)  
    • 方法摘要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      静态 PCTSignatures __fromPtr__​(long addr)  
      void computeSignature​(Mat image, Mat signature)
      计算给定图像的签名。
      void computeSignatures​(java.util.List<Mat> images, java.util.List<Mat> signatures)
      并行计算多个图像的签名。
      静态 PCTSignatures create()
      使用采样点和种子计数创建 PCTSignatures 算法。
      静态 PCTSignatures create​(int initSampleCount)
      使用采样点和种子计数创建 PCTSignatures 算法。
      静态 PCTSignatures create​(int initSampleCount, int initSeedCount)
      使用采样点和种子计数创建 PCTSignatures 算法。
      静态 PCTSignatures create​(int initSampleCount, int initSeedCount, int pointDistribution)
      使用采样点和种子计数创建 PCTSignatures 算法。
      静态 PCTSignatures create​(MatOfPoint2f initSamplingPoints, int initSeedCount)
      使用预生成的采样点和聚类种子数创建 PCTSignatures 算法。
      静态 PCTSignatures create​(MatOfPoint2f initSamplingPoints, MatOfInt initClusterSeedIndexes)
      使用预生成的采样点和聚类种子索引创建 PCTSignatures 算法。
      static void drawSignature​(Mat source, Mat signature, Mat result)
      在源图像中绘制签名并输出结果。
      static void drawSignature​(Mat source, Mat signature, Mat result, float radiusToShorterSideRatio)
      在源图像中绘制签名并输出结果。
      static void drawSignature​(Mat source, Mat signature, Mat result, float radiusToShorterSideRatio, int borderThickness)
      在源图像中绘制签名并输出结果。
      static void generateInitPoints​(MatOfPoint2f initPoints, int count, int pointDistribution)
      根据选定的点分布生成初始采样点。
      int getClusterMinSize()
      此参数乘以迭代次数,得到聚类大小的下限。
      int getDistanceFunction()
      k-means 中用于测量两点之间距离的距离函数选择器。
      float getDropThreshold()
      在 k-means 中,移除权重小于或等于给定阈值的质心。
      int getGrayscaleBits()
      灰度位图的颜色分辨率,以分配的位数表示(即,值为 4 表示使用了 16 级灰度)。
      int getInitSeedCount()
      k-means 算法的初始种子数(初始聚类数)。
      MatOfInt getInitSeedIndexes()
      k-means 算法的初始种子(初始聚类数)。
      int getIterationCount()
      k-means 聚类的迭代次数。
      float getJoiningDistance()
      两个质心之间的阈值欧氏距离。
      int getMaxClustersCount()
      生成的最大聚类数。
      int getSampleCount()
      从图像中获取的初始样本数。
      MatOfPoint2f getSamplingPoints()
      从图像中获取的初始样本。
      float getWeightA()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightB()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightContrast()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightEntropy()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightL()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightX()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      float getWeightY()
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      int getWindowRadius()
      用于计算对比度和熵的纹理采样窗口大小(窗口中心始终位于由相应特征样本的 x,y 坐标选择的像素中)。
      void setClusterMinSize​(int clusterMinSize)
      此参数乘以迭代次数,得到聚类大小的下限。
      void setDistanceFunction​(int distanceFunction)
      k-means 中用于测量两点之间距离的距离函数选择器。
      void setDropThreshold​(float dropThreshold)
      在 k-means 中,移除权重小于或等于给定阈值的质心。
      void setGrayscaleBits​(int grayscaleBits)
      灰度位图的颜色分辨率,以分配的位数表示(即,值为 4 表示使用了 16 级灰度)。
      void setInitSeedIndexes​(MatOfInt initSeedIndexes)
      k-means 算法的初始种子索引。
      void setIterationCount​(int iterationCount)
      k-means 聚类的迭代次数。
      void setJoiningDistance​(float joiningDistance)
      两个质心之间的阈值欧氏距离。
      void setMaxClustersCount​(int maxClustersCount)
      生成的最大聚类数。
      void setSamplingPoints​(MatOfPoint2f samplingPoints)
      设置用于采样输入图像的采样点。
      void setTranslation​(int idx, float value)
      特征空间各个轴的平移。
      void setTranslations​(MatOfFloat translations)
      特征空间各个轴的平移。
      void setWeight​(int idx, float value)
      权重(乘法常数),用于线性拉伸特征空间的各个轴。
      void setWeightA​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeightB​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeightContrast​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeightEntropy​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeightL​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeights​(MatOfFloat weights)
      权重(乘法常数),用于线性拉伸特征空间的各个轴。
      void setWeightX​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWeightY​(float weight)
      权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。
      void setWindowRadius​(int radius)
      用于计算对比度和熵的纹理采样窗口大小(窗口中心始终位于由相应特征样本的 x,y 坐标选择的像素中)。
      • 从类 java.lang.Object 继承的方法

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

      • PCTSignatures

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

      • __fromPtr__

        public static PCTSignatures __fromPtr__​(long addr)
      • create

        public static PCTSignatures create​(int initSampleCount,
                                           int initSeedCount,
                                           int pointDistribution)
        使用采样点和种子计数创建 PCTSignatures 算法。它生成自己的采样点集和聚类种子索引。
        参数
        initSampleCount - 用于图像采样的点数。
        initSeedCount - 初始聚类种子的数量。必须小于或等于 initSampleCount。
        pointDistribution - 点的分布。默认值:UNIFORM。可用:UNIFORM、REGULAR、NORMAL。
        返回
        已创建算法。
      • create

        public static PCTSignatures create​(int initSampleCount,
                                           int initSeedCount)
        使用采样点和种子计数创建 PCTSignatures 算法。它生成自己的采样点集和聚类种子索引。
        参数
        initSampleCount - 用于图像采样的点数。
        initSeedCount - 初始聚类种子的数量。必须小于或等于 initSampleCount。可用:UNIFORM、REGULAR、NORMAL。
        返回
        已创建算法。
      • create

        public static PCTSignatures create​(int initSampleCount)
        使用采样点和种子计数创建 PCTSignatures 算法。它生成自己的采样点集和聚类种子索引。
        参数
        initSampleCount - 用于图像采样的点数。必须小于或等于 initSampleCount。可用:UNIFORM、REGULAR、NORMAL。
        返回
        已创建算法。
      • create

        public static PCTSignatures create()
        使用采样点和种子计数创建 PCTSignatures 算法。它生成自己的采样点集和聚类种子索引。必须小于或等于 initSampleCount。可用:UNIFORM、REGULAR、NORMAL。
        返回
        已创建算法。
      • create

        public static PCTSignatures create​(MatOfPoint2f initSamplingPoints,
                                           int initSeedCount)
        使用预生成的采样点和聚类种子数创建 PCTSignatures 算法。它使用提供的采样点并生成自己的聚类种子索引。
        参数
        initSamplingPoints - 图像采样中使用的采样点。
        initSeedCount - 初始聚类种子的数量。必须小于或等于 initSamplingPoints.size()。
        返回
        已创建算法。
      • create

        public static PCTSignatures create​(MatOfPoint2f initSamplingPoints,
                                           MatOfInt initClusterSeedIndexes)
        使用预生成的采样点和聚类种子索引创建 PCTSignatures 算法。
        参数
        initSamplingPoints - 图像采样中使用的采样点。
        initClusterSeedIndexes - 初始聚类种子的索引。其大小必须小于或等于 initSamplingPoints.size()。
        返回
        已创建算法。
      • computeSignature

        public void computeSignature​(Mat image,
                                     Mat signature)
        计算给定图像的签名。
        参数
        image - 输入图像,类型为 CV_8U。
        signature - 输出计算出的签名。
      • computeSignatures

        public void computeSignatures​(java.util.List<Mat> images,
                                      java.util.List<Mat> signatures)
        并行计算多个图像的签名。
        参数
        images - 输入图像的向量,类型为 CV_8U。
        signatures - 计算出的签名的向量。
      • drawSignature

        public static void drawSignature​(Mat source,
                                         Mat signature,
                                         Mat result,
                                         float radiusToShorterSideRatio,
                                         int borderThickness)
        在源图像中绘制签名并输出结果。签名显示为根据签名权重和颜色显示的圆圈。对比度和熵不显示。
        参数
        source - 源图像。
        signature - 图像签名。
        result - 输出结果。
        radiusToShorterSideRatio - 确定输出图像中签名的最大半径。
        borderThickness - 可视化签名的边框厚度。
      • drawSignature

        public static void drawSignature​(Mat source,
                                         Mat signature,
                                         Mat result,
                                         float radiusToShorterSideRatio)
        在源图像中绘制签名并输出结果。签名显示为根据签名权重和颜色显示的圆圈。对比度和熵不显示。
        参数
        source - 源图像。
        signature - 图像签名。
        result - 输出结果。
        radiusToShorterSideRatio - 确定输出图像中签名的最大半径。
      • drawSignature

        public static void drawSignature​(Mat source,
                                         Mat signature,
                                         Mat result)
        在源图像中绘制签名并输出结果。签名显示为根据签名权重和颜色显示的圆圈。对比度和熵不显示。
        参数
        source - 源图像。
        signature - 图像签名。
        result - 输出结果。
      • generateInitPoints

        public static void generateInitPoints​(MatOfPoint2f initPoints,
                                              int count,
                                              int pointDistribution)
        根据选定的点分布生成初始采样点。
        参数
        initPoints - 将保存生成点的输出向量。
        count - 要生成的点数。
        pointDistribution - 点分布选择器。可用:UNIFORM、REGULAR、NORMAL。注意:生成的坐标范围为 [0..1)
      • getSampleCount

        public int getSampleCount()
        从图像中获取的初始样本数。
        返回
        自动生成
      • getGrayscaleBits

        public int getGrayscaleBits()
        灰度位图的颜色分辨率,以分配的位数表示(即,值为 4 表示使用了 16 级灰度)。灰度位图用于计算对比度和熵值。
        返回
        自动生成
      • setGrayscaleBits

        public void setGrayscaleBits​(int grayscaleBits)
        灰度位图的颜色分辨率,以分配的位数表示(即,值为 4 表示使用了 16 级灰度)。灰度位图用于计算对比度和熵值。
        参数
        grayscaleBits - 自动生成
      • getWindowRadius

        public int getWindowRadius()
        用于计算对比度和熵的纹理采样窗口大小(窗口中心始终位于由相应特征样本的 x,y 坐标选择的像素中)。
        返回
        自动生成
      • setWindowRadius

        public void setWindowRadius​(int radius)
        用于计算对比度和熵的纹理采样窗口大小(窗口中心始终位于由相应特征样本的 x,y 坐标选择的像素中)。
        参数
        radius - 自动生成
      • getWeightX

        public float getWeightX()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightX

        public void setWeightX​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightY

        public float getWeightY()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightY

        public void setWeightY​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightL

        public float getWeightL()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightL

        public void setWeightL​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightA

        public float getWeightA()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightA

        public void setWeightA​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightB

        public float getWeightB()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightB

        public void setWeightB​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightContrast

        public float getWeightContrast()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightContrast

        public void setWeightContrast​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getWeightEntropy

        public float getWeightEntropy()
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        返回
        自动生成
      • setWeightEntropy

        public void setWeightEntropy​(float weight)
        权重(乘数),用于线性拉伸特征空间的各个轴(x,y = 位置;L,a,b = CIE Lab 空间的颜色;c = 对比度。e = 熵)
        参数
        weight - 自动生成
      • getSamplingPoints

        public MatOfPoint2f getSamplingPoints()
        从图像中获取的初始样本。这些采样特征成为聚类的输入。
        返回
        自动生成
      • setWeight

        public void setWeight​(int idx,
                              float value)
        权重(乘法常数),用于线性拉伸特征空间的各个轴。
        参数
        idx - 权重的 ID
        value - 权值 注意: WEIGHT_IDX = 0; X_IDX = 1; Y_IDX = 2; L_IDX = 3; A_IDX = 4; B_IDX = 5; CONTRAST_IDX = 6; ENTROPY_IDX = 7;
      • setWeights

        public void setWeights​(MatOfFloat weights)
        权重(乘法常数),用于线性拉伸特征空间的各个轴。
        参数
        weights - 所有权值。 注意: WEIGHT_IDX = 0; X_IDX = 1; Y_IDX = 2; L_IDX = 3; A_IDX = 4; B_IDX = 5; CONTRAST_IDX = 6; ENTROPY_IDX = 7;
      • setTranslation

        public void setTranslation​(int idx,
                                   float value)
        特征空间各个轴的平移。
        参数
        idx - 翻译的 ID
        value - 翻译值 注意: WEIGHT_IDX = 0; X_IDX = 1; Y_IDX = 2; L_IDX = 3; A_IDX = 4; B_IDX = 5; CONTRAST_IDX = 6; ENTROPY_IDX = 7;
      • setTranslations

        public void setTranslations​(MatOfFloat translations)
        特征空间各个轴的平移。
        参数
        translations - 所有翻译值。 注意: WEIGHT_IDX = 0; X_IDX = 1; Y_IDX = 2; L_IDX = 3; A_IDX = 4; B_IDX = 5; CONTRAST_IDX = 6; ENTROPY_IDX = 7;
      • setSamplingPoints

        public void setSamplingPoints​(MatOfPoint2f samplingPoints)
        设置用于采样输入图像的采样点。
        参数
        samplingPoints - 采样点向量,范围为 [0..1) 注意:采样点数必须大于或等于聚类种子数。
      • getInitSeedIndexes

        public MatOfInt getInitSeedIndexes()
        k-means 算法的初始种子(初始聚类数)。
        返回
        自动生成
      • setInitSeedIndexes

        public void setInitSeedIndexes​(MatOfInt initSeedIndexes)
        k-means 算法的初始种子索引。
        参数
        initSeedIndexes - 自动生成
      • getInitSeedCount

        public int getInitSeedCount()
        k-means 算法的初始种子数(初始聚类数)。
        返回
        自动生成
      • getIterationCount

        public int getIterationCount()
        k-means 聚类的迭代次数。我们使用固定次数的迭代,因为修改后的聚类是修剪聚类(而不是迭代地优化 k 个聚类)。
        返回
        自动生成
      • setIterationCount

        public void setIterationCount​(int iterationCount)
        k-means 聚类的迭代次数。我们使用固定次数的迭代,因为修改后的聚类是修剪聚类(而不是迭代地优化 k 个聚类)。
        参数
        iterationCount - 自动生成
      • getMaxClustersCount

        public int getMaxClustersCount()
        生成的最大聚类数。如果超过此数量,则按权重对聚类进行排序,并裁剪最小的聚类。
        返回
        自动生成
      • setMaxClustersCount

        public void setMaxClustersCount​(int maxClustersCount)
        生成的最大聚类数。如果超过此数量,则按权重对聚类进行排序,并裁剪最小的聚类。
        参数
        maxClustersCount - 自动生成
      • getClusterMinSize

        public int getClusterMinSize()
        此参数乘以迭代次数,得到聚类大小的下限。包含点数少于指定限制的聚类将被丢弃质心,并将点重新分配。
        返回
        自动生成
      • setClusterMinSize

        public void setClusterMinSize​(int clusterMinSize)
        此参数乘以迭代次数,得到聚类大小的下限。包含点数少于指定限制的聚类将被丢弃质心,并将点重新分配。
        参数
        clusterMinSize - 自动生成
      • getJoiningDistance

        public float getJoiningDistance()
        两个质心之间的阈值欧氏距离。如果两个聚类中心之间的距离小于此距离,则其中一个质心将被丢弃,并将点重新分配。
        返回
        自动生成
      • setJoiningDistance

        public void setJoiningDistance​(float joiningDistance)
        两个质心之间的阈值欧氏距离。如果两个聚类中心之间的距离小于此距离,则其中一个质心将被丢弃,并将点重新分配。
        参数
        joiningDistance - 自动生成
      • getDropThreshold

        public float getDropThreshold()
        在 k-means 中,移除权重小于或等于给定阈值的质心。
        返回
        自动生成
      • setDropThreshold

        public void setDropThreshold​(float dropThreshold)
        在 k-means 中,移除权重小于或等于给定阈值的质心。
        参数
        dropThreshold - 自动生成
      • getDistanceFunction

        public int getDistanceFunction()
        k-means 中用于测量两点之间距离的距离函数选择器。
        返回
        自动生成
      • setDistanceFunction

        public void setDistanceFunction​(int distanceFunction)
        k-means 中用于测量两点之间距离的距离函数选择器。可用:L0_25、L0_5、L1、L2、L2SQUARED、L5、L_INFINITY。
        参数
        distanceFunction - 自动生成