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

目录

一、理论基础

A不平整金属腐蚀

B金属腐蚀点

C金属坑腐蚀

D金属点腐蚀

E金属层下腐蚀

F金属层腐蚀

G晶间腐蚀

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

二、核心程序

三、测试结果


一、理论基础

       基于模糊规则的金属腐蚀类型判决算法是一种利用模糊逻辑和规则对金属腐蚀类型进行分类的方法。该算法主要基于对金属表面腐蚀形态的观察和测量数据进行分类,通过对不同腐蚀形态的特征进行提取,利用模糊逻辑和规则对提取的特征进行分类,从而实现对金属腐蚀类型的判决。

       模糊规则是一种基于模糊逻辑的规则,用于对模糊数据进行分类和处理。模糊规则通常由“如果-则”语句构成,用于描述输入数据与输出结果之间的关系。

       在模糊逻辑中,模糊集合是一种用隶属度函数表示的集合,用于描述输入数据与集合元素之间的关系。模糊集合的元素不再是简单的属于或不属于某个集合,而是具有一定的隶属度,表示输入数据与集合元素之间的相似程度。

       模糊规则的建立通常基于模糊集合和模糊逻辑运算。例如,对于一个简单的模糊控制系统,其输入为温度,输出为加热器的大小。根据温度的不同,可以将温度划分为不同的模糊集合,如“冷”、“凉”、“适中”、“热”和“很热”。然后根据不同的温度输入,通过模糊逻辑运算,得出相应的加热器大小输出。

       在实际应用中,模糊规则通常需要根据实际问题和数据进行不断的调整和优化,以获得更好的分类和处理效果。

      该算法的基本原理是通过对金属表面腐蚀形态的观察和测量数据进行分类,建立模糊逻辑和规则库,利用模糊逻辑和规则对不同的腐蚀形态进行分类,从而确定金属腐蚀的类型。

具体实施步骤如下:

  1. 对金属表面腐蚀形态进行观察和测量,提取腐蚀形态的特征。
  2. 根据提取的特征,利用模糊逻辑和规则进行分类,从而确定金属腐蚀的类型。
  3. 通过对不同腐蚀形态的特征进行提取,不断更新模糊逻辑和规则库,提高分类准确性和效率。

      该算法主要基于模糊逻辑和规则,通过建立分类模型对金属腐蚀类型进行分类。其优点是可以实现对不同腐蚀形态的准确分类,并且可以针对不同的腐蚀类型建立不同的分类模型,从而实现更加精细化的分类。

       但是该算法需要建立较为复杂的分类模型,对于不同腐蚀类型的分类需要不断进行试验和修正,因此建立分类模型的过程可能较为复杂。此外,该算法也需要注意数据的准确性和代表性,以确保分类模型的有效性和准确性。

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值