类 PCTSignatures


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

      构造函数 
      修饰符 构造函数 描述
      保护 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-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, 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 - 自动生成
      • finalize

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