基于模糊规则的金属腐蚀类型判决算法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);
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

posted @ 2022-11-07 23:13  fpga和matlab  阅读(94)  评论(0编辑  收藏  举报