LBP算法提取图片纹理特征图
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算法提取图片纹理特征图相关推荐
- python统计图片的纹理信息_python实现LBP方法提取图像纹理特征实现分类
题目描述 这篇博文是数字图像处理的大作业. 题目描述:给定40张不同风格的纹理图片,大小为512*512,要求将每张图片分为大小相同的9块,利用其中的5块作为训练集,剩余的4块作为测试集,构建适当的模 ...
- 模式识别作业,基于python提取图像纹理特征
其中的直方图的绘画部分要注意,只写了部分的直方图代码###直接调用skimag库中的函数BLP提取纹理 from skimage import dataimport matplotlib.pyplot ...
- 提取图片纹理_Fundamentals Of Computer Graphics 第十一章 纹理映射(中)
本文翻译虎书第十一章纹理映射的11.3部分 11.3 抗锯齿纹理查询 纹理映射的第二个基本问题是抗锯齿.渲染纹理映射的图像是一个采样过程:将纹理映射到表面上,然后将表面投影到图像中,将在整个图像平面上 ...
- php 提取图片的特征,让机器“看见”:图像数据的特征提取方法
图像特征主要有图像的颜色特征.纹理特征.形状特征和空间关系特征.人眼能够看到图像这种视觉信息,但这种信息并不能让计算机"看见",即计算机并不能处理这种信息. 想要让计算机" ...
- OpenGL png图片 纹理贴图,去除png图片黑边
http://blog.csdn.net/cjkwin/article/details/6011882 用libpng把png图片读出来就可以用读出的数据生成文理了. 将png图片作为纹理贴图,在图片 ...
- 基于QT和Node.js的八叉树算法提取图片主题色
资源下载地址:https://download.csdn.net/download/sheziqiong/85883609 资源下载地址:https://download.csdn.net/downl ...
- Opencv的DPM算法提取图片目标
使用Opencv的DPM算法进行检测行人,并提取存储 使用环境:win10+opencv3.4.0+opencv_contrib3.4.0+VS2017 环境配置方法: 参考该博客 https://w ...
- 基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片
作者 | Raini 出品 | 北京图特摩斯科技有限公司 (thutmose.cn) 说在前头: 局部特征检测方法 斑点Blob检测,LoG检测 , DoG,DoH检测,SIFT算法,SUFT算法 边 ...
- 【图像识别算法】像素级提取图像关键特征、内容 --python代码
像素级提取图像关键特征算法-rgb 关键词:python像素级处理图像,python提取图片关键特征. 基于knn的图像识别技术主要涉及到以下概念: 色彩成像原理 [图像原理]rgb数字图片概念 计算 ...
最新文章
- iOS ERROR ITMS - 打包上传报错整理
- ASP.NET中EVAL用法大全
- *由易到难的讲解动态规划(精)
- leetcode1 两数之和
- Python《使用Selenium实现自动化操作》
- Mr.J-- jQuery学习笔记(十四)--动画显示隐藏
- CSS媒体查询,CSS根据不同的分辨率显示不同的样式
- 2017.9.23 新Nim游戏 失败总结
- inotify java maven_inotifywait + rsync 监控文件并同步
- linux中编辑好的源如何保存,Linux下, Eclipse C/C++ IDE下编辑好C/C++源程序之后要先保存!!!否则,就会……...
- sqlserver中获取一张表中列的数据
- Stata统计学软件
- Mysql导出表结构和数据
- 力扣(leetcode)66.加一——c语言新手入门
- 计算机网络谢希仁第七版课后习题答案(第七章)
- DevOps 工程师需要必备哪些技能?
- 8个Linux命令及开关机命令
- 与【孤尽】老师交流总结
- python打印日志方法的使用
- 抠图:基于单个原色通道