如何对图像中相同的法线向量进行分组 (python)
how to group same vector of normal in image (python)
我想把墙和地板分开。现在,我有一个深度图像并在深度图像中找到表面法线。我想将相同的法线向量分组并将图像转换为二进制。
下面的代码是我如何找到表面法线的。
d_im = depth_image.astype("float64")
zy, zx = np.gradient(d_im)
normal = np.dstack((-zx, -zy, np.ones_like(d_im)))
n = np.linalg.norm(normal, axis=2)
normal[:, :, 0] /= n
normal[:, :, 1] /= n
normal[:, :, 2] /= n
# offset and rescale values to be in 0-255
normal += 1
normal /= 2
cv2.imshow("Normal Image", normal[:, :, ::-1])
我想从墙上获取法向量。我能怎么做 ?非常感谢
depth_image 文件:
http://www.wikiupload.com/20D8UHUU58FTP2S
如何在程序中获取z向量?
简单的天真解决方案是使用法向量中的 z 分量和一些阈值
因为法向量被归一化了,所以地板的 z 分量的值接近 1,而墙的 z 分量的值接近 0
所以 0.5 的阈值可能是一个好的开始
在那之后你可能需要一种去噪方法
我想把墙和地板分开。现在,我有一个深度图像并在深度图像中找到表面法线。我想将相同的法线向量分组并将图像转换为二进制。
下面的代码是我如何找到表面法线的。
d_im = depth_image.astype("float64")
zy, zx = np.gradient(d_im)
normal = np.dstack((-zx, -zy, np.ones_like(d_im)))
n = np.linalg.norm(normal, axis=2)
normal[:, :, 0] /= n
normal[:, :, 1] /= n
normal[:, :, 2] /= n
# offset and rescale values to be in 0-255
normal += 1
normal /= 2
cv2.imshow("Normal Image", normal[:, :, ::-1])
我想从墙上获取法向量。我能怎么做 ?非常感谢
depth_image 文件:
http://www.wikiupload.com/20D8UHUU58FTP2S
如何在程序中获取z向量?
简单的天真解决方案是使用法向量中的 z 分量和一些阈值 因为法向量被归一化了,所以地板的 z 分量的值接近 1,而墙的 z 分量的值接近 0 所以 0.5 的阈值可能是一个好的开始 在那之后你可能需要一种去噪方法