desctype desc(8, 0);//32*8=256 含义

这是ORB特征提取里面出现的代码。

首先 desctype是事先定义的。

typedef vector<uint32_t> DescType;

uint32_t  含义是 unsigned int ,int本身4个字节,一个字节八个bit,共32个bit,这种命名方式方便直接知道变量二进制位数。

例如:typedef unsigned long __uint64_t , long 8字节64个bit

ORB特征提取中,一个特征点的描述子需要512个点,也就是256个点对,比较256个点对的灰度值,得到一个长256的二进制串的描述子,这里不清楚可以去看一下ORB特征提取匹配的原理。

DescType desc(8, 0)

根据之上的定义,这行代码等价于

vector<uint32_t> desc(8, 0)

vector  desc(8,0) 赋值代表了一个8维unsigned int 的Vector,  且初始值都为0。

desc有8个int元素,每个int4个字节,每个字节8个bit,8维x4字节x8bit,等于一个256bit的容器,刚好放下一个特征点的描述子。可以认为定义了单个描述子类型。

扫描二维码关注公众号,回复: 14425004 查看本文章

代码中还出现了

vector<DescType> &descriptors//这里其实是一个二维Vector

类型为DescTyped的动态数组Vector,用来放入一帧所有的描述子,且下标与vector<cv::KeyPoint> &keypoints特征点的Vector对应。

猜你喜欢

转载自blog.csdn.net/weixin_48464886/article/details/119606934