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实现rest请求api示例
Apr 22 Python
Python中的并发编程实例
Jul 07 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
浅析Python 字符编码与文件处理
Sep 24 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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与SQL注入攻击[二]
2007/04/17 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
Python中几种操作字符串的方法的介绍
2015/04/09 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
.NET常见笔试题集
2012/12/01 面试题
自我评价正确写法范文
2013/12/10 职场文书
党员公开承诺书
2014/03/25 职场文书
中等生评语大全
2014/05/04 职场文书
辞职离别感言
2015/08/04 职场文书