Azzera filtri
Azzera filtri

smoothing values on a closed triagulated surface

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
John D'Errico
John D'Errico il 28 Lug 2017
Modificato: John D'Errico il 28 Lug 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 il 28 Lug 2017
You understand correctly. I also have the Delaunay triangulation which describes the surface made by the nodes.

Accedi per commentare.

Risposta accettata

Burke Rosen
Burke Rosen il 28 Lug 2017
Modificato: Burke Rosen il 28 Lug 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

Più risposte (0)

Categorie

Scopri di più su Delaunay Triangulation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by