Closed rlczddl closed 1 year ago
如果是正交投影,将[z_u, z_v, -1] 正规化到单位长向量即得到法线图, 其中z_u和z_v是梯度图。 此外还要注意下坐标系的对应,u,v轴分别对应x,y轴。想得到偏蓝色系的法线图的话(即我代码里的输入形式),x轴朝右,y轴朝上,z轴朝屏幕外。对应到uv轴就是u轴朝右,v轴朝上。
如果还想把以上方法得到的法线图保存成rgb图,保存时还应注意一些坑。 以下代码可做参考。
保存为8位rgb图:
cv2.imwrite(path/to/your/file, (255 * (normal_map+1)/2).astype(np.uint8)[..., ::-1])
或者16位rgb图:
cv2.imwrite(path/to/your/file, (65535 * (normal_map+1)/2).astype(np.uint16)[..., ::-1])
数学部分可以参考这篇文章的2.1节。注意我提到的坐标系系统和文章里的略有区别。 https://arxiv.org/pdf/1709.05940.pdf
了解了,感谢回复!
你好,请教下,算法对输入的噪声是不是非常敏感。我试了下我的数据,结果比较差。另外也想问下,这种情况不知道您有什么建议?
我倾向于在保存为法线图的时候没有处理好。人脸的中轴线位置有明显的颜色突变,但是颜色应该是平缓的变化, 不应该有这个突变。参考这个标准球的法线图。
了解了,感谢回复
你好,还想请教下,透视相机下法线图怎么转成梯度?感觉没有明确的公式。梯度转法线倒是比较容易推导出来。
是的,透视相机下法线图转z的梯度图没有明确的解析公式。我们只能推到对数深度图(ln z)关于uv的梯度。 同样参考这篇文章的式(13), (16)和(17) https://arxiv.org/pdf/1709.05940.pdf
作者好,我又来了哈哈哈。继续请教下,什么时候采用正交相机,什么时候采用透视相机?我测试了带相机参数的数据,分别使用相机参数和不使用相机参数,肉眼看两种相机模型重建的结果差不多,只是位置大小变化了。
如果你对depth的精度要求不高,只是看一下shape,用哪个都可以。用透视相机主要可以减少整体的bend,特别是在focal length比较小(比如35mm镜头)的情况下。比如实际上用透视相机拍了一个半球,但是用正交相机模型,可能结果的半球会显得有点扁。当focal length特别大的时候,比如180mm长焦镜头,其实用正交相机模型近似也没多大问题了。
另外两者的不同可以参考这个issue的回复 https://github.com/xucao-42/bilateral_normal_integration/issues/2#issuecomment-1473359556
xd, 要不加个微信吧😂
好阿,我的wx是caitong94
你好,想请教下,已知z关于u,v的梯度,怎么转化成代码中的nx, ny, nz法线图的形式