I would simply lock the texture then run a loop (x,y) and readpixelfast the heightmap.
If a pixel is not black then create a quad by adding verts and tris to a mesh, the position of which you can take directly from the loop variables.
If a pixel is not black then create a quad by adding verts and tris to a mesh, the position of which you can take directly from the loop variables.