首页 > 编程语言 >基于模糊规则的金属腐蚀类型判决算法matlab仿真

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

时间:2022-11-07 23:24:22浏览次数:72  
标签:仿真 金属腐蚀 Feature 金属 腐蚀 isempty matlab func

目录

一、理论基础

二、核心程序

三、测试结果

一、理论基础

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);
Feature{1}= NUM;
%提取金属腐蚀区域,计算面积和长宽比例,区分是否是金属腐蚀点、金属坑腐蚀、金属点腐蚀;
[Ws,Hs] = func_type2_feature(Is);
if isempty(Ws) == 0
Feature{2}(:,1)= Ws;
Feature{2}(:,2)= Hs;
else
Feature{2}= [];
end
%提取金属腐蚀区域中面积较小的,统计其面积及个数,判断是否存在金属层下腐蚀;
Area1 = func_type3_feature(Is);
Feature{3}= Area1;
%判断是否存在面积大于金属区域面积0.1腐蚀区域,判断是否有金属层腐蚀;
Area2 = func_type4_feature(Is);
Feature{4}= Area2;
%提取纹理和腐蚀区域,如果纹理和腐蚀区域重合,则说明是晶间腐蚀,如果纹理和腐蚀区域不重合,则说明是穿晶腐蚀;
[Area3,N] = func_texture_total(Is);
Feature{5}= [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 = Feature{1};
if isempty(Feature001) == 0
flag1 = func_fuzzy1(Feature001);
else
flag1 = 0;
end
Feature234 = Feature{2};
if isempty(Feature234) == 0
[flag2,flag3,flag4] = func_fuzzy2(Feature234);
else
flag2=0;
flag3=0;
flag4=0;
end
Feature005 = Feature{3};
if isempty(Feature005) == 0
flag5 = func_fuzzy3(Feature005);
else
flag5 = 0;
end
Feature006 = Feature{4};
if isempty(Feature006) == 0
flag6 = func_fuzzy4(Feature006);
else
flag6 = 0;
end
Feature078 = Feature{5};
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

标签:仿真,金属腐蚀,Feature,金属,腐蚀,isempty,matlab,func
From: https://www.cnblogs.com/matlabfpga/p/16867865.html

相关文章

  • MATLAB:quiver()函数
    quiver()用来画矢量图,这里仅介绍常使用的quiver(x,y,u,v)语句x,y表示起始点;u,v表示向量的相关信息:向量的长度为sqrt(u^2+v^2);向量的夹角为arctan(v/u),注意是v/ux,y......
  • MATLAB:列表操作(未完)
    维度不变的列表合成a=[1,2];b=[3,4];c=[a;b;5,6];%通过直接在列表中用分号隔开直接插入效果  切片:列表某列如上面合成的列表c,要取出第2列所有......
  • 3d仿真技术在生产工艺流程中的优势
    随着计算机仿真技术、计算机图形学和传感技术的不断发展,虚拟仿真技术越来越多地被应用到各个领域。虚拟仿真是由计算机来模拟现实世界,用户可通过各种传感设备和虚拟世界进......
  • 非正式图像处理-matlab
    处理后的素描图  ......
  • 【飞轮储能】基于simulink的飞轮储能发电系统的仿真
    1.软件版本MATLAB2017b2.本算法理论知识飞轮储能是指利用电动机带动飞轮高速旋转,在需要的时候再用飞轮带动发电机发电的储能方式。技术特点是高功率密度、长寿命。飞轮......
  • 【节点免疫】基于时空特性的节点免疫算法的故障诊断matlab仿真
    1.软件版本MATLAB2017b2.算法理论整体算法流程图:步骤一、网络节点的状态初始化,随机产生不同的网络节点,以及对各个网络节点赋值初始的状态信息。步骤二、对每个需要检......
  • matlab 计算区间交集
    %xy是数组,z是数字x可以取(1:0.1:2)y=(0.5:0.1:3)%function[a,b,c,d]=jiaoji(x,y,z)function[a,c,d]=jiaoji(x,z)a(1)=min(x);a(2)=max(x);%b(1)=min(......
  • matlab练习程序(Z-N法整定)
    PID调参时可以先利用Z-N法估算一个大概的量,然后再精确调参。Z-N法可以形象的用以下图表表示:其中切线是响应曲线转折点切线,即过曲线斜率最大点的切线。K是系统开环稳态......
  • 基于gamebased算法的动态频谱访问matlab仿真
    目录一、理论基础二、核心程序三、测试结果一、理论基础随着越来越多的新型无线应用,对频谱资源的需求越来越大。在这种情况下,这是举世公认的认知无线电的出现已经成......
  • 华为仿真软件eNSP之vlan配置
    学习地址:https://blog.csdn.net/weixin_45761101/article/details/122296458参考网站[华为企业业务网站]:https://support.huawei.com/enterprise/zh/doc/EDOC1000128396......