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实现apahce网站日志分析示例
Apr 02 Python
python根据出生日期获得年龄的方法
Mar 31 Python
Python中的多重装饰器
Apr 11 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
Python常见内置高效率函数用法示例
Jul 31 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
自学python用什么系统好
Jun 23 Python
python图片灰度化处理的几种方法
Jun 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新手上路(七)
2006/10/09 PHP
php 破解防盗链图片函数
2008/12/09 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP精确计算功能示例
2016/11/29 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python打开网页和暂停实例
2014/09/30 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
培训主管的岗位职责
2013/11/23 职场文书
导师推荐信范文
2014/05/09 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript