【肺实质分割】基于主动轮廓模型和贝叶斯方法识别实现胸膜旁肺实质分割附matlab代码

简介: 【肺实质分割】基于主动轮廓模型和贝叶斯方法识别实现胸膜旁肺实质分割附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

⛄ 内容介绍

肺癌是世界范围内发病率及致死率最高的恶性肿瘤之一,每年造成上百万人死亡。如能在肺癌早期及早发现病灶并进行治疗,可极大提高患者的生存率。肺癌早期的表现形式是肺结节,肺结节一般是指肺内的高密度类圆形病灶。传统医学通过医生肉眼阅读肺部CT扫描图像来检测肺结节,进而进行病情诊断。随着CT扫描技术的提高,单一CT层片越来越薄,一次扫描的CT层数越来越多,这给诊断医生带来了巨大的工作压力,因人为因素导致的误诊也越来越多,甚至影响到患者疾病的准确诊断。为了辅助医生提高诊断的准确性、提高阅片的效率,科研人员开始研制肺部CAD(computer assist diagnose)即计算机辅助诊断系统来辅助医生进行自动或半自动的病情诊断。 由于肺结节形态复杂,且易与肺部其他组织粘连,即使是有丰富经验的医生也需要通过观察病史及进行穿刺等医学手段进行确诊。因此,我们辅助检测的目的仅是将疑似肺结节区域在肺部图像中标记出来,辅助医生判断。肺结节检测的第一步是实现肺实质分割,只有首先分割出肺实质,才能对肺部CT图像进行针对性的处理。

⛄ 部分代码


%%% This code is written by Heewon Chung, a member of BAMI LAB %%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Load Lung Data and Setting Parameters

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

load('lungData.mat');   % Sample Lung Data

THec = 38;   % Threshold about Ellipse & Circle percent

THiop = 50;   % Threshold about in & out percent


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Chanvese Code

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

getLung = FindGlobalLung(lungData);   % Input the Dicom lung image

getContour = FindContour(getLung);   % Get Contour from get Lung

figure; imshow(getLung);

hold on; plot(getContour{1}(:, 1), getContour{1}(:, 2), 'r', 'LineWidth', 2);   % Left Lung

hold on; plot(getContour{2}(:, 1), getContour{2}(:, 2), 'r', 'LineWidth', 2);   % Right Lung

close all;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Filtering using Chanvese result lung

%%% juxta-pleural nodule segmentation

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

anglePoint = FindAngle(getLung, getContour);   % Find concave point in binary lung image

[erContour, erLung] = ExpandReduceCorrLung(preData, preContour, getContour);    % get Expand and Reduce Model(erModel) from n-1 final Lung

diffArea = DifferenceArea(erLung, getLung);   % difference Area of erModel Lung and Current Lung

angleArea = RemainAngleArea(diffArea, anglePoint);   % Find angle Points for difference Area

sharpenArea = FunctionSharpen(lungData, angleArea, getContour);   % Sharpness

ecArea = EllipseAndCircularCorrelation(sharpenArea, THec);   % get Ellipse and Circular Correlation

inoutArea = FunctionInoutLungArea(ecArea, getLung, THiop);   % get In & Out calculation


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Final Lung

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

addFinalLung = logical(imadd(inoutArea, getLung));

fillFinalLung = imfill(addFinalLung, 'hole');

finalLung = fillFinalLung;

finalContour = FindContour(finalLung);


clearvars -except preData getLung getContour lungData finalLung finalContour


figure;

subplot(2, 2, 1); imshow(preData);  title('n-1 Final Lung');

subplot(2, 2, 2); imshow(getLung);  title('n Chanvese Lung');

subplot(2, 2, 3); imshow(lungData);  title('n Chanvese Lung');

hold on; plot(getContour{1}(:, 1), getContour{1}(:, 2), 'b', 'LineWidth', 2);

hold on; plot(getContour{2}(:, 1), getContour{2}(:, 2), 'b', 'LineWidth', 2);

subplot(2, 2, 4); imshow(lungData); title('n Final Lung');

hold on; plot(finalContour{1}(:, 1), finalContour{1}(:, 2), 'r', 'LineWidth', 2);

hold on; plot(finalContour{2}(:, 1), finalContour{2}(:, 2), 'r', 'LineWidth', 2);

figure

ROC_data = roc_curve(getLung(:), preData(:));

⛄ 运行结果

⛄ 参考文献

[1]杨谊, 喻德旷, 申洪. 用基于主动轮廓模型的方法分割肺部病理CT图像病灶[C]// 中国计算机学会. 中国计算机学会, 2005.

[2]石国良. 基于肺实质分割的肺结节检测系统研究与实现[D]. 重庆大学.

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除


相关文章
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
162 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
116 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
84 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
6月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
6月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
6月前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)