Borrar filtros
Borrar filtros

smoothing values on a closed triagulated surface

7 visualizaciones (últimos 30 días)
Burke Rosen
Burke Rosen el 28 de Jul. de 2017
Editada: Burke Rosen el 28 de Jul. de 2017
My data consist of a closed triangulated surface with a value at each vertex. How do I smooth these values (not the mesh itself)?
It is notable that matlab does this implicitly when plotting patch objects with P.FaceColor = 'interp'.
  2 comentarios
John D'Errico
John D'Errico el 28 de Jul. de 2017
Editada: John D'Errico el 28 de Jul. de 2017
Um, I don't think so. 'interp' will use interpolated coloring, which will do no smoothing. Smoothing is a technique where you replace existing values with ones that are close, but that yield a smoother resulting surface. Interpolation does not change the data at the nodes.
To do actual smoothing, where the nodal values are allowed to change (though not move in space) will take some thought.
If I understand you correctly. you have a triangulated surface in R^3, thus (x,y,z), and at each node you have a value w, where w is presumed to have some additive component of noise. Your goal is to arrive at a smoother set of values w(x,y,z), where only w has been smoothed but the triangulation is left untouched? An example of what I am describing is a triangulation, perhaps on the surface of a sphere, where each node also has an associated 4th value, w. Only w will be smoothed? So perhaps you have measured temperature at a triangulated set of points on the surface of the earth, and your goal is to smooth the temperatures. That is how I would interpret what you've said, but it is often true that what someone says and what they really want are two things completely at odds with each other.
Burke Rosen
Burke Rosen el 28 de Jul. de 2017
You understand correctly. I also have the Delaunay triangulation which describes the surface made by the nodes.

Iniciar sesión para comentar.

Respuesta aceptada

Burke Rosen
Burke Rosen el 28 de Jul. de 2017
Editada: Burke Rosen el 28 de Jul. de 2017
I think I have a solution. It works by applying a 2d-Gaussian each point, using a geodesic matrix.
% for a surface with nv vertices and
% geodesic distance matrix geo
sval = zeros(1,nv)
for iv = 1:nv
val = normpdf(geo(iv,:),0,.5);% use larger sigma for more smoothing
val = val./max(val);% scale falloff to 1
sval = sval + val;
end
W = W.*sval;% apply smoothing matrix

Más respuestas (0)

Categorías

Más información sobre Delaunay Triangulation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by