基于分水岭分割方法的肺部CT图像处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码实现
基于matlab
1、原图----灰度图
clc;clear;close all; fileName = 'E:\program_study\matlab图像处理文件\肺部CT分水岭算法\test2.jpg'; rgb = imread(fileName); if ndims(rgb) == 3
tips: 先腐蚀后膨胀称为开;先膨胀后腐蚀称为闭。开和闭这两种运 算可以失真。开运算可以把比结构元素小的突刺滤掉,切断细长搭接而 起到分离作用;闭运算可以把比结构元素小的缺口或孔填充上,搭 接短的间隔而起到连接作用。
% 方法二:基于重建的开运算 Ie = imerode(I, se); %腐蚀 Iobr = imreconstruct(Ie, I); % 腐蚀后重建 Iobrd = imdilate(Iobr, se); %膨胀 Iobrdc = imcomplement(Iobrd); %膨胀后取反 Iobrec = imcomplement(Iobr); %腐蚀重建后取反 Iobrcbr = imreconstruct(Iobrdc, Iobrec); %再重建 Iobrcbrc = imcomplement(Iobrcbr); %对lobrcbr求反
可以看到大多处闭塞处和阴影对象没有被标记,此时 需清理标记斑点的边缘然后根据实际缩减其像素
3.3 标记点边缘优化及移除孤立像素点
fgm = imregionalmax(Iobrcbrc); %句柄极大操作,并将极值赋1 se2 = strel(ones(5,5)); % 创建5*5矩形结构元素 fgm2 = imclose(fgm, se2); %闭运算 fgm3 = imerode(fgm2, se2); %腐蚀 fgm4 = bwareaopen(fgm3, 10); %剔除像素值小于10的点 It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm4) = 255; It2(fgm4) = 0; It3(fgm4) = 0; I3 = cat(3, It1, It2, It3); figure(7) subplot(221); imshow(fgm2, []); title('闭操作'); subplot(222); imshow(fgm3, []); title('腐蚀操作'); subplot(2, 2, 3); imshow(fgm4, []); title('去除小斑点操作'); subplot(2, 2, 4); imshow(I3, []); title('修改局部极大叠加到原图像');
直接使用分水岭算法产生了过度分割的问题
3、标记前景对象
3.1 使用形态学技术开运算及闭运算来去除噪声及毛刺等
% 方法一:直接进行开闭运算 se = strel('disk', 3); %创建半径为3的结构元素 Io = imopen(I, se); %开运算 Ioc = imclose(Io, se); %闭运算 figure(4); imshow(Ioc, []), title('开闭操作');
I = rgb2gray(rgb); else
I = rbg; end figure(1); imshow(rgb); title('灰度图');
2、梯度幅值的获取
%用sobel算子对边缘提取后,对水平及垂直方向滤波, %得到的梯度幅值图像用于分水岭算法
hy = fspecial('sobel'); %sobel算子边缘提取 hx = hy'; Iy = imfilter(double(I), hy, 'replicate'); Ix = imfilter(double(I), hx, 'replicate'); gradmag = sqrt(Ix.^2 + Iy.^2); %求模值 figure(2); subplot(121); imshow(I,[]); title('灰度图像') subplot(122); imshow(gradmag,[]); title('梯度幅值图像')
基于分水岭分割的肺部CT
目录
绪论
matlab 程序实现
分水岭算法 理论介绍
分析及结果
绪论
肺部CT| 研究背景
研究背景|现状分析
肺部疾病计算机辅助诊断研究现状:
1. 肺部图像管理与三维可视化; 2. 肺结节检测; 3. 肺功能评估
医学图像分割研究现状:
1. 基于阈值的图像分割; 2. 基于区域生长的图像分割; 3. 基于分类器和聚类的方法; 4. 基于图谱引导的方法; 5. 基于边缘的方法;
watershed
• 肺部CT图像预处理 • 形态学操作 • 分水岭算法进行图像分割
1 模拟浸水过程
分水岭算法理论
2
3
模拟降水过程
过度分割问题
4 标记分水岭算法
有凭有据 输入文本输入文本
输入文本 输入文本输入文本
摘自:https:///Lemon_jay/article/details/89355937
% 局部极大图像获取 fgm = imregionalmax(Iobrcbrc); figure; imshow(fgm, []); title('局部极大图像');
% 局部极大图像添加到原图 It1 = rgb(:, :, 1); It2 = rgb(:, :, 2); It3 = rgb(:, :, 3); It1(fgm) = 255; It2(fgm) = 0; It3(fgm) = 0; I2 = cat(3, It1, It2, It3); figure(6);imshow(I2); title('局部极大叠加到原图像');
figure(5); subplot(121),imshow(Iobrd); title('腐蚀重建后膨胀(重建的开运算)'); subplot(122),imshow(Iobrcbrc); title('对腐蚀和膨胀的求补结果进行重建后再求补');
可以看出,基于重建的开运算得出的图像 更加有效,
3.2 添加标记到原图
% 下面直接对梯度幅值使用分水岭算法
L = watershed(gradmag); Lrgb = label2rgb(L); figure(3); subplot(121); imshow(gradmag,[]); title('梯度幅值图像') subplot(122); imshow(Lrgb); title('梯度幅值做分水岭变换')