创建LBP直方图
Creating LBP histogram
我已经能够实现一个基本的本地二进制模式(LBP),没有插值。代码如下:(OpenCV)
int center = 0;
int center_lbp = 0;
for (int row = 1; row < Image.rows; row++)
{
for (int col = 1; col < Image.cols; col++)
{
center = Image.at<int>(row, col);
center_lbp = 0;
if ( center <= Image.at<int>(row-1, col-1) )
center_lbp += 1;
if ( center <= Image.at<int>(row-1, col) )
center_lbp += 2;
if ( center <= Image.at<int>(row-1, col+1) )
center_lbp += 4;
if ( center <= Image.at<int>(row, col-1) )
center_lbp += 8;
if ( center <= Image.at<int>(row, col+1) )
center_lbp += 16;
if ( center <= Image.at<int>(row+1, col-1) )
center_lbp += 32;
if ( center <= Image.at<int>(row+1, col) )
center_lbp += 64;
if ( center <= Image.at<int>(row+1, col+1) )
center_lbp += 128;
cout << "center lbp value: " << center_lbp << endl;
LBPImage.at<int>(row, col) = center_lbp;
}
}
阅读很多东西…但不知道如何用统一的模式概念创建直方图…我检查了一些链接…没什么大不了的....有谁能帮帮我吗?
谢谢!
您的代码似乎是使用半径r=1的8邻域LBP。所以你可以得到最多256(2^8)个不同的值。要构造直方图,声明一个包含单行和256列(bin)的矩阵,并将其初始化为0:-
Mat H(1,256,CV_8UC1,Scalar::all(0));
现在对于每个中心像素(像素不在边界),在应用LBP之后,您将获得长度为8的二进制字符串,并且它的十进制编码(存储在代码段中的center_lbp
变量中)表示直方图的相应bin。因此,计算完center_lbp
后,只需将值增加到直方图的相应bin中,如下所示:-
H。at
<uchar>
(center_lbp)+=1;
在为每个中心像素解析图像后,您将获得该图像的LBP直方图。
LBP With Uniform Patterns:-
如果圆形二进制模式(顺时针)包含从0到1的最大2次跃迁,则称为均匀LBP,反之亦然。例如:- 00111000是统一的模式,但10111000不是。构建均匀模式的LBP直方图,规则为-
- 每个统一的图案在直方图中都有一个独特的bin。
- 所有不均匀的图案将在直方图中放入单个bin。
对于p个相邻点,我们可以得到最大p*(p-1)+2个均匀模式。因此,均匀模式的直方图将包含p*(p-1)+3个箱子。
构造直方图:-
- 通过对每个中心像素应用LBP得到二进制模式。
- 检查图案是否统一
- 如果均匀,则将此直方图模式的保留bin中的bin值增加1。你必须有一些映射标准来映射直方图的唯一bin中的统一模式。
- 否则为非统一模式。因此,对于直方图的所有非均匀模式,将保留的bin(例如-最后一个bin)中的bin值增加1。
相关文章:
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 二进制图像的空间直方图
- 如何在c++中仅使用for循环打印此代码的垂直直方图
- 创建直方图以显示每个类别/箱中带有星号的项目数量
- 打印带C++的直方图
- 将直方图的 2D 数组传递给函数 (C++)?
- 如何在OpenCV 3.4.7中计算CV_32FC1 cv::GpuMat图像的(范围)直方图
- 如何平行化直方图添加?
- 根C++直方图中的错误
- 动态分配许多 Boost::直方图对象
- 使用 OpenCV 原始指针和 lambda 作为直方图的不同结果
- 如何计算图像中每个块的直方图,然后将它们连接起来?
- C++:使用数组、指针和 for 循环制作直方图。我就在那里,我可能想得太辛苦了
- 将两个 1D 直方图合并为一个
- 使用STD :: MAP在直方图峰周围的平均值
- 使用标准库或Boost库从一组数据中计算直方图
- OPENCV MAT问题:直方图和此循环之间的差异
- 优化直方图更新
- 如何规范化从不同大小的补丁中获得的 LBP 直方图
- 创建LBP直方图