python实现LBP方法提取图像纹理特征实现分类的步骤


Posted in Python onJuly 11, 2019

题目描述

这篇博文是数字图像处理的大作业.

题目描述:给定40张不同风格的纹理图片,大小为512*512,要求将每张图片分为大小相同的9块,利用其中的5块作为训练集,剩余的4块作为测试集,构建适当的模型实现图片的分类.

图片如下图所示:

python实现LBP方法提取图像纹理特征实现分类的步骤

分析:由于数据集太小,所以神经网络模型并不适合此类的图像处理.就需要寻找方法提取图像的纹理信息.本文采用LBP的方法提取图像的纹理信息,然后转化成直方图作为图像的特征,然后使用多分类的方法进行分类.

环境

python2.7,jupyter notebook,anaconda

实现

读取数据

Numpy包数组操作API格式化数据

def loadPicture():
  train_index = 0;
  test_index = 0;
  train_data = np.zeros( (200,171,171) );
  test_data = np.zeros( (160,171,171) );
  train_label = np.zeros( (200) );
  test_label = np.zeros( (160) );
  for i in np.arange(40):
    image = mpimg.imread('picture/'+str(i)+'.tiff');
    data = np.zeros( (513,513) );
    data[0:image.shape[0],0:image.shape[1]] = image;
    #切割后的图像位于数据的位置
    index = 0;
    #将图片分割成九块
    for row in np.arange(3):
      for col in np.arange(3):
        if index<5:
          train_data[train_index,:,:] = data[171*row:171*(row+1),171*col:171*(col+1)];
          train_label[train_index] = i;
          train_index+=1;
        else:
          test_data[test_index,:,:] = data[171*row:171*(row+1),171*col:171*(col+1)];
          test_label[test_index] = i;
          test_index+=1;
        index+=1;
  return train_data,test_data,train_label,test_label;

特征提取

LBP特征提取方法

radius = 1;
n_point = radius * 8;

def texture_detect():
  train_hist = np.zeros( (200,256) );
  test_hist = np.zeros( (160,256) );
  for i in np.arange(200):
    #使用LBP方法提取图像的纹理特征.
    lbp=skft.local_binary_pattern(train_data[i],n_point,radius,'default');
    #统计图像的直方图
    max_bins = int(lbp.max() + 1);
    #hist size:256
    train_hist[i], _ = np.histogram(lbp, normed=True, bins=max_bins, range=(0, max_bins));

  for i in np.arange(160):
    lbp = skft.local_binary_pattern(test_data[i],n_point,radius,'default');
    #统计图像的直方图
    max_bins = int(lbp.max() + 1);
    #hist size:256
    test_hist[i], _ = np.histogram(lbp, normed=True, bins=max_bins, range=(0, max_bins));


  return train_hist,test_hist;

训练分类器

SVM支持向量机分类.

import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVR
from skimage import feature as skft
train_data,test_data,train_label,test_label= loadPicture();
train_hist,test_hist = texture_detect();
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1);
OneVsRestClassifier(svr_rbf,-1).fit(train_hist, train_label).score(test_hist,test_label)

实验测试集结果的正确率为:90.6%

python实现LBP方法提取图像纹理特征实现分类的步骤

第一次使用python的numpy包,对其中的api是真的不熟悉,代码还可以优化.其中和matlab里的矩阵操作也有不少不同,但是关于机器学习的scikitlearn包确实很好用.

总结:结果的正确率不是很高,所以还是可以在分类器上优化,或者寻找更好的特征提取的方式.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现可以断点续传和并发的ftp程序
Sep 13 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
自学python的建议和周期预算
Jan 30 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
django-初始配置(纯手写)详解
Jul 30 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
Python turtle画图库&amp;&amp;画姓名实例
Jan 19 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Python装饰器的应用场景代码总结
Apr 10 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python用字典构建多级菜单功能
Jul 11 #Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 #Python
python切片的步进、添加、连接简单操作示例
Jul 11 #Python
python 日期排序的实例代码
Jul 11 #Python
Python qqbot 实现qq机器人的示例代码
Jul 11 #Python
python的一些加密方法及python 加密模块
Jul 11 #Python
kali中python版本的切换方法
Jul 11 #Python
You might like
PHP游戏编程25个脚本代码
2011/02/08 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
微信小程序解析富文本过程详解
2019/07/13 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
使用Python实现简单的服务器功能
2017/08/25 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
财务主管的岗位职责
2013/12/30 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
家具促销活动方案
2014/02/16 职场文书
社区两委对照检查材料
2014/08/23 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
mysql的单列多值存储实例详解
2022/04/05 MySQL