首页 > 编程知识 正文

matlab处理图像实例,matlab读取图片像素数据矩阵

时间:2023-05-04 06:04:13 阅读:160192 作者:3801

在进行CT图像的深度学习研究时,需要使用大量的CT数据。 我从TCIA下载的CT图像是. dcm文件,每个. dcm文件表示一个slice。 如图所示,下载的是Head-neck数据。

在matlab中读取时,按如下方式使用dicomread () )函数

文件路径=' 000000.DCM '

info=Dicominfo(fullfile ) (文件路径);

image=DICOMread(info;

这里只取了一个slice,应该如何批量读取. dcm文件呢? 如何对各层的图像数据进行排序? 以下是参考代码。

主要有几个需要注意的地方:

读取info的层数信息,用于排序

删除多馀的空白数据

clear,clc

% %就绪文件路径

folder='./4/'; 所有slice的文件夹

ext={'*.dcm'};

文件路径=[ ];

forI=1:length(ext ) )。

filepaths=cat(1,filepaths,dir ) fullfile ) folder,ext{i} )读取所有. dcm文件

结束

a=length (文件路径;

data=zeros (512,512,a ); 图像大小% %

num=Zeros(1,a );

for i=1:a

info=Dicominfo(fullfile(folder,filepaths(i ) I ).name ); 读取CT图像的扫描信息

No=info.SliceLocation; 读取层的序列号

num(I )=floor ) no;

结束

value=min(num ) : );

%% extrating number of slices

for i=1:a

info=Dicominfo(fullfile(folder,filepaths(i ) I ).name );

No=info.SliceLocation;

num0=floor(no ) ABS (value ) 1; 按从小到大的顺序对slicelocation进行排序

image=DICOMread(info;

数据(:Num0)=image; % saving data,including blanks

结束

%% delete the blank

n_dim=size(data,3 );

t=1;

for j=1: n_dim

img=data (:j );

ifmean(img )==0

rem(t )=j;

t=t 1;

else

结束

结束

数据(:rem )=[]; %%删除空白图层

n=size(data,3 );

temp=data;

%% show and save the result

for i=1:n

data (3360,n-i 1 )=temp ) :I );

结束

for i=1:n

imshow(data ) :I )、[] ) )

结束

save pat4.mat data %%%保存的数据

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。