做古风人物小图的网站或软件,丹阳网站建设咨询,中国建筑一局,自适应企业网站用什么框架做这篇博客是接着上一篇来哒#xff0c;https://blog.csdn.net/luolan9611/article/details/94285158本篇博客及上篇博客搜集的资料、实验代码、实验报告、PPT均已上传至百度网盘#xff1a;链接#xff1a;https://pan.baidu.com/s/1AmT4TtBAxj1FKf4KUFcsBw 提取码#x…这篇博客是接着上一篇来哒https://blog.csdn.net/luolan9611/article/details/94285158本篇博客及上篇博客搜集的资料、实验代码、实验报告、PPT均已上传至百度网盘链接https://pan.baidu.com/s/1AmT4TtBAxj1FKf4KUFcsBw 提取码kcfe先上结果~再上代码~唔要说明的是我使用的是matlabR2018a如果用matlab2019的话代码要有些变化因为函数接口什么的会变...%读取原始图像并将之转换为灰度图Irgb imread(zx_in_xidian.jpg);Igrayrgb2gray(Irgb);%绘制原始图像和灰度图figureimage(Irgb,CDataMapping,scaled)title(Input Image in Rgbscale);figureimage(Igray,CDataMapping,scaled)colormap(gray)title(Input Image in Grayscale);%将灰度图转换为双精度表示Iim2double(Igray);%定义Gx和Gy将之与I卷积Gx[-1 1];GyGx;%Ixmapminmax(conv2(I,Gx,same));%Iymapminmax(conv2(I,Gy,same));Ixconv2(I,Gx,same);Iyconv2(I,Gy,same);%绘制Ix和Iyfigureimage(Ix,CDataMapping,scaled)colormap(gray)title(Ix)figureimage(Iy,CDataMapping,scaled)colormap(gray)title(Iy)%定义图像边缘检测的模糊推理系统edgeFISnewfis(edgeDetection);%定义模糊推理系统的输入edgeFIS addvar(edgeFIS,input,Ix,[-1 1]);edgeFIS addvar(edgeFIS,input,Iy,[-1 1]);%sx和sy分别作为高斯隶属函数中相应的sigma标准差sx0.1;sy0.1;edgeFIS addmf(edgeFIS,input,1,zero,gaussmf,[sx 0]);edgeFIS addmf(edgeFIS,input,2,zero,gaussmf,[sy 0]);%定义模糊推理系统的输出edgeFIS addvar(edgeFIS,output,Iout,[0 1]);%三角隶属函数wa 0.1;wb 1;wc 1;ba 0;bb 0;bc 0.7;%参数说明 fis addmf(fis,varType,varIndex,mfName,mfType,mfParams)edgeFIS addmf(edgeFIS,output,1,white,trimf,[wa wb wc]);edgeFIS addmf(edgeFIS,output,1,black,trimf,[ba bb bc]);%绘制IxIy和Iout隶属函数图像figuresubplot(2,2,1)plotmf(edgeFIS,input,1)title(Ix)subplot(2,2,2)plotmf(edgeFIS,input,2)title(Iy)subplot(2,2,[3 4])plotmf(edgeFIS,output,1)title(Iout)%定义两个规则如果Ix为0Iy也为0那么输出是白色即非边缘区域如果Ix不为0或者Iy不为0则输出黑色为边缘区域。r1 If Ix is zero and Iy is zero then Iout is white;r2 If Ix is not zero or Iy is not zero then Iout is black;r char(r1,r2);edgeFIS parsrule(edgeFIS,r);showrule(edgeFIS)%将每一行像素送入模糊系统进行评估得到输出Ieval zeros(size(I));for ii 1:size(I,1)Ieval(ii,:) evalfis([(Ix(ii,:));(Iy(ii,:));],edgeFIS);end%绘制边缘检测后的图像figurecolormap(gray)image(Ieval,CDataMapping,scaled)colorbartitle(Edge Detection Using Fuzzy Logic)%以坐标[2183,1463]上的像素点为例它的Ix为0.0275Iy为0.2196%这一坐标点的Ix和Iy经过高斯隶属函数计算后得到的隶属度分别为([0.962893466491363,0.0897068632021378])%不属于0的隶属度是它们的补([0.0371065335086372,0.910293136797862])%根据高斯隶属函数得到的隶属度在三角隶属函数的图像上(white的函数图和black的函数图)分别进行蕴含操作(min)后进行Aggregate操作%将模糊集去模糊化得到单一输出值(使用质心的方法)%绘制出该图像[output,fuzzifiedInputs,ruleOutputs,aggregatedOut]evalfis([0.0275,0.2196],edgeFIS);outputRangelinspace(edgeFIS.output.range(1),edgeFIS.output.range(2),length(aggregatedOut));figureplot(outputRange,aggregatedOut,[output output],[0 1])xlabel(Iout)ylabel(Output Memebership)legend(Aggregated output fzzy set,Defuzzified output)%绘制该模糊系统的图像figureplotfis(edgeFIS)title(edgeFIS)%绘制表面曲线图figuregensurf(edgeFIS)title(surfaceplot)原理讲解~记得上篇博客讲的模糊推理过程吧~模糊推理是使用模糊逻辑将给定输入映射到输出的过程。将输入变量进行模糊化得到模糊集根据设定的规则描述(前件)进行模糊运算将模糊运算的结果作用于后果(后件)将每个规则的输出模糊集聚合为指定输出去模糊化后得到推理结果。模糊推理过程主要分为五个部分1.输入变量的模糊化通过隶属函数将前提条件中的所有模糊语句解析为0到1之间的隶属度。如果前提只有一个部分那么这就是对规则的支持程度。2.模糊算子(AND或OR)在先行词中的应用如果前提条件不只一个则应用模糊逻辑运算将前提解析为0到1之间的隶属度值。3.计算前提条件对后件的影响使用整个规则的支持度来塑造输出模糊集。模糊规则的结果将整个模糊集分配给输出。该模糊集由隶属函数表示该隶属函数被选择以指示后件的质量。如果先行词仅部分为真(即赋值小于1)则根据蕴涵方法截断输出模糊集。4.所有规则的结果汇总然后将每个规则的输出模糊集合聚合为单个输出模糊集。5.去模糊化最后对结果集进行去模糊化得到最终的推理结果。那怎么把这一推理过程用于图像边缘检测呢图像的边缘是两个均匀区域之间的边界我们可以通过比较邻近像素的强度来检测边缘。但是由于均匀区域没有明确定义两个相邻像素之间的小强度差并不总是表示边缘。相反强度的差异可能代表着阴影效果。图像处理的模糊逻辑方法允许我们使用隶属函数来定义像素属于边缘或均匀区域的程度。如果把图像看成二维离散函数那么图像梯度其实就是这个二维离散函数的求导G(x,y) dx(i,j) dy(i,j);其中dx(i,j) I(i1,j) - I(i,j);dy(i,j) I(i,j1) - I(i,j); I是图像像素的值(如RGB值)(i,j)为像素的坐标。先对图像预处理一下原图--灰度化--灰度图归一化然后利用梯度滤波器Gx[-1 1]和Gy(等于Gx的转置)和图像I分别卷积可以获得图像沿水平方向和竖直方向的梯度矩阵Ix和Iy梯度的值在[-1 1]之间变化。也可以使用其它的滤波器来获得图像的梯度。得到的Ix和Iy你们能看出区别的对吧Ix是水平方向的梯度上面有树干的纹理Iy上检测不到的。然后我们就要开始进行那五个步骤啦使用0均值高斯隶属函数定义像素点属于zero(非边缘像素点)的程度其中sigma是标准偏差我设置为0.1c是均值为0。sigma值的改变可以调整边缘检测的性能。增加它们的值会使得算法对于图像中的边缘没那么敏感并且减少检测的边缘的强度。定义两个规则对于输出的像素点的值属于白色还是黑色分别定义white和black隶属函数参数a和c定位的是三角形的脚点b定位的是顶点。其中wa 0.1;wb 1;wc 1;ba 0;bb 0;bc 0.7; wawbwcbabbbc可以更改以调整边缘检测器的性能。如下下面这张图是该图像边缘检测模糊推理系统的示意图以本实验中的待检测图像中的一像素点为例进一步说明第3和第4步。以Ix,Iy[0.0275,0.2196]的这个像素点(即书包上的那个点)为边缘检测模糊推理系统edgeFIS的输入它们属于zero的隶属度分别为0.9629和0.0897不属于zero的隶属度分别为0.0371(即1-0.9629)和0.9103(即1-0.0897)。步骤2和步骤3.根据规则1的and运算取小值0.0897对white进行截断。根据规则2的or运算取大值0.9103对black进行截断。截断后的模糊集在原图中由黄线表示。步骤4.所有规则的结果汇总将white和black小图中黄线的部分Aggregation(取大值)即可得到所有规则的结果汇总后的模糊集如手绘图中最右下角的黄线所示其实也就是下图中的蓝色线条。步骤5.去模糊化对Aggeragation后的图像进行去模糊化即可得到最终的输出值如图橘黄色的线Defuzzified output所示。输出值约为0.28是书包那点的输出值。参考资料Matlab的官网Example~~https://ww2.mathworks.cn/help/fuzzy/fuzzy-logic-image-processing.html?requestedDomainzh上一篇博客【模糊数学】模糊逻辑隶属度模糊逻辑应用模糊推理过程https://blog.csdn.net/luolan9611/article/details/94285158好了今天就分享这么多吧可爱