通过 Matlab 中的重建进行形态学闭合
Morphological closing by reconstructions in Matlab
请问如何在 Matlab 中通过重建实现形态学闭包?
据我所知,imreconstruct 命令可用于实现重建打开(在我的重建打开代码下方)。
img = rgb2gray(imread("input.jpg"));
img = imcomplement(img);
se=strel("square", 40);
marker= imerode(img,se);
mask=img;
opn_recon=imreconstruct(marker,mask);
下面是我为关闭重构写的代码:
%Closing by reconstruction
img = rgb2gray(imread("input.jpg"));
img = imcomplement(img);
se=strel("square", 40);
marker= imdilate(img,se);
tmp=0;
while 1
marker_loop = marker;
geodesic=max(marker_loop,img);
recon=imerode(geodesic,se);
if isequal(recon,tmp)==1
break
end
tmp = recon;
marker = imdilate(marker_loop,se);
end
但是代码无法正常运行。你能告诉我我的错误是什么,所以我可以解决它吗?
imreconstruct
应用 inf 重建,这可以解释为由第二张图像 (mask
) 调节的重复扩张。因为是dilation,所以可以在结构侵蚀后应用,形成开口(opening by reconstruction)。
要通过重建形成闭环,我们需要先应用扩张,然后再进行超重建。 sup-reconstruction 是 inf-reconstruction 的对偶,因此可以解释为以第二个图像为条件的重复侵蚀。作为对偶,我们可以通过反转图像,应用操作,然后反转结果来根据 ind-reconstruction 实现 sup-reconstruction:
out = imcomplement(imreconstruct(imcomplement(marker), imcomplement(mask)));
因此,重建关闭是:
img = imread('cameraman.tif');
se = strel('square', 40);
marker = imdilate(img,se);
mask = img;
cls_recon = imcomplement(imreconstruct(imcomplement(marker), imcomplement(mask)));
请问如何在 Matlab 中通过重建实现形态学闭包?
据我所知,imreconstruct 命令可用于实现重建打开(在我的重建打开代码下方)。
img = rgb2gray(imread("input.jpg"));
img = imcomplement(img);
se=strel("square", 40);
marker= imerode(img,se);
mask=img;
opn_recon=imreconstruct(marker,mask);
下面是我为关闭重构写的代码:
%Closing by reconstruction
img = rgb2gray(imread("input.jpg"));
img = imcomplement(img);
se=strel("square", 40);
marker= imdilate(img,se);
tmp=0;
while 1
marker_loop = marker;
geodesic=max(marker_loop,img);
recon=imerode(geodesic,se);
if isequal(recon,tmp)==1
break
end
tmp = recon;
marker = imdilate(marker_loop,se);
end
但是代码无法正常运行。你能告诉我我的错误是什么,所以我可以解决它吗?
imreconstruct
应用 inf 重建,这可以解释为由第二张图像 (mask
) 调节的重复扩张。因为是dilation,所以可以在结构侵蚀后应用,形成开口(opening by reconstruction)。
要通过重建形成闭环,我们需要先应用扩张,然后再进行超重建。 sup-reconstruction 是 inf-reconstruction 的对偶,因此可以解释为以第二个图像为条件的重复侵蚀。作为对偶,我们可以通过反转图像,应用操作,然后反转结果来根据 ind-reconstruction 实现 sup-reconstruction:
out = imcomplement(imreconstruct(imcomplement(marker), imcomplement(mask)));
因此,重建关闭是:
img = imread('cameraman.tif');
se = strel('square', 40);
marker = imdilate(img,se);
mask = img;
cls_recon = imcomplement(imreconstruct(imcomplement(marker), imcomplement(mask)));