matlab ct投影数据,CT数据处理

如何更改得到的图片白边大小?

%%根据切片后的不同时间段吸水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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值