BFMatcher matcher ( NORM_HAMMING );是什么意思?如何使用汉明距离匹配特征点
时间: 2024-03-05 16:49:23 浏览: 30
`BFMatcher matcher ( NORM_HAMMING )` 表示创建一个使用汉明距离(`NORM_HAMMING`)作为距离度量方式的暴力匹配器对象 `matcher`。
使用汉明距离进行特征点匹配,需要先将二进制的特征描述子转换为整数(或布尔型)形式,然后计算两个整数(或布尔型)之间的汉明距离。具体的做法是,将两个二进制数的对应位进行比较,不同位的个数就是它们的汉明距离。例如,对于两个二进制数 `1010` 和 `1110`,它们的汉明距离为 1,因为它们只有最后一位不同。
在 OpenCV 中,使用汉明距离匹配特征点可以按如下步骤进行:
1. 提取图像中的特征点,计算每个特征点的二进制描述子。
2. 将每个二进制描述子转换为整数或布尔型形式,用于计算汉明距离。
3. 创建 `BFMatcher` 对象,并将距离度量方式设置为 `NORM_HAMMING`。
4. 使用 `BFMatcher` 对象的 `match` 函数计算两幅图像之间的匹配,得到匹配点对的列表。
具体实现可以参考以下代码:
```c++
// 提取图像特征点和描述子
vector<KeyPoint> keypoints1, keypoints2;
Mat descriptors1, descriptors2;
Ptr<FeatureDetector> detector = ORB::create();
Ptr<DescriptorExtractor> extractor = ORB::create();
detector->detect(image1, keypoints1);
detector->detect(image2, keypoints2);
extractor->compute(image1, keypoints1, descriptors1);
extractor->compute(image2, keypoints2, descriptors2);
// 将二进制描述子转换为整数形式
Mat descriptors1_int, descriptors2_int;
descriptors1.convertTo(descriptors1_int, CV_32S);
descriptors2.convertTo(descriptors2_int, CV_32S);
// 创建暴力匹配器对象,并设置距离度量方式为 NORM_HAMMING
BFMatcher matcher(NORM_HAMMING);
// 计算匹配点对
vector<DMatch> matches;
matcher.match(descriptors1_int, descriptors2_int, matches);
```
上述代码中,我们首先使用 ORB 算法提取图像的特征点和描述子,然后将描述子转换为整数形式,接着创建一个距离度量方式为 `NORM_HAMMING` 的暴力匹配器对象 `matcher`,最后使用 `match` 函数计算两幅图像之间的匹配。匹配结果将保存在 `matches` 向量中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)