主要内容

模糊逻辑图像处理

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

边缘是两个均匀区域之间的边界。可以通过比较相邻像素的强度来检测边缘。但是,由于均匀区域的定义不明确,两个相邻像素之间的小强度差并不总是表示边缘。相反,强度差可能表示着色效果。

用于图像处理的模糊逻辑方法允许使用隶属函数来定义像素属于边缘或均匀区域的程度。

导入RGB图像并转换为灰度

导入图片。

Irgb=imread(“peppers.png”);

Irgb是384 x 512 x 3uint8数组中。三种渠道Irgb(第三阵列维度)表示图像的红色、绿色和蓝色强度。

转换Irgb设置为灰度,以便可以使用二维阵列而不是三维阵列。为此,请使用rgb2gray函数。

Igray = rgb2gray (Irgb);数字图像(Igray“CDataMapping”“缩放”) colormap (“灰色”)头衔(“输入灰度图像”

图中包含一个Axis对象。标题为“输入图像”的Axis对象在灰度中包含一个类型为“图像”的对象。

将图像转换为双精度数据

evalfis用于评估模糊推理系统的函数仅支持单精度和双精度数据。因此,转换金宝appIgray使用im2double函数。

I = im2double (Igray);

获取图像梯度

本例中的模糊逻辑边缘检测算法依赖于图像梯度来定位均匀区域中的断点。计算图像的梯度沿x-轴心与y设在。

Gx孔侑是简单的梯度滤波器。获取包含x设在渐变的,你召集Gx使用conv2函数。梯度值在[-1 1]范围内。类似地,要获取y设在渐变的,卷孔侑

Gx=[-11];Gy=Gx';Ix=conv2(I,Gx,“一样”);Iy = conv2 (Gy,我“一样”);

绘制图像梯度。

图图像(第九,“CDataMapping”“缩放”) colormap (“灰色”)头衔(“九”

图中包含一个轴对象。标题为Ix的轴对象包含类型为image的对象。

数字图像(Iy“CDataMapping”“缩放”) colormap (“灰色”)头衔(“是的”

图中包含一个轴对象。标题为Iy的axis对象包含一个image类型的对象。

您可以使用其他过滤器来获得图像梯度,如Sobel算子或Prewitt算子。有关如何使用卷积过滤图像的信息,请参见什么是空间域的图像过滤?(图像处理工具箱)

或者,如果您有图像处理工具箱软件,则可以使用imfilter(图像处理工具箱)imgradientxy(图像处理工具箱),或imgradient(图像处理工具箱)函数获取图像梯度。

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

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

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

指定图像的渐变,艾伊,作为输入edgeFIS

edgeFIS = addInput(edgeFIS,[-1 1],“名字”“九”);edgeFIS = addInput(edgeFIS,[-1 1],“名字”“是的”);

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

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

sxsy指定目标的零成员函数的标准偏差艾伊输入。若要调整边缘检测器的性能,可以通过修改sxsy.增大值会降低算法对图像边缘的敏感性,降低检测到的边缘的强度。

将检测到的边缘图像的强度指定为edgeFIS

(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)图MF(edgeFIS、,“输入”1)标题(“九”)子地块(2,2,2)绘图MF(edgeFIS、,“输入”(2)头衔(“是的”) subplot(2,2,[3 4])“输出”1)标题(“Iout”

图中包含3个轴对象。标题Ix的轴对象1包含两个类型为line, text的对象。带有标题Iy的axis对象2包含两个类型为line, text的对象。带有标题Iout的axis对象3包含4个类型为line, text的对象。

指定FIS规则

添加规则,使一个像素白色,如果它属于统一区域,否则黑色。当图像两个方向的梯度都为零时,像素处于均匀区域。如果任意一个方向具有非零梯度,则该像素位于边缘。

r1 =“如果Ix为零,Iy为零,则Iout为白色”;r2 =“如果Ix不为零或Iy不为零,则Iout为黑色”;addRule(edgeFIS,[r1 r2]);edgeFIS。规则
说明:_______________________________________ 1 "Ix== 0 & Iy== 0 => Iout=white (1)"2“Ix~= 0 | Iy~= 0 > Iout=black(1)”

评估金融机构

计算中每一行像素的边缘检测器的输出使用对应的艾伊作为输入。

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

阴谋的结果

绘制原始灰度图像。

图(一),“CDataMapping”“缩放”) colormap (“灰色”)头衔(的原始灰度图像

图中包含一个轴对象。标题为“原始灰度图像”的轴对象包含一个类型为图像的对象。

绘制检测到的边缘。

图形图像(Ieval,“CDataMapping”“缩放”) colormap (“灰色”)头衔(“使用模糊逻辑进行边缘检测”

图中包含一个轴对象。使用模糊逻辑进行标题边缘检测的轴对象包含图像类型的对象。

另请参阅

相关话题