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抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python3基础之list列表实例解析
Aug 13 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
Django 生成登陆验证码代码分享
Dec 12 Python
Python Logging 日志记录入门学习
Jun 02 Python
python使用turtle库绘制时钟
Mar 25 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python实现图片中文字分割效果
Jul 22 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
python内置模块collections知识点总结
Dec 19 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
pytorch中的model=model.to(device)使用说明
May 24 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PR值查询 | PageRank 查询
2006/12/20 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
浅谈php自定义错误日志
2015/02/13 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python实现统计代码行的方法分析
2017/07/12 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
Java如何获得ResultSet的总行数
2016/09/03 面试题
门卫工作岗位职责
2013/12/17 职场文书
会议接待欢迎词
2014/01/12 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
企业法人授权委托书
2014/04/03 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
学习型班组申报材料
2014/05/31 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏
js作用域及作用域链工作引擎
2022/07/07 Javascript
JavaScript实现简单的音乐播放器
2022/08/14 Javascript