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 测试实现方法
Dec 24 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
Django Highcharts制作图表
Aug 27 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
python中如何打包用户自定义模块
Sep 23 Python
浅谈Python中的函数(def)及参数传递操作
May 25 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
JavaScript splice()方法详解
2020/09/22 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python黑魔法之编码转换
2016/01/25 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
python实现图片压缩代码实例
2019/08/12 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
python numpy库np.percentile用法说明
2020/06/08 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
全国道德模范事迹
2014/02/01 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
父母寄语大全
2014/04/12 职场文书
车间安全生产标语
2014/06/06 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
配置Kubernetes外网访问集群
2022/03/31 Servers
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技