为啥 DLIB 计算 LBP 统一描述符的平方根?

Posted

技术标签:

【中文标题】为啥 DLIB 计算 LBP 统一描述符的平方根?【英文标题】:Why does DLIB compute the square root of LBP uniform descriptor?为什么 DLIB 计算 LBP 统一描述符的平方根? 【发布时间】:2016-09-20 11:48:24 【问题描述】:

我正在使用 dlib 库从给定图像中提取 LBP 统一。 我正在使用下一个函数(http://dlib.net/dlib/image_transforms/lbp_abstract.h.html#extract_uniform_lbp_descriptors),但我不明白第三个参数(cell_size)的确切功能是什么。在文档中说下一个:

我们将取所有直方图元素的平方根。也就是说,#feats[i] 是其对应窗口中出现的 LBP 数量的平方根。

我不知道什么时候说“#feats[i] 是 LBP 数量的平方根”。指的是什么? 如果有人可以帮助我,我将不胜感激... 谢谢!

【问题讨论】:

【参考方案1】:

在https://en.wikipedia.org/wiki/Local_binary_patterns查看LBP的描述。

实际上,您将图像划分为方形单元格,并为每个单元格构建 59 位直方图,将单元格中的每个点与其相邻点进行比较。第三个参数 (cell_size) 定义了这些单元格的大小。 然后来自所有细胞的直方图被连接成一个长的 59*(细胞数)结果向量 std::vector& 壮举。

【讨论】:

【参考方案2】:

人们普遍认为,使用平方根 (Hellinger) 核代替标准欧几里德距离来测量特征分布之间的相似性可以提高分类准确度。

对于两个 LBP 直方图

他们的Hellinger distance 定义为:

Hellinger 核分类器可以通过使用 LBP 直方图的平方根作为特征向量,并将欧几里德距离作为差异度量,以一种直接的方式实现。这就是为什么 LBP 的数量在参考代码中是平方根的原因。

【讨论】:

以上是关于为啥 DLIB 计算 LBP 统一描述符的平方根?的主要内容,如果未能解决你的问题,请参考以下文章

LBP扩展与多尺度表达

使用 LBP 训练 Haar 级联的问题

为啥我无法在我的 centos 上安装 dlib 库?

为啥 dlib 面部地标检测器会抛出 RuntimeError?

学习LBP特征

为啥我无法在 Anaconda 或 python 中正确安装 dlib