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获取电脑硬件信息及状态的实现方法
Aug 29 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
python实现用户管理系统
Jan 10 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
pip install命令安装扩展库整理
Mar 02 Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP个人网站架设连环讲(一)
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
php URL编码解码函数代码
2009/03/10 PHP
PHP 代码规范小结
2012/03/08 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
Python程序语言快速上手教程
2012/07/18 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
pandas实现选取特定索引的行
2018/04/20 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
浅谈python中get pass用法
2019/03/19 Python
Python实现对adb命令封装
2020/03/06 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
如何使用python切换hosts文件
2020/04/29 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
李开复演讲稿
2014/05/24 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
感恩父母主题班会
2015/08/12 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
Python制作动态字符画的源码
2021/08/04 Python