如何更改得到的图片白边大小?
%%根据切片后的不同时间段吸水CT数据处理,将吸水数据存在特定盘新建的文件夹下,文件编号按顺序编号
%切割后文件夹1代表X方向,2代表Y方向,3代表Z方向
clc
clear all
tic
%% 图片读取
B=[];
n=0;
N=15;%一共有多少测试了多少时间
%% 沿竖直方向确定切割范围,删除吸水不到的地方,减小计算量
xx1=400;xx2=600;
yy1=400;yy2=600;
zz1=50;zz2=350;
%% 创建元胞数组
NumOfExp = N;
M = cell(1,NumOfExp);
MB = cell(1,NumOfExp);
%% 读取不同时间段的CT数据
nn=0;
for i=zz1:zz2 %读取照片数
n=n+1;
i
for j=1:N
nn=1000*j+i;
M{j} = imread(strcat('G:\张云升课题组CT\封闭氯化铯溶液吸水\导出自VG\',num2str(j),'\',num2str(nn),'.bmp'));%读取数据
end
for nn=1:N
MB{nn}(:,:,n)=M{nn}(xx1:xx2,yy1:yy2);% 将元胞M中第nn个子元胞二维数组赋值给元胞MB中第nn个子元胞三维数组的前两维
end
end
%% 数据的输出
for m=1:N
m
mkdir('G:\CT1\', num2str(m))%建立CT的个数
MMB(m)=max(max(M{m}));
for i=1:3
mkdir(strcat('G:\CT1\',num2str(m),'\'),num2str(i))%文件夹中再建三个方向的文件夹
if i==1
%% 输出X方向
for j = 1:length(xx1:xx2)
BB =MB{m}(j,:,:);
BB =rot90(squeeze(BB));
imwrite(BB,strcat('G:\CT1\',num2str(m),'\',num2str(i),'\','Picture y_z',num2str(i),'_',num2str(j),'.bmp'));
end
elseif i==2
%% 输出Y方向
for j = 1:length(yy1:yy2)
BB =MB{m}(:,j,:);
BB =rot90(squeeze(BB),2);%降维处理和方向旋转
imwrite(BB',strcat('G:\CT1\',num2str(m),'\',num2str(i),'\','Picture x_z',num2str(i),'_',num2str(j),'.bmp'));
end
else
%% 输出Z方向
for j = 1:length(zz1:zz2)
BB = MB{m}(:,:,j);
BB =rot90(flipud(squeeze(BB)));%降维处理和方向旋转
imwrite(BB,strcat('G:\CT1\',num2str(m),'\',num2str(i),'\','Picture x_y',num2str(i),'_',num2str(j),'.bmp'));
end
end
end
end
toc %这段程序运训多长时间
% colormap的创建
nrgb=N;%输入输出的线条数
for j=nrgb:10*nrgb
rgb=64/j;
mycolormap_r=interp1([1 8 24 40 56 64],[0 0 0 1 1 1 ],1:rgb:64);
mycolormap_g=interp1([1 8 24 40 56 64],[0 0 1 1 0 0 ],1:rgb:64);
mycolormap_b=interp1([1 8 24 40 56 64],[0 1 1 0 0 0 ],1:rgb:64);
if length(mycolormap_r)>=nrgb
break
end
end
mycolor=[mycolormap_r',mycolormap_g',mycolormap_b'];
colormap(mycolor);
%%
for i=1:N
A(:,i)=MB{i}(1,1,:); %取i时间段下坐标xy(1,1)位置处z方向的灰度值
B=A*(double(MB{i}(27,1,300))/double(MB{1}(27,1,300)));%数据统一化
hold on
plot((zz1:zz2)',B(:,i),'color',mycolor(i,:),'LineWidth',2);%输出特定线的灰度值
set(gcf,'color','w')%设定背景
pause(0.5);
colorbar
% 输出Gif
F=getframe(gcf);%获取整个图窗
I=frame2im(F);
[I,map]=rgb2ind(I,256);
imwrite(I,map,strcat('I_t',num2str(i),'.bmp'));%输出单个三维图
if i == 1
imwrite(I,map,'I_t1.gif','gif', 'Loopcount',inf,'DelayTime',0.2);
else
imwrite(I,map,'I_t1.gif','gif','WriteMode','append','DelayTime',0.2);
end
end
%% 将三维矩阵比如CT切片数据可视化
T=[0 25 50 75 100 125 150 175 235 355 530 710 890 1070];
for i=1:2
% figure(i)
i
D(:,:,:)=MB{i}(:,:,:);
NM=double(MB{1}(27,1,300))/double(MB{i}(27,1,300));%通过特定点的灰度值统一数值
D=D*NM;%数据统一化
%% 将三维矩阵比如CT切片数据可视化
[x,y,z,D] = reducevolume(round(D),[1,1,1]);
D = smooth3(D);
p1 = patch(isosurface(x,y,z,D,1),'FaceColor','red','EdgeColor','none');
isonormals(x,y,z,D,p1);
p2 = patch(isocaps(x,y,z,D,1),'FaceColor','interp','EdgeColor','none');
%% 图片设置
set(gcf,'color','w')%设定背景
if (i==1)
xlabel('length/65\mum');ylabel('width/65\mum');zlabel('height/65\mum');%坐标设定
else
axis off;%关闭坐标值
end
axis tight
daspect([1,1,1])%按图层1:1画
colormap(gray(100))
camlight
lighting gouraud
%% 输入文本框
if (i>1)
set(text,'string',strcat('t =',num2str(T(i)),'min'),'position',[105.46 43.6 -42.4],...
'Margin',1,'BackgroundColor',[1 1 1],'EdgeColor',[1 1 1],'FontSize',10);
end
%% 图片旋转
view(30*(2-1),20);%图片旋转,通过不同帧看的视角不一样来处理%view(10*(i-1),20);
%% 图片保存
saveas(gcf,[strcat('D:\毛细吸水\程序\论文中的图片程序\图片\CT图\I_1t',num2str(i),'.bmp')]);%输出单个三维图
%% 输出Gif图
F=getframe(gcf);%获取整个图窗
I=frame2im(F);
[I,map]=rgb2ind(I,256);
if i == 1
imwrite(I,map,'D:\毛细吸水\程序\论文中的图片程序\图片\CT图\I_t.gif','gif', 'Loopcount',inf,'DelayTime',0.2);
else
imwrite(I,map,'D:\毛细吸水\程序\论文中的图片程序\图片\CT图\I_t.gif','gif','WriteMode','append','DelayTime',0.2);
end
end
%% 读取GIF图片
[A,map]=imread('I_t.gif','frames','all');
size(A,4)
for j=1:20
for i=1:size(A,4)
imshow(A(:,:,:,i),map);
pause(0.1);
for i=1:60:360
view(i,20); %view(a,b):a是角度,b是仰视角
end
end
end