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定时检查某个进程是否已经关闭的方法
May 20 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
12个步骤教你理解Python装饰器
Jul 01 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
Python @property原理解析和用法实例
Feb 11 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
python statsmodel的使用
Dec 21 Python
通用的Django注册功能模块实现方法
Feb 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的面试题集
2006/11/19 PHP
php cookis创建实现代码
2009/03/16 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python 计算文件的md5值实例
2017/01/13 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python如何读写csv数据
2018/03/21 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python中pyqtgraph知识点总结
2021/01/26 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
医院检讨书范文
2014/02/01 职场文书
党员党性分析材料
2014/02/17 职场文书
优秀教师先进材料
2014/12/16 职场文书
工作失误检讨书范文
2015/01/26 职场文书
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电