簡體   English   中英

如何從 matlab 中具有 x、y 和 z 坐標的一組點生成體素網格

[英]How I can generate a voxel mesh from a set of points with x, y, and z coordinates in matlab

我有一個 excel 文件,其中包含來自 Abaqus 模擬的節點坐標。 現在我想從 Matlab 或 Python 中的這些點重建二維體素網格或像素網格。 我讀到的一種方法是使用具有所需分辨率的零矩陣並填充它,但我真的不知道如何實現這一點。

這是顯示我的 excel 文件結構的鏈接。

在此處輸入圖像描述

結果應該是基於像素的,如下圖:

在此處輸入圖像描述

您可以使用meshgrid生成網格節點的坐標。 還使用pdist2計算兩組點(例如網格節點和點)的成對距離。

% generate some random points
n = 20;
mind = -10;
maxd = 30;
P = rand(n, 2) * (maxd - mind) + mind;

% generate grid
d = 0.25; % distance between two pixels in your metric
X = mind:d:maxd;
Y = X;
[XX, YY] = meshgrid(X, Y);

% find closest grid cell to each point
[~, imind] = pdist2([XX(:), YY(:)], P, 'seuclidean' ,'Smallest',1);

% generate equivalent image
I = false(length(Y), length(X));
I(imind) = true;

% display results
subplot 121, scatter(P(:, 1), P(:, 2)); 
xlim([mind maxd]); ylim([mind maxd]); title('Points')
subplot 122, imagesc('XDATA', X, 'YDATA', Y, 'CDATA', I); 
xlim([mind maxd]); ylim([mind maxd]); title('Equivalent Pixels')

在此處輸入圖像描述

但是,您需要確定一些常數,例如minxmaxxminymaxyd 更新它以支持 3D 是微不足道的。 meshgridpdist2都支持 3D。 除了結果也將是一個 3D 矩陣。 您可以使用implayslice來顯示此類圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM