Advertisement

(图像分割)MATLAB胸部CT肺质提取

阅读量:

(图像分割)MATLAB胸部CT肺质提取

  • 具体步骤
  • 代码实现
  • 测试结果
  • 其他

by HPC_ZY


具体步骤

  1. 阈值分割
  2. 提取人体部分
  3. 提取疑似肺质
  4. 去除非肺质
  5. 其他优化操作

代码实现

  1. 阈值分割
    这里分别提供全局阈值分割、基于边缘像素分割、基于有效像素分割。但这一步我们只是要区别人体和背景,所以用最简单的全局分割就可以了。
复制代码
    % 全局分割
    imbi0 = imbinarize(im);
    
    % 基于轮廓像素分割
    Eidx = edge(im,'log'); % 拉普拉斯获取边缘
    E1 = im(Eidx); % 获取边缘像素
    E1 = E1(E1>0);
    imbi1 = imbinarize(im,graythresh(E1));
    
    % 基于有效像素分割
    E2 = im(im>0.02); % 获取非0像素
    imbi2 = imbinarize(im,graythresh(E2));
    
    subplot(221),imshow(im)
    subplot(222),imshow(imbi0)
    subplot(223),imshow(imbi1)
    subplot(224),imshow(imbi2)
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

三种方法分割结果相差不多
在这里插入图片描述

  1. 提取人体部分
    通过观察不难发现,人体部分在图中所占面积最大(远远大于躺板),所以这一步我们求最大连通分量即可。
复制代码
    % 计算连通分量
    [label,num] = bwlabel(imbi0); 
    % 计算最大连通分量
    MAX = 0;
    for k = 1:num
    maxtmp = sum(find(label==k));
    if maxtmp>MAX
        IDX = k;
        MAX = maxtmp;
    end
    end
    imbi = label==IDX;
    
    figure
    subplot(121),imshow(imbi0),title('\fontsize{16}二值图')
    subplot(122),imshow(imbi),title('\fontsize{16}胸腔')
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
在这里插入图片描述
  1. 提取疑似肺质
    通过填充求差即可得到中心黑色部分。
复制代码
    imbiFull = imfill(imbi,'hole');
    objtmp = imbiFull-imbi;
    
    figure
    subplot(131),imshow(imbi),title('\fontsize{16}胸腔')
    subplot(132),imshow(imbiFull),title('\fontsize{16}填充')
    subplot(133),imshow(objtmp),title('\fontsize{16}疑似肺质')
    
    
      
      
      
      
      
      
      
    
在这里插入图片描述
  1. 去除非肺质
    此处仍可利用连通分量的面积,去除一些小的伪目标
复制代码
    P = 2000;
    MASK = bwareaopen(objtmp,P,4);  % 删除面积小于P的连通分量
    
    figure
    subplot(131),imshow(objtmp),title('\fontsize{16}疑似肺质')
    subplot(132),imshow(MASK),title('\fontsize{16}肺质MASK')
    subplot(133),imshow(im),title('\fontsize{16}原图')
    
    
      
      
      
      
      
      
      
    
在这里插入图片描述
  1. 其他优化操作
    可根据自己对MASK的需求,采取一些形态学操作或二值中值滤波等,这里不再举例。

测试结果

在这里插入图片描述

其他

有任何问题欢迎讨论,最后还是把测试代码上传
(包含上述完整代码,及测试数据)

由于代码段已在文中给出,不推荐下载,如果你买了年VIP,下载。

全部评论 (0)

还没有任何评论哟~