gpt4 book ai didi

c++ - 使用冲浪描述符+弗兰匹配器的静态手势识别

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:41 25 4
gpt4 key购买 nike

我正在尝试仅对 6 个手势实现静态手势识别。因为手可能会转动一点,所以我尝试了 surf + flann,因为它们是不变的。这些图像是二进制的,当我比较它们时,我得到了不好的结果,我什至不理解它们。例如,对于相同的图像,我得到 1 或 2 个好的关键点,对于不同的图像,我得到 5 或 6 个好的关键点。

对于这个案例,你有什么实现手势识别的建议吗?

训练和查询图像的结果:

enter image description here

double max_dist = 0, min_dist = 100; 

matcher.match(gestoDescriptors,t1descriptors,matches);

for (int i=0; i<gestoDescriptors.rows; i++){
double dist = matches[i].distance;
if (dist<min_dist)
min_dist = dist;
if (dist>max_dist)
max_dist=dist;
}

vector<DMatch>t1_good_matches;
for (int i=0; i<gestoDescriptors.rows; i++){
if (matches[i].distance<=max(2*min_dist,0.02)){
t1_good_matches.push_back(matches[i]);
}
}

//-- Draw only "good" matches
Mat img_matches;
drawMatches(gestoImage,gestoKeypoints,train1,t1keypoints,t1_good_matches,
img_matches, Scalar::all(-1), Scalar::all(-1),
vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );

最佳答案

我没有广泛使用 SURF 进行特征提取,但据我所知,图像具有合理的“表现力”很重要,因为存在具有独特属性的各种兴趣点。我认为您遇到的主要问题是手的图像(尤其是经过阈值处理以生成二进制图像的图像)没有很多独特的兴趣点。特别是由于 SURF 特征的缩放和旋转不变性,您的图像中很少有特定手势独有的。

您可能想尝试使用二值图像作为 mask 来移除背景,然后在全色(或灰度)手势上尝试 SURF 和 FLANN 逻辑。

从长远来看,如果您真的想构建高质量的手势识别系统,我认为您最好研究卷积神经网络。 CNN 对图像的预处理要少得多,特别适合此类应用。

关于c++ - 使用冲浪描述符+弗兰匹配器的静态手势识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36528498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com