医学图像分割

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function kirschTEST(p);
f=imread(p);
g=double(f);
h1=[5 5 5;-3 0 -3;-3 -3 -3];%水平
h5=[-3 -3 -3;-3 0 -3;5 5 5];
g1=imfilter(g,h1);
subplot(121),imshow(g1);
title('水平(1)');
g11=imfilter(g,h5);
subplot(122),imshow(g11);
title('水平(2)')
function kirschTEST1(p);
f=imread(p);
g=double(f);
h2=[-3 5 5;-3 0 5;-3 -3 -3];%-45度
h6=[-3 -3 -3;-3 0 -3;5 5 5];
g=imread(p);
subplot(121),imshow(g);
title('原图');
g1=edge(g,'sobel');
subplot(122),imshow(g1);
title('sobel');
function edgeTESTp(p);
g=imread(p);
g2=edge(g,'Prewitt');
实验六图像分割(一)实验报告
实验目的:
1.了解图像分割的基本理论和方法;
2.掌握对图像进行点、线和边缘检测的方法;
3.掌握阈值分割的方法和阈值的选择;
实验内容:
1.对图像mask.tif分别用水平、+45度、垂直和-45度Kirsch算子进行处理,观察效果图,理解不同方向的模板对图像处理的作用。
下面是四个算子
2.掌握图像处理Sobel、Prewitt和Roberts模板,然后分别调用edge函数对图片building.tif进行处理,分析处理效果图和模板之间的关系。
>> edgeTEST('building.tif');
>> edgeTESTp('building.tif');
function edgeTEST(p);
g2=imfilter(g,h2);
subplot(121),imshow(g2);
title('-45度(1)');
g22=imfilter(g,h6);
subplot(122),imshow(g22);
title('-45度(2)');
function kirschTEST2(p);
f=imread(p);
title('+45度(1)');
g44=imfilter(g,h8);
subplot(122),imshow(g44);
title('+45度(2)');
>> kirschTEST('mask.tif');
>> kirschTEST1('mask.tif');
>> kirschTEST2('masLeabharlann Baidu.tif');
Roberts模板是一个2*2的模板,由于它的非对称性,因而它不能检测诸如45°倍数的边缘,于是,我们看到的房子的屋顶的瓦片没有前面两个算子的清晰。
3.利用canny算子对图片building.tif进行处理,深刻理解该算子的作用,并和题2比较。P294
Canny边缘检测算法
(1)用高斯滤波器平滑图像。
subplot(121),imshow(g2);
title('Prewitt');
g3=edge(g,'Roberts');
subplot(122),imshow(g3);
title('Roberts');
sobel算子和prewitt算子对building.Tif这幅图片大体上是没有太大的影响的,但是当放大图片之后,我们发现应用了sobel算子后图片的噪点会比用prewitt算子的要多一点。(原因是:Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。Prewitt算子利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘。对噪声具有平滑作用,定位精度不够高。)所以使用sobel算子和prewitt算子对图像进行处理后,sobel算子处理后的图像的清晰度(定位精度)要比用prewitt算子高。
(2)用一阶偏导的有限差分来计算梯度的幅值和方向。
(3)对梯度幅值进行非极大值抑制。
(4)用双阈值算法检测和连接边缘。
Canny算子检测边缘的方法是寻找图像梯度的局部极大值,梯度是用高斯滤波器的导数计算的。Canny方法使用两个阈值来分别检测强边缘和弱边缘,而且仅当弱边缘与强边缘相连时,弱边缘才会包含在输出中。因此,此方法不容易受噪声的干扰,能够检测到真正的弱边缘。
BW=edge(I, 'canny')
BW=edge (I, 'canny',thresh)
g=double(f);
h3=[-3 -3 5;-3 0 5;-3 -3 5];%垂直
h7=[5 -3 -3;5 0 -3;5 -3 -3];
g3=imfilter(g,h3);
subplot(121),imshow(g3);
title('垂直(1)');
g33=imfilter(g,h7);
subplot(122),imshow(g33);
title('垂直(2)');
function kirschTEST3(p);
f=imread(p);
g=double(f);
h4=[-3 -3 -3;-3 0 5;-3 5 5];%+45度
h8=[5 5 -3;5 0 -3;-3 3 -3];
g4=imfilter(g,h4);
subplot(121),imshow(g4);
>> kirschTEST3('mask.tif');
对于以上四个方向的掩膜,可以看到水平掩膜可最佳响应图片中水平的线;+45°掩膜可最佳响应图片中+45°的线;垂直掩膜可最佳响应图片中垂直的线;-45°掩膜可最佳响应图片中-45°的线
而对于每一组的掩膜,虽然它们是同一个方向上的掩膜,但是对图片的影响是有点不一样的,每一组的第二幅图片都可以有第一幅图片翻转90°得到,这是因为每一组算子的权值刚好是旋转90度对称的,例如第一组(使用了水平算子的)图片中的水平方向上的线明显比较清晰明显。
相关文档
最新文档