纹理特征提取(1):LBP

本文介绍了纹理特征提取中的LBP(Local Binary Patterns)方法,包括基本算法、灰度直方图统计以及旋转不变性的实现。通过双线性插值处理圆形邻域的空缺,并探讨了Ojala的等价模式概念。
摘要由CSDN通过智能技术生成

最近在处理图片分类,想用纹理特征作输入。关于这方面的整理已经有很多,不过还是系统列一下,会掌握深刻一点。

LBP(Local Binary Patterns):

基本算法就是,对于一个像素值的邻域上的值,比中心像素值小的,置0;比中心像素值大的,置1.这样再根据邻域的0、1值,生成二进制数。这样我们最后会得到一张纹理图。但往往不直接用这张图片作为训练输入,而是使用灰度直方图。统计每个灰度的值之后,用统计后的图作为输入。在实现上,还会将纹理图分成不同的grid,对每一个grid进行统计。假如x、y方向分了3、4份,则有12份grids。假如灰度值有256个,则最后统计的直方图大小为12*256(rows*cols)。

实现时往往使用圆形邻域。但圆形邻域的像素位置上可能并没有像素值,因此需要用到双线性插值计算。代码:

// 圆形邻域LBP
Mat Pre::circleNeighbor() {
    Mat result;
    result.create(img.rows - radius * 2, img.cols - radius * 2, img.type());
    result.setTo(0);

    for (int n = 0; n<neighbors; n++)
    {
        // sample points
        float x = static_cast<float>(radius * cos(2.0*CV_PI*n / static_cast<float>(neighbors)));//这一步没有细看 找采样点坐标
        float y = static_cast<float>(-radius * s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值