how to fill the interior of a closed surface?

20 visualizaciones (últimos 30 días)
M.S. Khan
M.S. Khan el 5 de Feb. de 2021
Comentada: Star Strider el 7 de Feb. de 2021
hi dear community members,
please guide me, i have a closed boundary surface. i want to fill the interior.
i am using for loop but i could not succeed.
regards

Respuesta aceptada

Star Strider
Star Strider el 5 de Feb. de 2021
Editada: Star Strider el 5 de Feb. de 2021
Try this:
D = readmatrix('Boundary_closed_1s_3s.txt');
figure
[c,h] = contour(D, [1 1]*0.5);
Levels = h.LevelList;
idx = find(c(1,:) == Levels(1));
Len = c(2,idx);
for k = 1:numel(idx)
x{k} = c(1,idx+1:Len(k));
y{k} = c(2,idx+1:Len(k));
end
[b,v] = boundary(x{1}(:), y{1}(:)); % Introduced In R2014b
figure
fill(x{1}(b), y{1}(b), 'r')
title('Boundary')
figure
fill(x{1}, y{1}, 'g')
title('Filled Contour')
It uses the contour function to extract the outlines of the triangle, then first boundary (R2014b and later) to fill the triangle, and then a second one to fill the contour. Choose the one you want.
For figure(1):
.
EDIT — (5 Feb 2021 at 03:06)
The ‘v’ output of boundary is the area it encloses. I assume it corresponds to pixels, however I cannot determine that. Nothing in the original Question mentioned anything about pixels. It might be possible to use ‘x{1}(b)’ and ‘y{1}(b)’ with the original data to outline tha area in the image. The ‘y’ axis direction in the image will be reversed from the plot direction.
  8 comentarios
M.S. Khan
M.S. Khan el 7 de Feb. de 2021
Thanks Star Strider. Regards.
Star Strider
Star Strider el 7 de Feb. de 2021
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

David Hill
David Hill el 5 de Feb. de 2021
Editada: David Hill el 5 de Feb. de 2021
Look at polyshape() (assuming your have the coordinates of your surface)
pgon = polyshape([0 0 1 3], [0 3 3 0]);
a=plot(pgon);
a.FaceColor=[0 1 0];
  3 comentarios
David Hill
David Hill el 5 de Feb. de 2021
Look at the documentation. Polyshape can handle irregular shapes but the coordinates need to be in order.
doc polyshape
Don't understand your pixel question.
M.S. Khan
M.S. Khan el 5 de Feb. de 2021
Dear David, i mean, using a.FaceColor=[0 1 0]; we got a colored polygon. can we count how many pixels were used in colored area.

Iniciar sesión para comentar.

Categorías

Más información sobre Elementary Polygons en Help Center y File Exchange.

Productos


Versión

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by