从Skimage高程图(2D numpy.ndarray)生成3D表面地图

3
skimage分割教程中,绘制了从sobel函数生成的高程图的3D表面图。
>>> from skimage.filters import sobel
>>> elevation_map = sobel(coins)

enter image description here

问题: elevation_map 看起来是一个2D的 numpy.ndarray。我们如何用它生成显示出来的3D地图?

表面的高度与2D数组中像素的亮度成比例。 - ImportanceOfBeingErnest
我相信这是使用Mayavi渲染的。 - Stefan van der Walt
1个回答

2
这很可能是使用Paraview/VTK生成的;
尝试玩弄以下内容:
from skimage import data
from skimage.filters import sobel
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import cm
from scipy.ndimage import zoom
coins = data.coins()
coins = zoom(coins, 10)

elevation_map = sobel(coins)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

m, n=elevation_map.shape
X, Y = np.meshgrid(np.arange(n), np.arange(m))

ax.plot_surface(X, Y, elevation_map, cmap=cm.viridis, antialiased=False)
ax.axis("off")
ax.set_facecolor('black')
plt.show()

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接