首页 > 解决方案 > 计算表面法线贴图时发生了一些奇怪的事情

问题描述

我正在使用以下代码从深度图像生成表面法线贴图:

for x in range(depth.shape[0]):
    for y in range(depth.shape[1]):
        try:
            dzdx=(depth[x+1,y,0]-depth[x-1,y,0])/2
            dzdy=(depth[x,y+1,0]-depth[x,y+1,0])/2
        except:
            dzdx=0
            dzdy=0
        sub=np.asarray([-dzdx,-dzdy,1])
        
        normals[x,y,:]=sub/np.linalg.norm(sub)

关于发生了什么的任何想法?

标签: image-processingcomputer-visiongeometrycomputational-geometry

解决方案


您在该行中有一个错误:

dzdy=(depth[x,y+1,0]-depth[x,y+1,0])/2

它应该是

dzdy=(depth[x,y+1,0]-depth[x,y-1,0])/2

推荐阅读