How to compute the surface height based on normal vectors

Click For Summary
SUMMARY

This discussion focuses on computing surface height z(x,y) from known surface normal vectors on a square grid. The user describes a method involving the calculation of vectors u and v, which are orthogonal to the normal vector at each point, leading to a system of linear equations. However, due to the large number of points in a 200x300 image, the computational time is significantly slow. Alternative methods suggested include integrating along one axis to derive z from the normal vector components, potentially improving computational efficiency.

PREREQUISITES
  • Understanding of surface normal vectors in 3D geometry
  • Familiarity with linear algebra and solving systems of equations
  • Knowledge of numerical integration techniques
  • Experience with computational geometry and image processing
NEXT STEPS
  • Research numerical integration methods for surface reconstruction
  • Explore optimization techniques for solving large linear systems
  • Learn about the stability of numerical methods in computational geometry
  • Investigate alternative algorithms for height field reconstruction from normal vectors
USEFUL FOR

This discussion is beneficial for computer graphics developers, computational geometers, and anyone involved in surface reconstruction and image processing tasks.

dilloncyh
Messages
39
Reaction score
0
Suppose I have already found the surface normal vectors to a set of points (x,y), how do I compute the surface height z(x,y)?

Basically what I have are the normal vectors at each point (x,y) on a square grid. Then I calculate the vectors u = (x+1,y,z(x+1,y)) - (x,y,z(x,y)) and v = (x,y+1,z(x,y+1)) - (x,y,z(x,y)), and use the facts that u and v are both orthogonal to the the normal vector at (x,y) to obtain a system of linear-equations which can be solved by using standard linear algebra. The problem is that since there are many points on the grid (the number of pixel on a 200x300 image), this system of equations is very very large, and the computational time is very slow. So I wonder if there are other methods to compute the surface height z(x,y) from the given set of normal vectors.

thanks
 
Physics news on Phys.org
If you integrate along one axis (let's say x), the derivative of z with respect to x should be a simple function of your normal vector components.
You can get to every point with two one-dimensional integrations. Not sure about the numeric stability of that approach, but that is easy to check with real examples.
You can also transform your system and make just one-dimensional integrals but then the discrete spacing of the points could get ugly.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 3 ·
Replies
3
Views
3K