CT dicom去除床板并保留手臂-20201110

在二维CT dicom去除床板时,当手臂与身体分开时,手臂也会消失,这里代码来至niubi Gao,做此记录。

function [img3d]=read3DCT(rootdir)
%读取CT或者CBCT到三维矩阵
if rootdir(end)~='\'
 rootdir=[rootdir,'\'];
end
iname=dir(rootdir);

n=length(iname)-2;
y(n)=0;
for i=1:n
    filename=[rootdir,iname(i+2).name];
    info=dicominfo(filename);
    y(i)=info.InstanceNumber;      %CT slice所在层数,该数字不连续,且有部分是重叠的
end
mi=info.Width;

x=sort(y);
xu=unique(x);
num=length(xu);
img3d=zeros(mi,mi,num);

for i=1:num   
    index=find(xu(i)==y);
    if length(index)>1
        index=index(1);
    end  
    filename=[rootdir,iname(index+2).name];
    img=dicomread(filename);
    img3d(:,:,i)=img;
end
img3d=uint16(img3d);
end
function [y] = lunkuoct(img)
%去除ct中床,提取人体的区域,FOV边缘高亮CT值有影响
img=double(img);
s=size(img);
z=zeros(s(1)+2,s(2)+2,s(3));
z(2:(s(1)+1),2:(s(2)+1),:)=img;
x=z>0;
for i=1:s(3)
    x(:,:,i)=imfill(x(:,:,i),'holes');
end

se = strel('disk',7);  %边界腐蚀
x1=imerode(x,se);

h=zeros(s(1),s(2),s(3));
h=x1(2:(s(1)+1),2:(s(2)+1),:);
img(h<1)=0;%去除FOV边缘影响

x2=img>500;  %以500CT值分割联通域

L=bwlabeln(x2,18);
stats = regionprops(L,'Area');
area = cat(1,stats.Area);
index = find(area == max(area));
imgy = ismember(L,index);
for i=1:s(3)
    imgy(:,:,i)=imfill(imgy(:,:,i),'holes');
end
y=imgy.*img;
y=uint16(y);

mask展示效果
这里可以看出,由于床板在中间某处与人体有链接,不是能完全去除,不过手臂能完美保留。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值