Matlab:膨胀运算符不返回所需的输出

Matlab:膨胀运算符不返回所需的输出,matlab,image-processing,image-morphology,Matlab,Image Processing,Image Morphology,假设我们想用Matlab中的形态学膨胀算子放大二值图像中的黑色区域。所需的输出必须如下,但给定的代码生成不同的图像! 结构元素和原始图像如下所示: 在这种情况下,您的结构元素是反向的,即当您将黑色区域作为前景时,将使用[255,0,255;0,0,0;255] 要获得视频中显示的结果,必须使用[0,1,0;1,1,1;0,1,0]作为结构元素 注意:通常情况下,在形态学操作中,您将白色区域作为前景,并使用结构元素修改前景。但在这张照片中,他使用了黑色区域作为前景 bin = ones(10,1

假设我们想用Matlab中的形态学膨胀算子放大二值图像中的黑色区域。所需的输出必须如下,但给定的代码生成不同的图像!

结构元素和原始图像如下所示:

在这种情况下,您的结构元素是反向的,即当您将黑色区域作为前景时,将使用[255,0,255;0,0,0;255]

要获得视频中显示的结果,必须使用[0,1,0;1,1,1;0,1,0]作为结构元素

注意:通常情况下,在形态学操作中,您将白色区域作为前景,并使用结构元素修改前景。但在这张照片中,他使用了黑色区域作为前景

bin = ones(10,10, 'uint8');
bin(3:8, 3:8) = 0;
bin([4 7], [4 7]) = 1;
nhood = [0 1 0; 
         1 1 1; 
         0 1 0];
erode = imerode(bin, strel(nhood));
dilate = imdilate(erode, strel(nhood));
figure; 
subplot(2,2,1)
imshow(255*bin, 'InitialMagnification', 'fit')
subplot(2,2,2)
imshow(255*erode, 'InitialMagnification', 'fit')
title('after erosion')
subplot(2,2,3)
imshow(255*dilate, 'InitialMagnification', 'fit')
title('after dilation')

如果要放大黑色区域,则会腐蚀图像,或者先反转图像,然后应用膨胀,然后再反转。如果要放大白色区域,则白色区域会变大。扩张黑色区域是扩张、侵蚀的开端。请看一下edx DEV290x课程的视频:@user8190410Nope,我不是在为你做课程来帮助你澄清事情@用户8190410
bin = ones(10,10, 'uint8');
bin(3:8, 3:8) = 0;
bin([4 7], [4 7]) = 1;
nhood = [0 1 0; 
         1 1 1; 
         0 1 0];
erode = imerode(bin, strel(nhood));
dilate = imdilate(erode, strel(nhood));
figure; 
subplot(2,2,1)
imshow(255*bin, 'InitialMagnification', 'fit')
subplot(2,2,2)
imshow(255*erode, 'InitialMagnification', 'fit')
title('after erosion')
subplot(2,2,3)
imshow(255*dilate, 'InitialMagnification', 'fit')
title('after dilation')