Matlab 三维二值化矩阵处理和可视化

多孔介质数值模拟输入的数据一般是采用三维二值化矩阵,处理和可视化过程总结如下。

多孔介质存在较多锯齿边缘,采用图像膨胀、腐蚀处理或者滤波处理

% 膨胀
B=[0 1 0
   1 1 1
   0 1 0]; %处理矩阵
A1=imdilate(node,B);%膨胀处理
% 腐蚀
se1=strel('disk',6);
A2=imerode(node,se1);
% 中值滤波
A3 = medfilt3(node);

Matlab绘制三维图

load('./node100.mat')
len =100;wid=100;hig=100;
[x,y,z] = meshgrid(1:wid,1:len,1:hig);
% sx=1:len;sy=1:wid;sz=1:hig;
sx = [1,len];sy=[1,wid];sz=[1,hig];
h=slice(x,y,z,node,sx,sy,sz);
shading interp;
hold on ;
colormap (hot);
hold off;%采用hot色彩
hidden off;%透视效果

三维矩阵node输出为Tecplot可读的node.plt文件

file = './node.plt';
fid = fopen(file,'w+');
fprintf(fid,'VARIABLES=\"x\",\"y\",\"z\",\"node\"\n');
fprintf(fid,'ZONE T=\"BOX\",I=%d,J=%d,K=%d,F=POINT\n',len,wid,hig);
for i = 1:len
    for j=1:wid
        for k=1:hig
            fprintf(fid,'%d %d %d %d\n',i,j,k,A(i,j,k));
        end
    end
end

posted on 2021-01-18 15:08  MultiSimOpt  阅读(1206)  评论(4编辑  收藏  举报

导航