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 相关文章推荐
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
Python 的AES加密与解密实现
Jul 09 Python
python绘制彩虹图
Dec 16 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python任务调度模块APScheduler使用
Apr 15 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
python实现无边框进度条的实例代码
Dec 30 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
apache rewrite_module模块使用教程
2008/01/10 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
Python如何安装第三方模块
2020/05/28 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
JDO的含义
2012/11/17 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
学期评语大全
2014/04/30 职场文书
工资收入证明
2014/10/07 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
Python序列化模块JSON与Pickle
2022/06/05 Python