当前位置:文档之家› 图像分割实验报告

图像分割实验报告

医学图像处理实验报告
实验名称:图像分割设计实验
姓名:gaojunqiang
学号:20105405
班级:生医 1001
指导教师:……
2013年6月5日
一、实验目的
1、编程实现下列功能:读出存储的黑白灰度图象并显示,用拉普拉斯算子对图象进行边缘检测,显示处理后图象,存储处理后图象。

2、编程实现下列功能:读出存储的黑白灰度图象并显示,用鼠标点击图象上某一点,以灰度相近原则进行区域生长,显示处理后图象,存储处理后图象。

二、实验原理
1、拉普拉斯边缘检测
二维函数f(x,y)的拉普拉斯是一个二阶的微分定义为:
∇2f = [∂2f / ∂x2 ,∂2f / ∂y2]
一般情况下可以用一个拉普拉斯模板算子。

模板算子分为4邻域和8邻域,如下
∇2f = 4z5 – (z2 + z4 + z6 + z8)
∇2f = 8z5 – (z1 + z2 + z3 + z4+z5 + z6 + z7+ z8)
2、区域增长
区域增长是通过一个起始点作为种子点对他周围的点进行选择。

它采取的是一种迭代的思想。

区域增长也分为四邻域和八邻域两种方式。

通过像素的集合进行区域增长的算法如下:
1)根据图像的不同应用选择一个或一组种子,它或者是最亮或最暗的点,或者是位于点簇中心的点。

2)选择一个描述符(条件)
3)从该种子开始向外扩张,首先把种子像素加入集合,然后不断将与集合中各个像素连通、且满足描述符的像素加入集合
4)上一过程进行到不再有满足条件的新结点加入集合为止。

三、实验代码及结果
1、拉普拉斯边缘检测代码如下:
%主函数如下:
clc;
close all;
clear all;
Imag = imread('lena.tiff');
ImagGray = rgb2gray(Imag); %将彩色图片转换成灰度图片
figure()
imshow(ImagGray),title('灰度图像');
% T = graythresh(ImagGray); %用大津法自动确定阈值
% I=edge(ImagGray,'log',0.004);
% figure(),imshow(I), title('laplace边缘图像');
ImagGray = double(ImagGray);
T = 60; %设置阈值
LapModType = 8; %设置laplace模板方式
ImagLapEdge = LaplaceEdge(ImagGray,LapModType,T); %laplace边缘检测
ImagLapEdge = uint8(ImagLapEdge);
figure()
imshow(ImagLapEdge),title('laplace边缘图像');
%拉普拉斯边缘检测函数如下:
function ImagLapEdge = LaplaceEdge(ImagGray,MoldType,Thresh)
%-----------------参数介绍--------------------
%输入参数:
% ImagGray: 输入的灰度图像
% MoldType: 摸板类型,包括四邻域和八邻域
% Thresh: 边缘检测阈值
%输出参数:
% ImagEdge:边缘像素点,存储的是二值化图像
[r,c] = size(ImagGray);
ImagLapEdge = zeros(r,c);
%四邻域拉普拉斯边缘检测算子
if 4 == MoldType
for i = 2:r-1
for j = 2:c-1
Temp =
-4*ImagGray(i,j)+ImagGray(i-1,j)+ImagGray(i+1,j)+ImagGray(i,j-1)+ImagGray(i,j+1); if Temp > Thresh
ImagLapEdge(i,j) = 255;
else
ImagLapEdge(i,j) = 0;
end
end
end
end
%八邻域拉普拉斯边缘检测算子
if 8 == MoldType
for i = 2:r-1
for j = 2:c-1
Temp =
-8*ImagGray(i,j)+ImagGray(i-1,j)+ImagGray(i+1,j)+ImagGray(i,j-1)+ImagGray(i,j+1)+ImagGray(i-1,j-1)+ImagGray(i+1,j+1)+ImagGray(i+1,j-1)+ImagGray(i-1,j+1);
if Temp > Thresh
ImagLapEdge(i,j) = 255;
else
ImagLapEdge(i,j) = 0;
end
end
end
end
拉普拉斯边缘检测实验结果如下:
图1 原灰度图像
图2 拉普拉斯8邻域模板边缘检测图像图3拉普拉斯4邻域模板边缘检测图像
2、区域增长
实验代码:
主函数如下:
clc;
close all;
clear all;
Imag = imread('lena.jpg');
figure()
imshow(Imag), title('原灰度图片');
n = 4; %设置区域增长的种子点数
[x,y] = ginput(n); %在图像上取点
V = [y,x];
V = uint16(V);
thresh = 33; %区域增长的阈值
growingtype = 8; %增长方式
[regionGet,imout,regionsize]=regiongrowing(V,Imag,thresh,growingtype); %区域增长函数figure()
imshow(imout), title('区域分割后的图片');
hold on
plot(x,y,'+');
由于区域增长代码老师已给这里就不在写出。

实验结果:
图1 原图像
选取如图所示的四个种子点后所得到的的区域增长图形如下:
图2 8邻域增长法的区域增长图3 4邻域增长法的区域增长
四、实验思考
拉普拉斯模板算子分为4邻域和8邻域。

通过实验结果可以看出两种模板算子都无法有效地去除噪声。

在使用不同的阈值的时候,图片的噪声和边缘无法有效的检验出来。

所以这种模板算子在去噪能力比较差。

通常,我们在拉普拉斯模板算子上加入高斯去噪,这种效果比较理想,且可以有效地抑制噪声。

带有高斯去噪的拉普拉斯模板如下:
它采用5×5的模板,在用matlab的高斯-拉普拉斯函数edge(Imag,’log’,0.004)
进行边缘检测,图片效果相当好,且抑制噪声能力相当的强。

结果如下:
在用拉普拉斯算子进行边缘检测时,在相同的阈值条件下,用8邻域法和4邻域法检测边缘效果有很大差异。

从实验效果上看,8邻域法得到的边缘更加的明显。

如果用4邻域法得到明显的边缘时要增加阈值条件,这就必然会使噪声增加,影响实验结果。

所以8邻域法比4邻域法在级边缘检测时的效果会更好。

在用灰度相近原则进行区域增长是时,种子点的选择相当重要,且不同的区域在选取相应的阈值进行区域增长时的效果比较好。

并且用区域增长的4邻域法和8邻域法得到的结果差异不是很大。

相关主题