我有两个三维的探地雷达数据。每个数组基本上都是一个时间推移二维图像的集合,其中时间沿第三维度增加。我想创建一个三维图,它与每个数组的二维图像相交。在
我基本上是想创造一个篱笆图。在这些网站上可以找到此类地块的一些示例: http://www.geogiga.com/images/products/seismapper_3d_seismic_color.gifhttp://www.usna.edu/Users/oceano/pguth/website/so461web/seismic_refl/fence.png
我通常使用imshow单独显示二维图像进行分析。然而,我对imshow功能的研究表明,它不适用于3D轴。有什么办法吗?或者,是否有其他绘图功能可以复制imshow功能,但可以与三维轴组合?在
如果您愿意考虑使用不同的绘图库(即不是matplotlib),那么可能值得考虑mayavi/tvtk(尽管学习曲线有点陡峭)。我看到的最接近你想要的是 http://wiki.scipy.org/Cookbook/MayaVi/Examples
大部分文档位于: http://docs.enthought.com/mayavi/mayavi/index.html
可能有更好的方法,但至少可以始终制作平面网格并为其着色:
这将产生:
(请注意,我对旋转矩阵不是很仔细,您必须创建自己的投影。使用真实的旋转矩阵可能真的是个好主意。)
只需注意,围栏杆和围栏有一个小问题,即与面片数量相比,栅格多了一个顶点。在
如果你有高分辨率的图像,上面的方法不是很有效。它甚至可能对他们没有用。另一种可能是使用支持仿射图像变换的后端。不幸的是,您将不得不自己计算转换。这不是可怕的困难,但仍然有点笨拙,然后你没有得到一个真正的三维图像,可以旋转,等等
有关此方法,请参见http://matplotlib.org/examples/api/demo_affine_image.html
{eicv{eicv>可以使用OpenCV}函数来交替显示。如果使用透明颜色填充周围环境,则可以对图像进行分层以获得与示例图像类似的结果。在
为了让你知道
^{pr2}$plot_surface
的可能性,我试着把Lena绕在一个半圆柱上:她确实弯得很好,但图像上的所有操作都很慢:
使用matplotlib无法做到这一点。@DrV的答案是近似值。Matplotlib实际上并不显示原始图像的每个单独像素,而是显示一些重新缩放的图像。rstride和cstride允许您帮助指定如何缩放图像,但是,输出将不是精确的图像。在
相关问题 更多 >
编程相关推荐