iagsurf

01. def iagsurf(f, vx=1, vy=0, vz=1):
02. 
03.     import numpy as np
04.     import ia636
05.     zd = ia636.iapad(f).astype(float)
06.     gv = zd[1:-1,2:] - zd[1:-1,1:-1]
07.     gv /= gv.max()
08.     #adshow(ia636.ianormalize(gv))
09.     gh = zd[2:,1:-1] - zd[1:-1,1:-1]
10.     gh /= gh.max()
11.     #adshow(ia636.ianormalize(gh))
12.     gz = 1.0/(gv**2 + gh**2 + 1)
13.     #adshow(ia636.ianormalize(gz))
14.     gv *= gz
15.     gh *= gz
16.     #adshow(ia636.ianormalize(gv))
17.     #adshow(ia636.ianormalize(gh))
18.     v = np.sqrt(vx*vx + vy*vy + vz*vz)
19.     vx = vx/v; vy = vy/v; vz = vz/v;
20.     gv *= vx
21.     gh *= vy
22.     gz *= vz
23.     gz += gh + gv
24.     return ia636.ianormalize(gz)
1. import ia870
2. 
3. f = adreadgray('r4x2_256.tif')
4. adshow(f)
5. g = ia870.iagsurf(f)
6. adshow(g)