主要内容

模糊逻辑图像处理

这个例子展示了如何使用模糊逻辑进行图像处理。具体地说,这个例子展示了如何检测图像中的边缘。

优势是两个统一的区域之间的边界。你可以发现一个边缘通过比较相邻像素的强度。然而,由于统一的地区并不清楚地定义,小强度两个相邻像素之间的差异并不总是代表一条边。相反,强度差异可能代表一个阴影效果。

图像处理的模糊逻辑方法允许您使用成员函数定义一个像素的程度属于一个边缘或一个统一的地区。

进口RGB图像转换为灰度

导入图片。

Irgb = imread (“peppers.png”);

Irgb是384 x 512 x 3uint8数组中。的三个渠道Irgb(第三个数组维度)代表了红、绿、蓝的强度图像。

转换Irgb灰度,这样您就可以使用一个二维数组,而不是三维数组。为此,使用rgb2gray函数。

Igray = rgb2gray (Irgb);数字图像(Igray“CDataMapping”,“缩放”)colormap (“灰色”)标题(输入图像的灰度级的)

图包含一个坐标轴对象。坐标轴对象标题输入图像的灰度包含一个类型的对象的形象。

将图像转换为双精度数据

evalfis函数对模糊推理系统只支持单精度和双精度数据。金宝app因此,转换Igray到一个数组的使用im2double函数。

I = im2double (Igray);

获得图像的梯度

模糊逻辑的边缘检测算法对于这个例子依赖于图像梯度来定位在统一的地区。计算图像梯度沿x设在和y设在。

Gx孔侑是简单的梯度过滤器。获取矩阵包含x设在渐变的,你缠绕Gx使用conv2函数。梯度值在[1]的范围内。同样,获取y设在渐变的,卷孔侑

Gx = [1];Gy = Gx ';第九= conv2 (Gx,我“相同”);Iy = conv2 (Gy,我“相同”);

绘制图像梯度。

图图像(第九,“CDataMapping”,“缩放”)colormap (“灰色”)标题(“九”)

图包含一个坐标轴对象。与第九条坐标轴对象包含一个类型的对象的形象。

数字图像(Iy“CDataMapping”,“缩放”)colormap (“灰色”)标题(“Iy”)

图包含一个坐标轴对象。Iy坐标轴对象与标题包含一个类型的对象的形象。

您可以使用其他过滤器来获得图像的梯度,如索贝尔算子或普瑞维特算子。信息如何使用卷积滤波图像,明白了图像在空间域滤波是什么?(图像处理工具箱)

另外,如果你有图像处理工具箱软件,您可以使用imfilter(图像处理工具箱),imgradientxy(图像处理工具箱),或imgradient(图像处理工具箱)函数来获得图像的梯度。

定义模糊推理系统(FIS)的边缘检测

创建一个模糊推理系统(FIS)的边缘检测,edgeFIS

edgeFIS = mamfis (“名字”,“edgeDetection”);

指定图像的梯度,第九Iy的输入edgeFIS

edgeFIS = addInput (edgeFIS [1],“名字”,“九”);edgeFIS = addInput (edgeFIS [1],“名字”,“Iy”);

指定一个零均值高斯隶属函数为每个输入。如果一个像素的梯度值0,那么它属于零和一定程度的隶属函数1

sx = 0.1;sy = 0.1;edgeFIS = addMF (edgeFIS,“九”,“gaussmf”(sx 0),“名字”,“零”);edgeFIS = addMF (edgeFIS,“Iy”,“gaussmf”(sy 0),“名字”,“零”);

sxsy指定标准偏差为零的隶属函数第九Iy输入。调整边缘检测器的性能,您可以更改的值sxsy。增加的值使得算法不太敏感的边缘图像和检测边缘的强度降低。

指定edge-detected的强度图像的输出edgeFIS

edgeFIS = addOutput (edgeFIS [0, 1],“名字”,“Iout”);

指定三角形隶属度函数,白人和黑人,Iout

佤邦= 0.1;世行= 1;wc = 1;英航= 0;bb = 0;公元前= 0.7;edgeFIS = addMF (edgeFIS,“Iout”,“trimf”(wa wb wc),“名字”,“白色”);edgeFIS = addMF (edgeFIS,“Iout”,“trimf”(ba bb bc),“名字”,“黑”);

你可以用sxsy,你可以改变的值佤邦,白平衡,wc,英航,bb,公元前调整边缘检测器的性能。三胞胎指定启动、峰值和结束的三角形隶属度函数。这些参数影响的强度检测边缘。

情节的输入和输出的隶属度函数edgeFIS

图次要情节(2 2 1)plotmf (edgeFIS,“输入”1)标题(“九”次要情节(2,2,2)plotmf (edgeFIS,“输入”2)标题(“Iy”)次要情节(2、2、4 [3])plotmf (edgeFIS,“输出”1)标题(“Iout”)

图包含3轴对象。与第九条坐标轴对象1,包含第九,ylabel隶属程度包含2线类型的对象,文本。与标题Iy坐标轴对象2,包含Iy, ylabel隶属程度包含2线类型的对象,文本。与标题Iout坐标轴对象3,包含Iout, ylabel隶属程度包含4线类型的对象,文本。

指定FIS规则

添加规则使一个像素白色如果它属于一个统一的地区和黑色。一个像素是一个统一的地区当两个方向的图像梯度为零。如果两个方向有一个非零梯度,然后像素是一个优势。

r1 =“如果第九零然后Iy是零Iout是白色的”;r2 =“如果第九Iy不为零或不为零则Iout黑”;edgeFIS = addRule (edgeFIS (r1, r2));edgeFIS.Rules
ans = 1 x2 fisrule数组属性:描述前期顺向体重连接细节:描述_______________________________________ 1“第九= = 0 & Iy = = 0 = > Iout =白(1)”2 "Ix~=zero | Iy~=zero => Iout=black (1)"

评估金融中间人

评估边缘检测器的输出像素的每一行使用相应的行第九Iy作为输入。

Ieval = 0(大小(I));2 = 1:尺寸(我,1)Ieval (ii):) = evalfis (edgeFIS, [(Ix (ii,:)); (Iy (ii,:))] ");结束

阴谋的结果

绘制原始灰度图像。

图图像(我“CDataMapping”,“缩放”)colormap (“灰色”)标题(的原始灰度图像)

图包含一个坐标轴对象。坐标轴对象标题原始灰度图像包含一个类型的对象的形象。

检测到的边缘。

数字图像(Ieval“CDataMapping”,“缩放”)colormap (“灰色”)标题(“边缘检测使用模糊逻辑”)

图包含一个坐标轴对象。坐标轴对象使用模糊逻辑与标题边缘检测包含一个类型的对象的形象。

另请参阅

相关的话题