Interpolation over Mesh

Started by
2 comments, last by JoeJ 5 years, 5 months ago

Given a mesh with N vertices suppose that we know the colors for a subset of those vertices. How to interpolate the colors at the known vertices to the other vertices? I've only seen one paper called "Interpolation on a Triangulated 3D Surface" that it looks like MATLAB implements in mesh_laplacian_interp. However, this paper looks kind of old and I'm wondering if better algorithms have been developed since then.

-----Quat
Advertisement

You're sweating the interpolation algorithm but skimp on how the vertices in question know the colours of their neighbours. Is colour a component of vertices or determined based on something like textural coordinates? Is this a pre-computed operation or something you want to do runtime, if so how? How do you associate vertices, by triangle neighbour relationships or by vector distance apart?

2 hours ago, Quat said:

implements in mesh_laplacian_interp

Yes, what you want is called a 'harmonic map' from given boundary vertices. To build the laplacian you need to calculate 'cotan weights' per edge to guarantee values propagate in equal quantities over all directions on the irregular mesh.

Here is a tutorial that solves the problem with simple iterative method: http://rodolphe-vaillant.fr/?e=91, but you can also solve just one linear system per color channel.

Notice that cotan weights do not work well if triangles contain angles much larger than 90 degrees. In practice you can mostly ignore this. Otherwise a solution is to flip edges until you get a proper delauney triangulation, or to modify weights (i remember a paper: 'HOT' method).

 

Edit: I see my link is more about diffusion. Harmonic maps is here, but only using regular grids: http://rodolphe-vaillant.fr/?e=40

Diffusion and Harmonic Maps are pretty similar however, the difference is only the fixed boundary vertices.

This topic is closed to new replies.

Advertisement