I'm no expert on these things, so these are mostly ideas, not solutions and I might be wrong.
But my naive approach would be boolean operations / constructive solid geometry based on the two meshes (see also this question at gamedev). If you calculate A-B
, you get the mesh(es) that contain everything that is in A, but not in B - or in other words: the missing portion of B.
There are two issues with this approach, though:
- Boolean operations are tricky due to floating point inaccuracy and special cases.
- Your meshes are noisy, so their surfaces will mostly not be coincident, even outside of the missing region.
As a result, the difference mesh will contain lots of small "volumes" outside of the actual missing region. You might remedy this by adding some sort of tolerance radius to A during the boolean operation or by applying some smoothing or other post-processing to the result.
Another approach might be to do the boolean operation not on the meshes, but on implicit functions created from the point clounds (e.g. with moving least squares) and then creating a mesh from the resulting implicit function (e.g. with marching cubes). This might be a more robust solution.
To create an image of the mesh, just render it using OpenGL or DirectX.