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