类 DescriptorMatcher

  • 直接已知子类
    BFMatcher, FlannBasedMatcher

    public class DescriptorMatcher
    extends Algorithm
    关键点描述符匹配的抽象基类。它有两组匹配方法:用于将图像的描述符与另一幅图像或一组图像进行匹配。
    • 构造函数摘要

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

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      static DescriptorMatcher __fromPtr__​(long addr)  
      void add​(java.util.List<Mat> descriptors)
      添加描述符以训练 CPU(trainDescCollectionis) 或 GPU(utrainDescCollectionis) 描述符集合。
      void clear()
      清除训练描述符集合。
      DescriptorMatcher clone()
      克隆匹配器。
      DescriptorMatcher clone​(boolean emptyTrainData)
      克隆匹配器。
      static DescriptorMatcher create​(int matcherType)  
      static DescriptorMatcher create​(java.lang.String descriptorMatcherType)
      使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。
      boolean empty()
      如果两个集合中都没有训练描述符,则返回 true。
      protected void finalize()  
      java.util.List<Mat> getTrainDescriptors()
      返回指向训练描述符集合 trainDescCollection 的常量链接。
      boolean isMaskSupported()
      如果描述符匹配器支持屏蔽允许的匹配,则返回 true。
      void knnMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k)  
      void knnMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks)  
      void knnMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks, boolean compactResult)  
      void knnMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k)
      为查询集中的每个描述符查找 k 个最佳匹配。
      void knnMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask)
      为查询集中的每个描述符查找 k 个最佳匹配。
      void knnMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask, boolean compactResult)
      为查询集中的每个描述符查找 k 个最佳匹配。
      void match​(Mat queryDescriptors, MatOfDMatch matches)  
      void match​(Mat queryDescriptors, MatOfDMatch matches, java.util.List<Mat> masks)  
      void match​(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches)
      为查询集中的每个描述符查找最佳匹配。
      void match​(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches, Mat mask)
      为查询集中的每个描述符查找最佳匹配。
      void radiusMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)  
      void radiusMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks)  
      void radiusMatch​(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks, boolean compactResult)  
      void radiusMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
      对于每个查询描述符,查找距离不超过指定距离的训练描述符。
      void radiusMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask)
      对于每个查询描述符,查找距离不超过指定距离的训练描述符。
      void radiusMatch​(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask, boolean compactResult)
      对于每个查询描述符,查找距离不超过指定距离的训练描述符。
      void read​(java.lang.String fileName)  
      void 训练()
      训练描述符匹配器 训练描述符匹配器(例如,FLANN索引)。
      void write​(java.lang.String fileName)  
      • 继承自类 java.lang.Object的方法

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 字段详情

      • FLANNBASED

        public static final int FLANNBASED
        另请参见
        常量字段值
      • BRUTEFORCE

        public static final int BRUTEFORCE
        另请参见
        常量字段值
      • BRUTEFORCE_L1

        public static final int BRUTEFORCE_L1
        另请参见
        常量字段值
      • BRUTEFORCE_HAMMING

        public static final int BRUTEFORCE_HAMMING
        另请参见
        常量字段值
      • BRUTEFORCE_HAMMINGLUT

        public static final int BRUTEFORCE_HAMMINGLUT
        另请参见
        常量字段值
      • BRUTEFORCE_SL2

        public static final int BRUTEFORCE_SL2
        另请参见
        常量字段值
    • 构造函数详情

      • DescriptorMatcher

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

      • add

        public void add​(java.util.List<Mat> descriptors)
        添加描述符以训练 CPU(trainDescCollectionis) 或 GPU(utrainDescCollectionis) 描述符集合。如果集合不为空,则新描述符将添加到现有训练描述符中。
        参数
        descriptors - 要添加的描述符。每个 descriptors[i] 是一组来自同一训练图像的描述符。
      • getTrainDescriptors

        public java.util.List<Mat> getTrainDescriptors()
        返回指向训练描述符集合 trainDescCollection 的常量链接。
        返回
        自动生成
      • clear

        public void clear()
        清除训练描述符集合。
        覆盖
        clear 在类 Algorithm
      • empty

        public boolean empty()
        如果两个集合中都没有训练描述符,则返回 true。
        覆盖
        empty 在类 Algorithm
        返回
        自动生成
      • isMaskSupported

        public boolean isMaskSupported()
        如果描述符匹配器支持屏蔽允许的匹配,则返回 true。
        返回
        自动生成
      • 训练

        public void train()
        训练描述符匹配器 训练描述符匹配器(例如,FLANN索引)。在所有匹配方法中,每次匹配前都会运行 train() 方法。一些描述符匹配器(例如,BruteForceMatcher)具有此方法的空实现。其他匹配器会真正训练其内部结构(例如,FlannBasedMatcher 训练 flann::Index)。
      • match

        public void match​(Mat queryDescriptors,
                          Mat trainDescriptors,
                          MatOfDMatch matches,
                          Mat mask)
        为查询集中的每个描述符查找最佳匹配。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 匹配项。如果查询描述符在 mask 中被屏蔽,则不会为此描述符添加匹配项。因此,matches 的大小可能小于查询描述符的数量。
        mask - 指定描述符输入查询和训练矩阵之间允许匹配的掩码。在此方法的第一个变体中,训练描述符作为输入参数传递。在此方法的第二个变体中,使用由 DescriptorMatcher::add 设置的训练描述符集合。可以传递可选的掩码(或掩码)来指定哪些查询和训练描述符可以匹配。也就是说,只有当 mask.at<uchar>(i,j) 非零时,queryDescriptors[i] 才能与 trainDescriptors[j] 匹配。
      • match

        public void match​(Mat queryDescriptors,
                          Mat trainDescriptors,
                          MatOfDMatch matches)
        为查询集中的每个描述符查找最佳匹配。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 匹配项。如果查询描述符在 mask 中被屏蔽,则不会为此描述符添加匹配项。因此,matches 的大小可能小于查询描述符的数量。在该方法的第一个变体中,训练描述符作为输入参数传递。在此方法的第二个变体中,使用由 DescriptorMatcher::add 设置的训练描述符集合。可以传递可选的掩码(或掩码)来指定哪些查询和训练描述符可以匹配。也就是说,只有当 mask.at<uchar>(i,j) 非零时,queryDescriptors[i] 才能与 trainDescriptors[j] 匹配。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             Mat trainDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k,
                             Mat mask,
                             boolean compactResult)
        为查询集中的每个描述符查找 k 个最佳匹配。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        mask - 指定输入查询和训练描述符矩阵之间允许匹配的掩码。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 为每个查询描述符找到的最佳匹配数,如果查询描述符的总可能匹配数少于 k,则更少。
        compactResult - 当掩码(或掩码)不为空时使用的参数。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符查找几个最佳匹配项。匹配项按距离递增顺序返回。有关查询和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             Mat trainDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k,
                             Mat mask)
        为查询集中的每个描述符查找 k 个最佳匹配。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        mask - 指定输入查询和训练描述符矩阵之间允许匹配的掩码。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 为每个查询描述符找到的最佳匹配数,如果查询描述符的总可能匹配数少于 k,则更少。false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符查找几个最佳匹配项。匹配项按距离递增顺序返回。有关查询和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             Mat trainDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k)
        为查询集中的每个描述符查找 k 个最佳匹配。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 为每个查询描述符找到的最佳匹配数,如果查询描述符的总可能匹配数少于 k,则更少。false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符查找几个最佳匹配项。匹配项按距离递增顺序返回。有关查询和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                Mat trainDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance,
                                Mat mask,
                                boolean compactResult)
        对于每个查询描述符,查找距离不超过指定距离的训练描述符。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 找到的匹配项。
        compactResult - 当掩码(或掩码)不为空时使用的参数。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
        mask - 指定输入查询和训练描述符矩阵之间允许匹配的掩码。对于每个查询描述符,该方法都会查找这样的训练描述符:查询描述符和训练描述符之间的距离等于或小于 maxDistance。找到的匹配项按距离递增顺序返回。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                Mat trainDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance,
                                Mat mask)
        对于每个查询描述符,查找距离不超过指定距离的训练描述符。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 找到的匹配项。false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
        mask - 指定输入查询和训练描述符矩阵之间允许匹配的掩码。对于每个查询描述符,该方法都会查找这样的训练描述符:查询描述符和训练描述符之间的距离等于或小于 maxDistance。找到的匹配项按距离递增顺序返回。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                Mat trainDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance)
        对于每个查询描述符,查找距离不超过指定距离的训练描述符。
        参数
        queryDescriptors - 查询描述符集。
        trainDescriptors - 训练描述符集。此集合不会添加到类对象中存储的训练描述符集合中。
        matches - 找到的匹配项。false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!对于每个查询描述符,该方法都会查找这样的训练描述符:查询描述符和训练描述符之间的距离等于或小于 maxDistance。找到的匹配项按距离递增顺序返回。
      • match

        public void match​(Mat queryDescriptors,
                          MatOfDMatch matches,
                          java.util.List<Mat> masks)
        参数
        queryDescriptors - 查询描述符集。
        matches - 匹配项。如果查询描述符在 mask 中被屏蔽,则不会为此描述符添加匹配项。因此,matches 的大小可能小于查询描述符的数量。
        masks - 遮罩集。每个 masks[i] 指定了输入查询描述符和第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配。
      • match

        public void match​(Mat queryDescriptors,
                          MatOfDMatch matches)
        参数
        queryDescriptors - 查询描述符集。
        matches - 匹配结果。如果查询描述符在 mask 中被屏蔽,则不会为该描述符添加匹配。因此,matches 的大小可能小于查询描述符的数量。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k,
                             java.util.List<Mat> masks,
                             boolean compactResult)
        参数
        queryDescriptors - 查询描述符集。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 为每个查询描述符找到的最佳匹配数,如果查询描述符的总可能匹配数少于 k,则更少。
        masks - 遮罩集。每个 masks[i] 指定了输入查询描述符和第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配。
        compactResult - 当掩码(或掩码)不为空时使用的参数。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k,
                             java.util.List<Mat> masks)
        参数
        queryDescriptors - 查询描述符集。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 为每个查询描述符找到的最佳匹配数,如果查询描述符的总可能匹配数少于 k,则更少。
        masks - 遮罩集。每个 masks[i] 指定了输入查询描述符和第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含完全被屏蔽的查询描述符的匹配。
      • knnMatch

        public void knnMatch​(Mat queryDescriptors,
                             java.util.List<MatOfDMatch> matches,
                             int k)
        参数
        queryDescriptors - 查询描述符集。
        matches - 匹配项。每个 matches[i] 是相同查询描述符的 k 个或更少的匹配项。
        k - 每个查询描述符找到的最佳匹配数量,如果查询描述符的总可能匹配数少于 k,则数量更少。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance,
                                java.util.List<Mat> masks,
                                boolean compactResult)
        参数
        queryDescriptors - 查询描述符集。
        matches - 找到的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
        masks - 遮罩集。每个 masks[i] 指定了输入查询描述符和第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配。
        compactResult - 当掩码(或掩码)不为空时使用的参数。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含针对完全屏蔽的查询描述符的匹配项。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance,
                                java.util.List<Mat> masks)
        参数
        queryDescriptors - 查询描述符集。
        matches - 找到的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
        masks - 遮罩集。每个 masks[i] 指定了输入查询描述符和第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含完全被屏蔽的查询描述符的匹配。
      • radiusMatch

        public void radiusMatch​(Mat queryDescriptors,
                                java.util.List<MatOfDMatch> matches,
                                float maxDistance)
        参数
        queryDescriptors - 查询描述符集。
        matches - 找到的匹配项。
        maxDistance - 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
      • 写入

        public void write​(java.lang.String fileName)
      • 读取

        public void read​(java.lang.String fileName)
      • clone

        public DescriptorMatcher clone​(boolean emptyTrainData)
        克隆匹配器。
        参数
        emptyTrainData - 如果 emptyTrainData 为 false,则该方法会创建对象的深拷贝,即复制参数和训练数据。如果 emptyTrainData 为 true,则该方法会创建一个具有当前参数但训练数据为空的对象副本。
        返回
        自动生成
      • clone

        public DescriptorMatcher clone()
        克隆匹配器。即复制参数和训练数据。如果 emptyTrainData 为 true,则该方法会创建一个具有当前参数但训练数据为空的对象副本。
        覆盖
        java.lang.Object 中的 clone 方法
        返回
        自动生成
      • 创建

        public static DescriptorMatcher create​(java.lang.String descriptorMatcherType)
        使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。
        参数
        descriptorMatcherType - 描述符匹配器类型。目前支持以下匹配器类型:
        • BruteForce(它使用 L2 距离)
        • BruteForce-L1
        • BruteForce-Hamming
        • BruteForce-Hamming(2)
        • FlannBased
        返回
        自动生成
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        覆盖
        Algorithm 中的 finalize 方法
        抛出
        java.lang.Throwable