基于模糊规则的金属腐蚀类型判决算法matlab仿真

Posted fpga和matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于模糊规则的金属腐蚀类型判决算法matlab仿真相关的知识,希望对你有一定的参考价值。

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

A不平整金属腐蚀

金属表面为不规则表明。识别方法:金属表面是否为直线。

B金属腐蚀点

金属腐蚀部分的长大于宽,并且它的面积不能远远大于它的长度。(V=L/D,V>1.5)

C金属坑腐蚀

金属腐蚀部分的长度几乎相等与宽度。(V=L/D,0.67<V<1.5)

D金属点腐蚀

金属腐蚀部分的长度远大于宽度(V=L/D,V<0.67)

E金属层下腐蚀

金属腐蚀部分不与金属表面接触。可以视为,金属黑点到金属表面的距离大于0. (d>0)

F金属层腐蚀

金属层腐蚀也属于金属层下腐蚀,只是它的金属腐蚀面积非常大,并且金属腐蚀部分表面的斜率L〈0.5,并且腐蚀率大于所有金属面积的0.1.

G晶间腐蚀

晶间腐蚀的特点是沿晶界的金属腐蚀区域而存在,金属腐蚀是沿着金属纹理而产生的,金属腐蚀部分的颜色比金属纹理更深。

H晶间腐蚀之向内局部纹理

这个和G类似,但是其特点是由表层向内的局部纹理腐蚀

       整个算法的基本流程如下所示:

二、核心程序

clc;
clear;
close all;
warning off;
addpath 'func\\'

%读取图片
I  = imread('samples\\008.jpg');

%形态学处理
[Is,I_gray] = func_preprocess(I);

%特征提取
%根据如下的几个要点来提取特征;
%提取金属表层数据,区分是否:不平整金属腐蚀;
NUM       = func_type1_feature(Is);
Feature1= NUM;
%提取金属腐蚀区域,计算面积和长宽比例,区分是否是金属腐蚀点、金属坑腐蚀、金属点腐蚀;
[Ws,Hs]   = func_type2_feature(Is);
if isempty(Ws) == 0
Feature2(:,1)= Ws;
Feature2(:,2)= Hs;
else
Feature2= [];   
end
%提取金属腐蚀区域中面积较小的,统计其面积及个数,判断是否存在金属层下腐蚀;
Area1     = func_type3_feature(Is);
Feature3= Area1;
%判断是否存在面积大于金属区域面积0.1腐蚀区域,判断是否有金属层腐蚀;
Area2     = func_type4_feature(Is);
Feature4= Area2;
%提取纹理和腐蚀区域,如果纹理和腐蚀区域重合,则说明是晶间腐蚀,如果纹理和腐蚀区域不重合,则说明是穿晶腐蚀;
[Area3,N] = func_texture_total(Is);
Feature5= [Area3,N];

%模糊逻辑进行识别
flag = func_fuzzy_check(Feature);


%显示具体腐蚀类型
func_type_check(flag);

function flag = func_fuzzy_check(Feature);

flag1=0;
flag2=0;
flag3=0;
flag4=0;
flag5=0;
flag6=0;
flag7=0;
flag8=0;

Feature001 = Feature1;
if isempty(Feature001) == 0
   flag1 = func_fuzzy1(Feature001);
else
   flag1 = 0;
end

Feature234 = Feature2;
if isempty(Feature234) == 0
   [flag2,flag3,flag4] = func_fuzzy2(Feature234);
else
   flag2=0;
   flag3=0;
   flag4=0;
end

Feature005 = Feature3;
if isempty(Feature005) == 0
   flag5 = func_fuzzy3(Feature005);
else
   flag5 = 0;
end



Feature006 = Feature4;
if isempty(Feature006) == 0
   flag6 = func_fuzzy4(Feature006);
else
   flag6 = 0;
end


Feature078 = Feature5;
if isempty(Feature078) == 0
   [flag7,flag8] = func_fuzzy5(Feature078);
else
   [flag7,flag8] = 0;
end



flag = [flag1,flag2,flag3,flag4,flag5,flag6,flag7,flag8];

三、测试结果

 A10-18

以上是关于基于模糊规则的金属腐蚀类型判决算法matlab仿真的主要内容,如果未能解决你的问题,请参考以下文章

基于matlab实现生成模糊fis文件,包括模糊隶属函数和模糊规则等,不使用fuzzy工具箱

MATLAB教程案例32基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用

调制识别基于高阶累积量的调制方式识别算法matlab仿真,课题识别BPSK, QPSK, 16QAM, 64QAM

模糊神经网络基于matlab的模糊神经网络仿真

基于nsct变换特征提取和模糊神经网络的无参考图像质量评价算法matlab仿真

T-S模糊系统故障分析基于观测器的T-S模糊系统故障分析matlab仿真