主要内容

模糊逻辑图像处理

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

边是两个均匀区域之间的边界。您可以通过比较相邻像素的强度来检测边缘。然而,由于均匀区域不是清晰定义的,两个相邻像素之间的小强度差异并不总是代表边缘。相反,强度差异可能代表了阴影效果。

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

导入RGB图像并转换为灰度

导入图像。

Irgb = imread(“peppers.png”);

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

转换Irgb到灰度,这样你就可以使用二维数组而不是三维数组了。要做到这一点,请使用rgb2gray函数。

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

图中包含一个轴对象。标题为Input Image in Grayscale的axis对象包含一个Image类型的对象。

将图像转换为双精度数据

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

I = im2double(灰色);

获取图像梯度

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

Gx而且孔侑是简单的渐变过滤器。来获得一个包含x的-轴梯度卷积Gx使用conv2函数。梯度值在[-1 1]范围内。类似地,要获得y的-轴梯度,卷孔侑

Gx = [-1 1];Gy = Gx';Ix = conv2(I,Gx,“相同”);Iy = conv2(I,Gy,“相同”);

绘制图像梯度。

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

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

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

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

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

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

定义了用于边缘检测的模糊推理系统

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

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

指定图像的渐变,9而且Iy的输入edgeFIS

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

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

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

sx而且sy的零隶属度函数的标准偏差9而且Iy输入。的值可以调整边缘检测性能sx而且sy.增加值使算法对图像中的边缘不那么敏感,并降低了检测到的边缘的强度。

的输出指定边缘检测图像的强度edgeFIS

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

为指定三角形隶属函数,白色和黑色Iout

Wa = 0.1;Wb = 1;Wc = 1;Ba = 0;Bb = 0;BC = 0.7;edgeFIS = addMF(edgeFIS,“Iout”“trimf”,[wa wb wc],“名字”“白色”);edgeFIS = addMF(edgeFIS,“Iout”“trimf”,[ba bb bc],“名字”“黑”);

你可以用sx而且sy,可以更改的值佤邦白平衡wc英航bb,公元前调整边缘检测器性能。三元组指定成员函数三角形的开始、峰值和结束。这些参数影响检测边缘的强度。

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

图subplot(2,2,1)“输入”1)标题(“九”) subplot(2,2,2)“输入”2)标题(“Iy”) subplot(2,2,[3 4])“输出”1)标题(“Iout”

图中包含3个轴对象。axis对象1(标题Ix)包含2个类型为line, text的对象。标题为Iy的坐标轴对象2包含2个类型为line, text的对象。标题为Iout的Axes对象3包含4个类型为line, text的对象。

指定FIS规则

添加规则,使像素白色,如果它属于一个统一的区域,否则黑色。当图像梯度在两个方向上都为零时,像素点处于均匀区域。如果任何一个方向的梯度都是非零的,那么像素就在边缘上。

r1 ="如果Ix是0 Iy是0 Iout是白色的";r2 ="如果Ix不为零或者Iy不为零那么Iout是黑的";edgeFIS = addRule(edgeFIS,[r1 r2]);edgeFIS。规则
ans = 1x2 fisrule数组,属性:描述前项结果权重连接详细信息:描述_______________________________________ 1 "Ix==零& Iy==零=> Iout=白(1)"2 "Ix~= 0 | Iy~= 0 > Iout=黑(1)"

评估金融中间人

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

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

阴谋的结果

绘制原始灰度图像。

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

图中包含一个轴对象。标题为Original Grayscale Image的axis对象包含一个Image类型的对象。

绘制检测到的边。

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

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

另请参阅

相关的话题