1

我正在使用 OpenCV 和 C++ 处理一些图像矩阵的 LBP 直方图,我需要计算这些矩阵的 LBP(1,8) 和 LBP(2,16)。最新版本的 OpenCV 直接支持使用默认 LBP(1,8) 运算符计算 LBP FaceRecognizer,我可以在实例化对象时通过设置值来计算 LBP(2,16)。

我的问题是哪个矩阵存储给定输入矩阵的 LBP 代码?深入实现,我知道predict(InputArray _src)函数首先调用elbp(src, _radius, _neighbors)再调用spatial_histogram(/ params /)来计算直方图。但是这些函数中的哪个矩阵存储 LBP 代码?

基本上,这两个函数(elbp() 和 spatial_histogram())实际计算的是什么?

提前致谢。

4

1 回答 1

1

如果您查看训练预测步骤,您会发现两者的工作流程如下所示:

  • 收集整个图像的 lbp 特征(elbp)
  • 将 lbp 图像拆分为 nxn 个补丁,为每个补丁收集一个直方图,并将它们连接到 1 个单个大直方图 (spatial_histogram)

旁注:我对 16 邻居运算符的有用性有一些疑问。每个补丁需要 64k 直方图箱,如果您的 img 只有 100x100 和 8x8 补丁,则每个补丁/直方图只有 144 个像素。那将是一个非常稀疏的。你的特征空间会爆炸!- 这里少可能多!

祝你好运,快乐的黑客!

于 2013-09-28T11:59:43.617 回答