Behavior of imclose() function
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Holmes Queen
el 14 de Dic. de 2020
Comentada: Image Analyst
el 14 de Dic. de 2020
The morphological close operation is a dilation followed by an erosion, using the same structuring element for both operations. Using a logical matrix a as input with a square structure element,
a = [0 0 1 0 0;
1 1 1 1 1;
0 1 0 1 0;
1 0 0 0 1;
0 0 0 0 0];
se = strel('square', 3);
The result I obtained after performing a dilation, imdilate() followed by an erosion, imerode() on a:
a = imdilate(a, se);
a = imerode(a, se);
% output
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
The result I obtained when applying imclose() directly on a:
a = imclose(a, se);
% output
0 0 1 0 0
1 1 1 1 1
1 1 1 1 1
1 0 0 0 1
0 0 0 0 0
Did I miss out something? Why the outputs are different?
0 comentarios
Respuesta aceptada
Image Analyst
el 14 de Dic. de 2020
Looks like imclose() assumes that the "missing" pixels outside the image are 0 while imerode() assumes they're 1.
2 comentarios
Image Analyst
el 14 de Dic. de 2020
If you edit the source code:
>> edit imclose.m
you'll see this line:
Bp = imerode(imdilate(inputImage,se,packopt,M),se,packopt,M);
but there's a whole bunch of stuff other than that so it's not as simple as a simple dilation follwed by a simple erosion. They usually give reference papers for algorithms so check the documentation or the source code or call them and ask.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!