pet图像肿瘤的检测结题报告.docx
《pet图像肿瘤的检测结题报告.docx》由会员分享,可在线阅读,更多相关《pet图像肿瘤的检测结题报告.docx(23页珍藏版)》请在冰豆网上搜索。
![pet图像肿瘤的检测结题报告.docx](https://file1.bdocx.com/fileroot1/2023-2/1/a7dbc917-2cb5-4ac3-9e83-ec890db4e633/a7dbc917-2cb5-4ac3-9e83-ec890db4e6331.gif)
pet图像肿瘤的检测结题报告
南京理工大学
本科科研训练报告
作者:
XX
XXXX
XX
XXXX
XX
XXXX
学院:
计算机科学与工程学院
题目:
PET图象肿瘤的检测
指导老师:
XX
XXX年月日
第一章绪论
1.1研究背景
肿瘤的早期预防、早期发现和治疗对于人的生命是至关重要的,PET检测技术的使用为肿瘤患者诊断方案的确定提供了便利条件,它独特的成像技术和PET图像的分析与研究,也越来越受到学者和研究人员的广泛关注。
准确的将PET图像中的肿瘤区域分割出来具有要的临床意义。
PET检测技术的引进,给癌症患者带来了一种准确的诊断方案。
它能收到人们如此热切的关注,因为PET/CT相比于传统的诊断手段有了许多明显的优势。
在PET临床应用中,主要用到数字图像技术中的图像分割技术。
运用图象处理中的分割方法能够提取影像数据中特殊组织,也是可视化实现的前提,分割后的区域能够进行组织容积的定量分析,诊断,治疗规划等,从而实现计算机辅助诊断分析。
这就要求参加此项目的同学对数字图像学有一定的了解,尤其是要掌握其中的图像分割的多种方法,例如边缘检测阈值分割区域分裂与合并等等,当然这离不开计算机技术的配合,该项目要求同学有较强的编程能力,最好能将图像的检测与分割及计算等用代码实现,利用计算机最终实现肿瘤的较为精确的检测和定量分析(主要是算其体积)。
1.2研究目的和内容
1.2.1研究目的
本项目的主要实现了利用分割算法来实现肿瘤区域的检测分割。
首先学习图像处理软件库Matlab,熟悉其各项功能以及相关函数,然后针对PET序列影像数据,研究肿瘤的属性,运用多种方法对肿瘤进行检测并分割,最后实现分割肿瘤的各项特征计算,与医学专家分割的结果进行对比分析,给出定量的分析评价。
通过该项目的研究,项目参与人员能够锻炼实际的编程能力,熟悉医学影像分析的流程,掌握图象处理的相关知识,提高解决实际问题的能力。
1.2.2研究内容
肿瘤的早期预防、早期发现和治疗对于人的生命是至关重要的。
近年来,PET在诊断和指导治疗肿瘤、冠心病和脑部疾病等方面均已显示出独特的优越性,越来越受到学者和研究人员的广泛关注,准确的将PET图像中的肿瘤区域检测分割出来具有重要的临床意义。
运用图象处理中的分割方法能够提取影像数据中特殊组织,也是可视化实现的前提,分割后的区域能够进行组织容积的定量分析,诊断,治疗规划等,从而实现计算机辅助诊断分析。
第二章MATLAB简单介绍
2.1简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
2.2优势特点
1)高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;
2)具有完备的图形处理功能,实现计算结果和编程的可视化;
3)友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;
4)功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便实用的处理工具。
2.3编程环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
2.4图形处理
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
2.5MATLAB在图像处理中的应用
图像处理工具包是由一系列支持图像处理操作的函数组成的。
所支持的图像处理操作有:
图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等)、图像分析和统计、二值图像操作等。
下面就MATLAB在图像处理中各方面的应用分别进行介绍。
(1)图像文件格式的读写和显示。
MATLAB提供了图像文件读入函数imread(),用来读取如:
bmp、tif、tiffpcx、jpg、gpeg、hdf、xwd等格式图像文;图像写出函数imwrite(),还有图像显示函数image()、imshow()等等。
(2)图像处理的基本运算。
MATLAB提供了图像的和、差等线性运算,以及卷积、相关、滤波等非线性算。
例如,conv2(I,J)实现了I,J两幅图像的卷积。
(3)图像变换。
MATLAB提供了一维和二维离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。
(4)图像的分析和增强。
针对图像的统计计算MATLAB提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。
(5)图像的数学形态学处理。
针对二值图像,MATLAB提供了数学形态学运算函数;腐蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开(Open)、闭(Close)算子、厚化(Thicken)、薄化(Thin)算子等丰富的数学形态学运算。
以上所提到的MATLAB在图像中的应用都是由相应的MATLAB函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可。
具体的用法可参考MATLAB丰富的帮助文档。
图像边缘对图像识别和计算机分析十分有用,在MATLAB中,函数edge()用于灰度图像边缘的提取,它支持六种不同的边缘提取方法,即Sobel方法、Prewitt方法、Robert方法,Laplacian2Gaussian方法、过零点方法和Canny方法。
第三章数字图像处理
3.1概念
数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用。
数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
3.2主要目的
(1)提高图像的视感质量,对图像进行几何变换等,以改善图像的质量。
(2)提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利。
(3)图像数据的变换、编码和压缩,以便于图像的存储和传输。
3.3常用方法
1)图像变换:
由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。
因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。
2)图像编码压缩:
图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。
。
编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。
3)图像增强和复原:
图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。
图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。
4)图像分割:
图像分割是数字图像处理中的关键技术之一。
图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。
虽然已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。
因此,对图像分割的研究还在不断深入之中,是图像处理中研究的热点之一。
5)图像描述:
图像描述是图像识别和理解的必要前提。
作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。
6)图像分类(识别):
图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。
3.4主要优点
1.再现性好。
数字图像处理与模拟图像处理的根本不同在于:
它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。
只要图像在数字化时准确地表现了原稿,则数字图像处理过程始终能保持图像的再现。
2.数组,这主要取决于图像数字化设备的能力。
现代扫描仪可以把每个像素的灰度等级量化为16位甚至更高,这意味着图像的数字化精度可以达到满足任一应用需求。
3.适用面宽。
图像可以来自多种信息源。
这些来自不同信息源的图像只要被变换为数字编码形式后,均是用二维数组表示的灰度图像(彩色图像也是由灰度图像组合成的,因而均可用计算机来处理。
即只要针对不同的图像信息源,采取相应的图像信息采集措施,图像的数字处理方法适用于任何一种图像。
4.灵活性高图像处理大体上可分为图像的像质改善、图像分析和图像重建三大部分,每一部分均包含丰富的内容。
由于图像的光学处理从原理上讲只能进行线性运算,这极大地限制了光学图像处理能实现的目标。
而数字图像处理不仅能完成线性运算,而且能实现非线性处理,即凡是可以用数学公式或逻辑关系来表达的一切运算均可用数字图像处理实现。
第四章用MATLAB进行PET图象肿瘤的检测
4.1图像的读取与显示
1、读取图像
函数imread可以从任何Matlab支持的图像文件格式中,以任意位深度读取一幅图像。
格式为:
MAP=imread(FILENAME,'FMT'),其中:
FILENAME-为需要读入的图像文件名称,FMT-为图像格式。
2、读取图像信息
可以通过调用imfinfo函数获得与图像文件有关的信息,格式如下:
INFO=imfinfo(FILENAME,'FMT')其中:
返回的INFO是Matlab的一个结构体。
3、显示图像
Matlab的图像显示函数主要使用imshow。
imshow(I,n):
显示灰度级为n的图像,n缺省为256。
imshow(I,[low,high]):
以灰度范围[low,high]显示图像,如果不知道灰度范围,可以用imshow(I,[])显示。
imshow(BW):
显示二值图像。
4.2阈值分割(整个科研实验的重点)
(1)调入并显示图像rice.png。
(2)用迭代式阈值选择方法分割图像:
(3)用Otsu法阈值选择法分割图像;
(4)用分水岭算法分割图像。
(5)将上述几种处理方法的结果作比较。
在一幅图像中,人们常常只对其中的部分目标感兴趣,这些目标通常占据一定的区域,并且在某些特性(如灰度、轮廓、颜色和纹理等)上和临近的图像有差别。
这些特性差别可能非常明显,也可能很细微,以至肉眼察觉不出来。
随着计算机图像处理技术的发展,使得人们可以通过计算机来获取和处理图像信息。
图像识别的基础是图像分割,其作用是把反映物体真实情况的、占据不同区域的、具有不同特性的目标区分开来,并形成数字特征。
图像分割是图像理解的基础,而在理论上图像分割又依赖图像理解,它们彼此是紧密关联的。
图像分割在一般意义下是十分困难的问题,目前的图像分割一般作为图像的前期处理阶段,是针对分割对象的技术,最常用到的是利用阈值化处理进行的图像分割。
所谓阈值的方法实质是利用图像的灰度直方图信息得到用于分割的阈值。
基于阈值的分割方法可以分为全局阈值的方法好局部阈值的方法,全局阈值的方法是利用整幅图像的灰度信息,从整个图像中得到用于分割的阈值,并且根据该阈值对图像进行分割;而局部阈值的方法是根据图像中不同区域获得对应不同区域的几个阈值,利用这些得到的阈值对图像进行分割,也就是一个阈值对应图像中的一个子区域。
该方法的关键是如何合理地选择阈值,人工选择法是通过人眼的观察,应用人们对图像的知识,在分析图像直方图的基础上人工选出合适的阈值,也可以在人工选出阈值后,根据分割效果不断地交换操作,从而选择出较佳的阈值;自动阈值法通常使用灰度直方图来分析图像中灰度值的分布,结合特定的应用区域知识来选取合适的阈值。
(1)迭代式阈值选择
迭代式阈值选择方法的基本思想是:
开始时候选择一个阈值作为初始计值,然后按某种策略不断地改进这一估计值,直到满意给定的准则为止。
在迭代过程中,关键之处在于选择什么样的阈值改进策略。
好的与之改进侧率应该具备两个特征:
一是能够快速收敛;二是在每一个迭代过程中,新产生阈值优于上一次的阈值。
如下是具体操作步骤:
a选择图像灰度的中值作为初始阈值
;
b利用此阈值
把图像分割成两个区域——
和
,用下式计算区域
和
的灰度均值
和
c计算出
和
后,计算新的阈值
d重复步骤2和3,直到
和
的差小于某个给定值。
下面为实现迭代式阈值选择的MATLAB代码:
f=imread('rice.png');
subplot(121);
imshow(f);
title('原始图像')
f=double(f);
T=(min(f(:
))+max(f(:
)))/2;
done=false;
i=0;
while~done
r1=find(f<=T);
r2=find(f>T);
Tnew=(mean(f(r1))+mean(f(r2)))/2;
done=abs(Tnew-T)<1;
T=Tnew;
i=i+1;
end
f(r1)=0;
f(r2)=1;
subplot(122);
imshow(f);
title('迭代阈值二值化图像')
用迭代式阈值选择法二值化图像
(2)Otsu法阈值选择
Otsu法是一种使类间方差最大的自动确定阈值的方法,该方法具有简单、处理速度快的特点,是一种常用的阈值选取方法。
MATLAB工具箱提供的graythresh函数求取阈值采用的就是这种方法。
其基本思想是:
设图像像素数为N,灰度范围为[0,L-1],对应灰度级i的像素数为
,概率为
i=0,1,2,…,L-1
把图像中的像素按灰度值用阈值T分成两类
和
,
由灰度值在[0,T]之间的像素组成,
由灰度值在[T+1,L-1]之间的像素组成,对于灰度分布概率,整幅图像的均值为
则
和
的均值为
,
其中
,
由上面三式可得
,类间方差定义为
让T在[0,L-1]范围依次取值,使得方差最大的T值即为Otsu法的最佳阈值。
下面为用Otsu方法进行阈值选择的MATLAB代码:
f=imread('rice.png');
subplot(121);
imshow(f);
title('原始图像')
T=graythresh(f);
g=im2bw(f,T);
subplot(122);
imshow(g);
title('Otsu方法二值化图像')
用Otsu方法二值化图像
(3)分水岭算法
分水岭算法(watershed)是一种借鉴了形态学理论的分割方法,在该方法中,将一幅图像看成一个拓扑地形图,其中灰度值对应地形高度值,高灰度值对应着山峰,低灰度值对应着山谷。
水总是朝着地势低的地方流动,直到某一局部低洼处才停下来,这个低洼处被称为吸水盆地。
最终所有的水会分聚在不同的吸水盆地,吸水盆地之间的山脊被称为分水岭。
水从分水岭流下时,它朝着不同的吸水盆地流去的可能性是相等的。
将这种想法应用于图像分割,就是要在灰度图像中找到不同的吸水盆地和分水岭,由这些不同的吸水盆地和分水岭组成的区域即为我们要分割的目标。
阈值T0阈值T1阈值T2
分水岭形成示意图
I=imread('eight.tif');
subplot(221);
imshow(I);
title('原始图像')
subplot(222);
I=double(I);
hv=fspecial('prewitt');
hh=hv.';
gv=abs(imfilter(I,hv,'replicate'));
gh=abs(imfilter(I,hh,'replicate'));
g=sqrt(gv.^2+gh.^2);
subplot(222);
L=watershed(g);
wr=L==0;
imshow(wr);
title('分水岭')
I(wr)=255;
subplot(223);
imshow(uint8(I));
title('分割结果')
rm=imregionalmin(g);
subplot(224);
imshow(rm);
title('局部极小值')
不准确标记分水岭算法导致的过分割
从上图可以看到对应于目标的边缘,出现了比较严重的过分割现象,原因在于分水岭算法是以梯度图的局部极小点作为吸水盆地的标记点。
从第四幅图中可以看到有过多的局部极小点。
下面的改进程序克服了这个缺点。
I=imread('eight.tif');
subplot(231);
imshow(I);
I=double(I);
hv=fspecial('prewitt');
hh=hv.';
gv=abs(imfilter(I,hv,'replicate'));
gh=abs(imfilter(I,hh,'replicate'));
g=sqrt(gv.^2+gh.^2);
subplot(232);
df=bwdist(I);
imshow(uint8(df*8));
L=watershed(df);
em=L==0;
subplot(233);
imshow(em);
im=imextendedmax(I,20);
subplot(234);
imshow(im);
g2=imimposemin(g,im|em);
subplot(235);
imshow(g2);
L2=watershed(g2);
wr2=L2==0;
subplot(236);
I(wr2)=255;
imshow(uint8(I));
准确标记的分水岭算法分割过程
4.3图像分割
1、图像分割概述
图像分割一般采用的方法有边缘检测(edgedetection)、边界跟踪(edgetracing)、区域生长(regiongrowing)、区域分离和聚合等。
图像分割算法一般基于图像灰度值的不连续性或其相似性。
不连续性是基于图像灰度的不连续变化分割图像,如针对图像的边缘有边缘检测、边界跟踪等算法。
相似性是依据事先制定的准则将图像分割为相似的区域,如阈值分割、区域生长等。
2、边缘检测
图像的边缘点是指图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点,即灰度值导数较大或极大的地方。
边缘检测可以大幅度的减少数据量,并且剔除不相关信息,保留图像重要的结构属性。
边缘检测基本步骤:
平滑滤波、锐化滤波、边缘判定、边缘连接。
边缘检测算法:
•基于一阶导数:
Roberts算子、Sobel算子、Prewitt算子
•基于二阶导数:
高斯-拉普拉斯边缘检测算子
•Canny边缘检测算法
Matlab实现
1)、基于梯度算子的边缘检测
BW=edge(I,type,thresh,direction,’nothinning’)
type合法取值
梯度算子
‘sobel’
sobel算子
‘prewitt’
prewitt算子
‘reberts’
robert算子
thresh是敏感度阈值参数,任何灰度值低于此阈值的边缘将不会被检测到。
默认值为空矩阵[],此时算法自动计算阈值。
direction指定了我们感兴趣的边缘方向,edge函数将只检测direction中指定方向的边缘,其合法值如下:
direction合法值
边缘方向
‘horizontal’
水平方向
‘vertical’
竖直方向
‘both’
所有方向
可选参数’nothinning’,指定时可以通过跳过边缘细化算法来加快算法运行的速度。
默认是’thinning’,即进行边缘细化。
2)、基于高斯-拉普拉斯算子的边缘检测
BW=edge(I,’log’,thresh,sigma)
sigma指定生成高斯滤波器所使用的标准差。
默认时,标准差为2。
滤镜大小n*n,n的计算方法为:
n=ceil(sigma*3)*2+1。
3)、基于Canny算子的边缘检测
BW=edge(I,’canny’,thresh,sigma)
thresh是敏感度阈值参数,默认值为空矩阵[]。
此处为一列向量,为算法指定阈值的上下限。
第一个元素为阈值下限,第二个元素为阈值上限。
如果只指定一个阈值元素,则默认此元素为阈值上限,其0.4倍的值作为阈值下限。
如阈值参数没有指定,则算法自行确定敏感度阈值上下限。
b1=imread('nir.bmp');
h58=fspecial('gaussian',5,0.8);
b=imfilter(b1,h58);
bw1=edge(b,‘sobel’);%sobel算子
bw2=edge(b,‘prewitt’);%prewitt算子
bw3=edge(b,‘roberts’);%roberts算子
bw4=edge(b,‘log’);%log算子
bw5=edge(b,‘canny’);%canny算子
figure;imshow(bw1);imwrite(bw1,'nirbwsobel.bmp');
figure;imshow(bw2);imwrite(bw2,'nirbwprewitt.bmp');
figure;imshow(bw3);imwrite(bw3,'nirbwroberts.bmp');
figure;imshow(bw4);imwrite(bw4,'nirbwlog.bmp');
figure;imshow(bw5);imwrite(bw5,'nirbwcanny.bmp');
分析:
1、边缘定位精度方面:
Roberts算子和Log算子定位精度较高。
Roberts算子简单直观,Log算子利用二阶导数零交叉特性检测边缘。
但Log算子只能获得边缘位置信息,不能得到边缘方向信息。
2、边缘方向的敏感性:
Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平和垂直边缘效果较好。
Log算子不具有边缘方向检测功能。
Sobel算子能提供最精确的边缘方向估计。
3、去噪能力:
Roberts算子和Log算子虽然定位精度高,但受噪声影响大。
Sobel算子和Prewitt算子模板相对较大因而去噪能力较强,具有平滑作用,能滤除一些噪声,去掉一部分伪边缘,但同时也平滑了真正的边缘,降低了其边缘定位精度。
总体来讲,Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案。
4.4图像特征提取
1.特征提取的一般原则:
选择在同类图像之