LBP算法提取图片纹理特征图

一、项目目标

采用LBP算法提取图片的纹理特征图。

二、LBP算法原理

LBP指局部二值模式,英文全称:Local Binary Patterns。最初功能为辅助图像局部对比度,并不是一个完整的特征描述子。在数字图像处理和模式识别领域,后来提升为一种有效的纹理描述算子,度量和提取图像局部的纹理信息,对光照具有不变性。LBP有很多变种,或说改进。单纯的LBP记录像素点与其周围像素点的对比信息,或说差异。从图1我们看到,最左边的是原图,标号为example。我们要检测某个像素点的某些信息,在图1中,对于9个方格中中间方格(方格中的数字是像素点灰度值大小),做一个阈值化处理。大于等于中心点像素的,则标记为1,小于的则标记为0。最后将中心像素点周围的11110001二进制数化为十进制数,得到LBP值。

其中进制数11110001的顺序并无硬性要求,只要在同一处理中保持相同的顺序即可。
但是这样的LBP描述特征能力有限,且不具备旋转不变性。很容易想象,如果图片进行了旋转,则LBP值也会随之改变。

三、代码

#include <opencv2/opencv.hpp>
#include <iostream> using namespace cv;
using namespace std; Mat LBP(Mat src_image); int main()
{   Mat img0 = imread("src.jpg");    cv::imshow("原图", img0); LBP(img0);    cvWaitKey(0);   return 0;
} Mat LBP(Mat src_image)
{     //源图像预处理  cv::Mat Image(src_image.rows, src_image.cols, CV_8UC1);  //建立一个与src_image等高等宽的单通道图像Imagecv::Mat lbp(src_image.rows, src_image.cols, CV_8UC1);    //建立一个与src_image等高等宽的单通道图像lbp  if (src_image.channels() == 3)        cvtColor(src_image, Image, CV_BGR2GRAY);   //LBP只能处理灰度图像,转化为灰度图  unsigned center = 0;   //提取需要计算LBP值得中心点的灰度值    unsigned center_lbp = 0;     //计算center处的LBP值  //计算LBP图像   for (int row = 1; row < Image.rows - 1; row++)    {       for (int col = 1; col < Image.cols - 1; col++)        {           center = Image.at<uchar>(row, col);          center_lbp = 0;            if (center <= Image.at<uchar>(row - 1, col - 1))              center_lbp += 1;  //8位二进制数第0位置1       if (center <= Image.at<uchar>(row - 1, col))              center_lbp += 2;  //8位二进制数第1位置1       if (center <= Image.at<uchar>(row - 1, col + 1))             center_lbp += 4;  //8位二进制数第2位置1       if (center <= Image.at<uchar>(row, col - 1))              center_lbp += 8;  //8位二进制数第3位置1       if (center <= Image.at<uchar>(row, col + 1))             center_lbp += 16; //8位二进制数第4位置1       if (center <= Image.at<uchar>(row + 1, col - 1))             center_lbp += 32; //8位二进制数第5位置1       if (center <= Image.at<uchar>(row + 1, col))             center_lbp += 64; //8位二进制数第6位置1       if (center <= Image.at<uchar>(row + 1, col + 1))                center_lbp += 128;     //8位二进制数第7位置1      //把center处计算好的LBP值存放在lbp图像的相应位置lbp.at<uchar>(row, col) = center_lbp;                 }   }   cv::imshow("LBP纹理图", lbp);    waitKey(10);    cv::imshow("灰度图", Image); waitKey(10);    return lbp;
}

四、项目结果

原图:

灰度图:

纹理特征图:

LBP算法提取图片纹理特征图相关推荐

  1. python统计图片的纹理信息_python实现LBP方法提取图像纹理特征实现分类

    题目描述 这篇博文是数字图像处理的大作业. 题目描述:给定40张不同风格的纹理图片,大小为512*512,要求将每张图片分为大小相同的9块,利用其中的5块作为训练集,剩余的4块作为测试集,构建适当的模 ...

  2. 模式识别作业,基于python提取图像纹理特征

    其中的直方图的绘画部分要注意,只写了部分的直方图代码###直接调用skimag库中的函数BLP提取纹理 from skimage import dataimport matplotlib.pyplot ...

  3. 提取图片纹理_Fundamentals Of Computer Graphics 第十一章 纹理映射(中)

    本文翻译虎书第十一章纹理映射的11.3部分 11.3 抗锯齿纹理查询 纹理映射的第二个基本问题是抗锯齿.渲染纹理映射的图像是一个采样过程:将纹理映射到表面上,然后将表面投影到图像中,将在整个图像平面上 ...

  4. php 提取图片的特征,让机器“看见”:图像数据的特征提取方法

    图像特征主要有图像的颜色特征.纹理特征.形状特征和空间关系特征.人眼能够看到图像这种视觉信息,但这种信息并不能让计算机"看见",即计算机并不能处理这种信息. 想要让计算机" ...

  5. OpenGL png图片 纹理贴图,去除png图片黑边

    http://blog.csdn.net/cjkwin/article/details/6011882 用libpng把png图片读出来就可以用读出的数据生成文理了. 将png图片作为纹理贴图,在图片 ...

  6. 基于QT和Node.js的八叉树算法提取图片主题色

    资源下载地址:https://download.csdn.net/download/sheziqiong/85883609 资源下载地址:https://download.csdn.net/downl ...

  7. Opencv的DPM算法提取图片目标

    使用Opencv的DPM算法进行检测行人,并提取存储 使用环境:win10+opencv3.4.0+opencv_contrib3.4.0+VS2017 环境配置方法: 参考该博客 https://w ...

  8. 基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片

    作者 | Raini 出品 | 北京图特摩斯科技有限公司 (thutmose.cn) 说在前头: 局部特征检测方法 斑点Blob检测,LoG检测 , DoG,DoH检测,SIFT算法,SUFT算法 边 ...

  9. 【图像识别算法】像素级提取图像关键特征、内容 --python代码

    像素级提取图像关键特征算法-rgb 关键词:python像素级处理图像,python提取图片关键特征. 基于knn的图像识别技术主要涉及到以下概念: 色彩成像原理 [图像原理]rgb数字图片概念 计算 ...

最新文章

  1. iOS ERROR ITMS - 打包上传报错整理
  2. ASP.NET中EVAL用法大全
  3. *由易到难的讲解动态规划(精)
  4. leetcode1 两数之和
  5. Python《使用Selenium实现自动化操作》
  6. Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
  7. CSS媒体查询,CSS根据不同的分辨率显示不同的样式
  8. 2017.9.23 新Nim游戏 失败总结
  9. inotify java maven_inotifywait + rsync 监控文件并同步
  10. linux中编辑好的源如何保存,Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存!!!否则,就会……...
  11. sqlserver中获取一张表中列的数据
  12. Stata统计学软件
  13. Mysql导出表结构和数据
  14. 力扣(leetcode)66.加一——c语言新手入门
  15. 计算机网络谢希仁第七版课后习题答案(第七章)
  16. DevOps 工程师需要必备哪些技能?
  17. 8个Linux命令及开关机命令
  18. 与【孤尽】老师交流总结
  19. python打印日志方法的使用
  20. 抠图:基于单个原色通道

热门文章

  1. 分子动力学单位转换网站及力场查找网站
  2. 前端简单实现当日时间只展示时间,否则只展示年月日
  3. Docker容器黄金笔记二-安装
  4. 机器学习特征重要性分析
  5. UNet-肝脏肿瘤图像语义分割
  6. iOS学习笔记2(结合项目)--Category和Extension的区别
  7. 如何安装python3.8.2_Python-3.8.2安装
  8. 无线蓝牙鼠标搜索不到?试试对码
  9. 真实世界中的开集识别问题(Open-Set Recognition Problem)
  10. Springboot整合自定义页面swaggerUi