PCTSignatures 类


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

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

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      static PCTSignatures __fromPtr__​(long addr)  
      void computeSignature​(Mat image, Mat signature)
      计算给定图像的特征向量。
      void computeSignatures​(java.util.List<Mat> images, java.util.List<Mat> signatures)
      并行计算多个图像的特征向量。
      static PCTSignatures create()
      使用样本数和种子数创建 PCTSignatures 算法。
      static PCTSignatures create​(int initSampleCount)
      使用样本数和种子数创建 PCTSignatures 算法。
      static PCTSignatures create​(int initSampleCount, int initSeedCount)
      使用样本数和种子数创建 PCTSignatures 算法。
      static PCTSignatures create​(int initSampleCount, int initSeedCount, int pointDistribution)
      使用样本数和种子数创建 PCTSignatures 算法。
      static PCTSignatures create​(MatOfPoint2f initSamplingPoints, int initSeedCount)
      使用预生成的采样点和聚类种子数创建 PCTSignatures 算法。
      static 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)
      在源图像中绘制特征向量并输出结果。
      protected void finalize()  
      static void generateInitPoints​(MatOfPoint2f initPoints, int count, int pointDistribution)
      根据选择的点分布生成初始采样点。
      int getClusterMinSize()
      此参数乘以迭代索引给出聚类大小的下限。
      int getDistanceFunction()
      用于测量 k 均值中两点之间距离的距离函数选择器。
      float getDropThreshold()
      删除 k 均值中权重小于或等于给定阈值的质心。
      int getGrayscaleBits()
      以分配的位数表示的灰度位图的颜色分辨率(即,值 4 表示使用 16 个灰度)。
      int getInitSeedCount()
      k 均值算法的初始种子数(初始聚类数)。
      MatOfInt getInitSeedIndexes()
      k 均值算法的初始种子(初始聚类数)。
      int getIterationCount()
      k 均值聚类的迭代次数。
      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 均值中两点之间距离的距离函数选择器。
      void setDropThreshold​(float dropThreshold)
      删除 k 均值中权重小于或等于给定阈值的质心。
      void setGrayscaleBits​(int grayscaleBits)
      以分配的位数表示的灰度位图的颜色分辨率(即,值 4 表示使用 16 个灰度)。
      void setInitSeedIndexes​(MatOfInt initSeedIndexes)
      k 均值算法的初始种子索引。
      void setIterationCount​(int iterationCount)
      k 均值聚类的迭代次数。
      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, 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 均值算法的初始种子(初始聚类数)。
        返回值
        自动生成
      • setInitSeedIndexes

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

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

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

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

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

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

        public int getClusterMinSize()
        setClusterMinSize
        返回值
        自动生成
      • 此参数乘以迭代索引给出聚类大小的下限。包含少于限制指定的点的聚类将被忽略其质心,并且点将被重新分配。

        public void setClusterMinSize​(int clusterMinSize)
        setClusterMinSize
        参数
        clusterMinSize - 自动生成
      • getJoiningDistance

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

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

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

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

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

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

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