Triangulating contour data

So there’s a 2.5D game made of 3D tiles which fit seamlessly together (at various LOD).
Here’s a contour map of a single tile;

http://www.hayles.demon.co.uk/tempPix/contours.jpg

The task is to use this 256x256 image to create low and high-poly meshes - so what’s the best approach?

One thought would be to use something like ROAM but not sure that it is the best for contour

here an old applet with source code

EDIT : you can imediatly test the result by converting your contour image in blue gradiant and test it with the above applet

That’s a nice piece of kit, but it doesn’t really do what I want;

http://www.hayles.demon.co.uk/tempPix/contours1.jpg

Ideally the poly vertices would lie on the contour lines so I can apply the correct texture.
Here’s a partial sketch of what I’d like to get to for the high-poly version;

http://www.hayles.demon.co.uk/tempPix/contours2.jpg

(The low-poly version would only use the contours bordering different terrain types).
My current plan is to walk the contour lines, breaking them into line segments as I go, then use the segments to somehow generate triangles. A bit vague! Maybe I should just use the end-points of the line segments as vertices and use gulp Delaunay triangulation?

Well, I got there in the end;

http://www.hayles.demon.co.uk/tempPix/contours3.jpg

If you want a quick ‘n’ easy Delaunay triangulator check here.
It’s not 100% perfect in this context but is hopefully good enough.
I think I’d describe this task as ‘non-trivial’!

If you’re going to interpolate normals, those long, narrow triangles will become a PITA. To completely work around this problem, use normalmaps.

IMHO, I am not sure it is necessary to use normalmaps, you can get smooth result with normal interpolation by using the angle of the two edges of the triangle that touch the vertex as a weights on computation of the resulting normal. It usually give good results.

(also maybe I would rather consider a lighting/shadow map (and disable light on rendering if not requiered), as it is easy/fast to compute/update in 2d for land/terrain and can also be used to cast other object shadow)