类 DescriptorMatcher

  • 直接已知子类
    BFMatcher, FlannBasedMatcher

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

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

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      静态 DescriptorMatcher __fromPtr__​(long addr)  
      void add​(java.util.List<Mat> descriptors)
      添加描述符以训练 CPU (trainDescCollectionis) 或 GPU (utrainDescCollectionis) 描述符集合。
      void clear()
      清除训练描述符集合。
      DescriptorMatcher clone()
      克隆匹配器。
      DescriptorMatcher clone​(boolean emptyTrainData)
      克隆匹配器。
      静态 DescriptorMatcher create​(int matcherType)  
      静态 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 train()
      训练描述符匹配器 (例如,flann 索引)。
      void write​(java.lang.String fileName)  
      • 从类继承的方法 java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 字段详细信息

      • 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。
        返回
        自动生成
      • train

        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 - 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `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 - 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `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` 的大小可能小于查询描述符的数量。指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。
      • 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 - 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `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] 中存储的训练描述符之间允许的匹配项。如果为 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 个,则为更少。指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
      • 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 - 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `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] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
      • radiusMatch

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

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

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

        public DescriptorMatcher clone()
        克隆匹配器。如果 `emptyTrainData` 为 false,则复制参数和训练数据。如果 `emptyTrainData` 为 true,则创建具有当前参数但训练数据为空的对象副本。
        重写
        clone 在类 java.lang.Object 中
        返回
        自动生成
      • create

        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
        重写
        finalize 在类 Algorithm 中
        抛出
        java.lang.Throwable