2013-09-28 27 views
1

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

我的问题是哪个矩阵存储给定输入矩阵的LBP代码?在实施深下去,我才知道,预测(InputArray _src)函数首先调用ELBP(SRC,_radius,_neighbors),然后spatial_histogram(/ PARAMS /)来计算直方图。但是这些函数中的哪个矩阵存储LBP代码?

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

在此先感谢。

回答

1

,如果你看一下trainingprediction一步,你会看到,这两个工作流程是这样的:

  • 收集整个图像的LBP特征(ELBP)
  • 该LBP-图像分割成n×n个补丁,收集每个补丁的直方图,并且将它们Concat的1个单个大直方图(spatial_histogram)

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

祝你好运,快乐黑客!

+0

对于具有8x8补丁的dims 100x100图像,我认为不是。的补丁将是144和64像素/补丁。是的,当我在spatial_histogram()函数之后生成矩阵的直方图时,它们非常稀疏。几乎没有一些酒吧可以看到。我的图像变暗92x112。任何解决方案?我认为在OpenCV中,没有。使用的箱子仅限于所有情况下的256箱子。 – ahirnish