我正在使用 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(/< em>params/) 计算直方图。但是这些函数中哪个矩阵存储了LBP码??
基本上,这 2 个函数(elbp() 和 spatial_histogram())实际计算的是什么?
提前致谢。
最佳答案
如果您查看 training和 prediction步骤,您会看到,两者的工作流程如下所示:
- 收集整个图像的 lbp 特征 (elbp)
- 将 lbp 图像分成 nxn block ,为每个 block 收集直方图,并将它们连接成 1 个大直方图 (spatial_histogram)
旁注:我对 16 邻域运算符的用处有些怀疑。每个补丁需要 64k 直方图 bin,如果您的 img 只有 100x100 和 8x8 补丁,则每个补丁/直方图只有 144 个像素。那将是一个非常稀疏的。你的特征空间将会爆炸! - 少即是多!
祝你好运,黑客愉快!
关于c++ - OpenCV 中 FaceRecognizer 中的 LBP 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066336/