一、LBP简介

1 基本LBP算子
基本LBP算子其定义为在3×3像素块中,以其中心像素点的灰度值作为阈值,与周围8个相邻的像素点的灰度值进行比较,若周围某一像素点的值大于等于阈值,则该像素点记为“1”,否则记为“0”。通过对邻域内的8个像素点作比较可产生一个8位二进制数,将其转为十进制数即为该3×3像素块中心像素点的LBP值(共256种),如图1所示。

图1 原始LBP值的定义
为了改善LBP尺度大小的局限性以适应不同尺度和频率的纹理特征,Ojala等[7]将LBP算子从3×3邻域扩展到不同半径大小的圆形邻域。则有:

式中,R表示圆形邻域的半径,P表示中心像素点邻域内采样点个数,gi表示邻域内第i个像素点的灰度值,gc表示中心像素点的灰度值。若圆形LBP的邻域点不在像素中心位置,则通过双线性插值确定其值。

2 缺陷图像的SVM分类
2.1 SVM模型

SVM最早由Vapnik等提出[10],属于机器学习中的监督学习,是一种对数据进行二元分类的广义线性分类器,其对小样本分类和多类分类有着良好的分类效果。其决策边界是对学习样本求解的最大边距超平面。

SVM方法是从两类模式识别时,线性可分情况下的最优分类面提出的。设大小为n、且每个训练样本向量维数为N的两类训练样本集{(xi,yi)},i=1,2,⋯,n,xi∈RN,yi∈{+1,−1}为模式标号,将建立线性SVM的问题转化为求解二次凸规划问题,即:

式中,ω为权值向量,b为类阈值;C为惩罚因子,表示存在不能被超平面正确分类的样本;ξi为松弛因子,表示存在分类间隔和错误率之间的折中。

Vapnik等[11]给出最优超平面的决策分类函数为:

式中,sgn为符号函数,λi称为Lagrange乘子,xi为支持向量。

对于非线性问题,通过引入非线性映射函数Φ(xi)将样本数据映射到高维空间,然后在这个特征空间中利用结构风险最小化原则构造最优分类超平面。为了避免产生维数灾难,故引入核函数:

选择适当的核函数K(xi,yj)实现某一非线性变换后的线性分类,此时,相应的分类函数为:

式中,xi为样本数据中的支持向量,λi称为Lagrange乘子。这就是SVM,由分类函数f(x)的正负即可判定x所属类别。

对于多分类问题,可将SVM二分类进行扩展为多分类。常用的方法有,一是通过一次构造包含多个最优超平面的模型实现对样本的多分类,看似简单,但其计算复杂,实现起来较为困难;二是组合多个二分类SVM实现多分类,本文采用第二种方法。

2.2 SVM分类结果
缺陷识别分类的步骤如下:
(1) 样本数据集的准备。
(2) 核函数和相关参数选取。目前常用的核函数形式主要有线性(linear)核函数、Sigmoid核函数、多项式(polyn-omial)核函数和径向基型(radial basis function)核函数等。径向基核函数非线性能力强,也是目前应用最广泛的核函数,本文选径向基核函数作为分类器核函数。通过调整惩罚因子C和径向基核函数的核函数参数γ来达到最佳分类率;
(3) 缺陷的识别分类。

二、部分源代码

clc;
clear all;
close all;
warning off all;%% Read input image[f,p] = uigetfile('*.jpg;*.bmp');
I = imread([p f]);
I = imresize(I,[256 256]);%% rgb to lab color space conversionim = I;
R = im(:,:,1);
G = im(:,:,2);
B = im(:,:,3);figure('name','Input Image result');
subplot(221);imshow(I,[]);title('Input Image');
subplot(222);imshow(R,[]);title('Red band Image');
subplot(223);imshow(G,[]);title('Green band Image');
subplot(224);imshow(B,[]);title('Blue Image');[L, a, b] = RGB2Lab(R, G, B);figure('name','RGB to LAB color space result');
subplot(131);imshow(L,[]);title('L color space result');
subplot(132);imshow(a,[]);title('a color space result');
subplot(133);imshow(b,[]);title('b color space result');
labb = cat(3,L,a,b);
cform = makecform('srgb2lab');
lab = applycform(I,cform); figure('name','Input Image & L*a*b Color space Result');
subplot(121);imshow(I,[]);title('Input RGB image');
subplot(122);imshow(lab);title('L*a*b color space result');ll = lab(:,:,1);
aa = lab(:,:,2);
bb = lab(:,:,3);%% K-Means segmentationcl = 4;[ABC,c] = k_means(ll,cl);[d,e]=size(c);for i=1:dfor j=1:eif c(i,j)==3new(i,j)=0;elsenew(i,j)=c(i,j);endendend
function [mu,mask]=k_means(ima,k)
%% check image
%cluster center initialization
ima=double(ima);
copy=ima;         % make a copy
ima=ima(:);       % vectorize ima
mi=min(ima);      % deal with negative
ima=ima-mi+1;     % and zero valuess=length(ima);%% create image histogramm=max(ima)+1;h=zeros(1,m);
hc=zeros(1,m);for i=1:sif(ima(i)>0) h(ima(i))=h(ima(i))+1;end;
end
ind=find(h);
hl=length(ind);%% initiate centroidsmu=(1:k)*m/(k+1);
fprintf('Initiated centroid value = %f\n',mu);%% start processwhile(true)oldmu=mu;% current classification  for i=1:hlc=abs(ind(i)-mu);cc=find(c==min(c));hc(ind(i))=cc(1);end%recalculation of means  for i=1:k, a=find(hc==i);mu(i)=sum(a.*h(a))/sum(h(a));endif(mu==oldmu) break;end;end%% calculate mask
s=size(copy);
mask=zeros(s);for i=1:s(1),
for j=1:s(2),c=abs(copy(i,j)-mu);a=find(c==min(c));  mask(i,j)=a(1);
end
endmu=mu+mi-1;   % recover real range

三、运行结果






四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]刘启浪,汤勃,孔建益,王兴东.基于多尺度LBP特征的带钢表面缺陷图像SVM分类[J].组合机床与自动化加工技术. 2020,(12)

【疾病分类】基于matlab LBP果实病害检测分类【含Matlab源码 1714期】相关推荐

  1. [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)

    1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...

  2. 基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)

    1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...

  3. Python基于改进YOLOv5的烟叶病害检测系统(附带源码)

    Python基于改进YOLOv5的烟叶病害检测系统(附带源码) 1.背景 2.前言 3.烟叶数据集的采集 4.烟叶数据集的标注 5.烟叶检测训练&识别效果 6.病害数据集的采集 7.病害数据集 ...

  4. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  5. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  6. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  7. JAVA计算机毕业设计基于vue技术的汽车维修检测系统设计与实现源码+数据库+系统+lw文档

    JAVA计算机毕业设计基于vue技术的汽车维修检测系统设计与实现源码+数据库+系统+lw文档 JAVA计算机毕业设计基于vue技术的汽车维修检测系统设计与实现源码+数据库+系统+lw文档 本源码技术栈 ...

  8. 基于YOLOv5行人车辆跟踪检测识别计数系统源码+数据集,实现出/入分别计数

    yolov5 deepsort 行人 车辆 跟踪 检测 计数 下载地址:基于YOLOv5行人车辆跟踪检测识别计数系统源码+数据集 实现了 出/入 分别计数. 默认是 南/北 方向检测,若要检测不同位置 ...

  9. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  10. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

最新文章

  1. zabbix监控activemq队列脚本
  2. 在matlab中输出、读取多个文件
  3. 主成分分析(PCA)原理详解_转载
  4. 云现场 | 把开发者宠上天的节奏?恐怕也只有华为云啦!——记首次探访华为云“一日游...
  5. daily news新闻阅读客户端应用源码(兼容iPhone和iPad)
  6. 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
  7. 【九天教您南方cass 9.1】 09 提取坐标的几种方法
  8. Java开发WIN10动态壁纸
  9. 微信支付系统的单号原来是这样设计的
  10. C语言模拟回合制游戏 源码
  11. php虚拟电话号码,虚拟运营商号码慎入! 七大你要想到的事【2】
  12. 中国糯米粉行业品牌竞争策略与规模现状分析报告2022-2028年
  13. Linux 如何重启网络、禁用网卡
  14. SoX 安装(Ubuntu+win10)的新手误区和正确安装方法。
  15. 控油,真的可以缓解脂溢性脱发么?
  16. 申请人和审批人重复,怎么处理?
  17. 2020 GDUT Rating Contest III (Div2)
  18. ubuntu系统重新分区、根目录扩容
  19. 网页算法动态插桩工具(Js逆向)
  20. layui后台管理登录

热门文章

  1. 两则新闻的另外一种角度
  2. Golang高效实践之array、slice、map实践
  3. redis安装----非基于lnmp安装
  4. 企业管理中如何激励员工
  5. Vue学习笔记 出自http://www.cnblogs.com/chenzechuang/p/6687267.html#top
  6. day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
  7. 如何使用KeyChain保存和获取UDID
  8. slitax 制定iso
  9. 如何将数据库中的表导入到PowerDesigner
  10. GridView 遍历每一行,两种写法