实验2 图像分割

合集下载

数字图像处理实验报告——图像分割实验

数字图像处理实验报告——图像分割实验

实验报告课程名称数字图像处理导论专业班级_______________姓名 _______________学号_______________电气与信息学院与谐勤奋求就是创新一.实验目得1.理解图像分割得基本概念;2.理解图像边缘提取得基本概念;3.掌握进行边缘提取得基本方法;4.掌握用阈值法进行图像分割得基本方法.二。

实验内容1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

比较三种算子处理得不同之处;2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明。

3.任选一种阈值法进行图像分割、图1 图2三.实验具体实现1.分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

比较三种算子处理得不同之处;I=imread(’mri、tif');imshow(I)BW1=edge(I,’roberts’);figure ,imshow(BW1),title(’用Roberts算子’)BW2=edge(I,’sobel’);figure,imshow(BW2),title(’用Sobel算子 ')BW3=edge(I,’log’);figure,imshow(BW3),title(’用拉普拉斯高斯算子’)比较提取边缘得效果可以瞧出,sober算子就是一种微分算子,对边缘得定位较精确,但就是会漏去一些边缘细节.而Laplacian—Gaussian算子就是一种二阶边缘检测方法,它通过寻找图象灰度值中二阶过零点来检测边缘并将边缘提取出来,边缘得细节比较丰富。

通过比较可以瞧出Laplacian-Gaussian算子比sober算子边缘更完整,效果更好。

2.设计一个检测图1中边缘得程序,要求结果类似图2,并附原理说明.i=imread('m83、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图');thread=130/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’);3.任选一种阈值法进行图像分割、i=imread('trees、tif’);subplot(1,2,1);imhist(i);title('原始图像直方图’);thread=100/255;subplot(1,2,2);i3=im2bw(i,thread);imshow(i3);title('分割结果’)1、分别用Roberts,Sobel与拉普拉斯高斯算子对图像进行边缘检测。

图像分割处理实验报告

图像分割处理实验报告

图像分割处理实验报告1. 引言图像分割是计算机视觉中的重要任务之一,其目标是将图像划分成具有相似特征的子区域。

图像分割在很多应用领域中都有着广泛的应用,比如医学影像分析、目标检测和图像编辑等。

本实验旨在探索不同的图像分割算法,并比较它们在不同场景下的效果和性能。

2. 实验方法2.1 实验数据本实验选取了一组包含不同场景的图像作为实验数据集,包括自然景观、人物肖像和城市街景等。

每张图像的分辨率为500x500像素。

2.2 实验算法本实验使用了两种经典的图像分割算法进行比较,分别是基于阈值的分割和基于边缘的分割。

2.2.1 基于阈值的分割基于阈值的分割算法是一种简单而直观的方法,其原理是根据像素值的亮度信息将图像分割成不同的区域。

在本实验中,我们将图像的灰度值与一个事先设定的阈值进行比较,如果大于阈值则设为白色,否则设为黑色,从而得到分割后的图像。

2.2.2 基于边缘的分割基于边缘的分割算法利用图像中的边缘信息进行分割,其原理是检测图像中的边缘并将其作为分割的依据。

在本实验中,我们使用了Canny边缘检测算法来提取图像中的边缘信息,然后根据边缘的位置进行分割。

2.3 实验流程本实验的流程如下:1. 加载图像数据集;2. 对每张图像分别应用基于阈值的分割算法和基于边缘的分割算法;3. 计算分割结果和原始图像之间的相似度,使用结构相似性指标(SSIM)进行评估;4. 分析并比较两种算法在不同场景下的分割效果和性能。

3. 实验结果3.1 分割效果实验结果表明,基于阈值的分割算法在处理简单场景的图像时效果较好,可以比较准确地将图像分割为目标区域和背景。

然而,当图像的复杂度增加时,基于阈值的分割算法的效果明显下降,往往会产生较多的误分割。

相比之下,基于边缘的分割算法在处理复杂场景的图像时表现良好。

通过提取图像的边缘信息,该算法能够较准确地分割出图像中的目标区域,相比于基于阈值的分割算法,其产生的误分割较少。

3.2 性能评估通过计算分割结果和原始图像之间的SSIM指标,我们可以得到两种算法在不同场景下的性能评估。

图像分割 实验报告

图像分割 实验报告

图像分割实验报告图像分割实验报告一、引言图像分割是计算机视觉领域中的一个重要研究方向,它旨在将一幅图像分割成具有语义意义的不同区域。

图像分割在许多应用中发挥着关键作用,如目标检测、场景理解和医学图像处理等。

本实验旨在探索不同的图像分割方法,并对其进行比较和评估。

二、实验方法本实验选择了两种常用的图像分割方法:基于阈值的分割和基于边缘的分割。

首先,我们使用Python编程语言和OpenCV库加载图像,并对图像进行预处理,如灰度化和平滑处理。

接下来,我们将详细介绍这两种分割方法的实现步骤。

1. 基于阈值的分割基于阈值的分割是一种简单而常用的分割方法。

它通过将图像像素的灰度值与预先设定的阈值进行比较,将像素分为前景和背景两类。

具体步骤如下:(1)将彩色图像转换为灰度图像。

(2)选择一个适当的阈值,将图像中的像素分为两类。

(3)根据阈值将图像分割,并得到分割结果。

2. 基于边缘的分割基于边缘的分割方法是通过检测图像中的边缘来实现分割的。

边缘是图像中灰度变化剧烈的区域,通常表示物体的边界。

具体步骤如下:(1)将彩色图像转换为灰度图像。

(2)使用边缘检测算法(如Canny算法)检测图像中的边缘。

(3)根据边缘信息将图像分割,并得到分割结果。

三、实验结果与讨论我们选择了一张包含多个物体的彩色图像进行实验。

首先,我们使用基于阈值的分割方法对图像进行分割,选择了适当的阈值进行实验。

实验结果显示,基于阈值的分割方法能够将图像中的物体与背景分离,并得到较好的分割效果。

接下来,我们使用基于边缘的分割方法对同一张图像进行分割。

实验结果显示,基于边缘的分割方法能够准确地检测出图像中的边缘,并将图像分割成多个具有边界的区域。

与基于阈值的分割方法相比,基于边缘的分割方法能够更好地捕捉到物体的形状和边界信息。

通过对比两种分割方法的实验结果,我们发现基于边缘的分割方法相对于基于阈值的分割方法具有更好的效果。

基于边缘的分割方法能够提供更准确的物体边界信息,但也更加复杂和耗时。

图像分割 实验报告

图像分割 实验报告

图像分割实验报告《图像分割实验报告》摘要:图像分割是计算机视觉领域的重要研究方向,它在许多领域都有着重要的应用价值。

本实验旨在探究图像分割算法在不同场景下的表现,并对比不同算法的优缺点,为图像分割技术的进一步发展提供参考。

一、实验背景图像分割是指将图像划分成若干个具有独立语义的区域的过程。

图像分割技术在医学影像分析、自动驾驶、图像识别等领域都有着广泛的应用。

因此,对图像分割算法的研究和优化具有重要意义。

二、实验目的本实验旨在通过对比不同图像分割算法在不同场景下的表现,探究其优劣,并为图像分割技术的进一步发展提供参考。

三、实验内容1. 数据准备:收集不同场景下的图像数据,包括自然景观、医学影像、交通场景等。

2. 算法选择:选择常用的图像分割算法,如基于阈值的分割、边缘检测、区域生长等。

3. 实验设计:将不同算法应用于不同场景的图像数据上,对比它们的分割效果和计算速度。

4. 结果分析:对比不同算法的优缺点,并分析其适用场景和改进空间。

四、实验结果通过实验我们发现,在自然景观图像中,基于阈值的分割算法表现较好,能够有效地将图像分割成不同的颜色区域;而在医学影像中,边缘检测算法表现更为出色,能够准确地识别出器官的边缘;在交通场景中,区域生长算法表现较好,能够有效地区分不同的交通标志和车辆。

五、结论不同的图像分割算法在不同场景下有着不同的表现,没有一种算法能够适用于所有场景。

因此,我们需要根据具体的应用场景选择合适的图像分割算法,或者结合多种算法进行优化,以达到更好的分割效果。

六、展望未来,我们将继续探究图像分割算法的优化和改进,以适应不同场景下的需求。

同时,我们还将研究图像分割算法在深度学习和人工智能领域的应用,为图像分割技术的发展贡献力量。

通过本次实验,我们对图像分割算法有了更深入的了解,也为其在实际应用中的选择提供了一定的指导。

希望我们的研究能够为图像分割技术的发展做出一定的贡献。

实验2图像分割

实验2图像分割

实验2图像分割实验⼆、图像分割⼀、实验⽬的1、使学⽣通过实验体会⼀些主要的分割算⼦对图像处理的效果,以及各种因素对分割效果的影响;2、使⽤MatLab 软件进⾏图像的分割;3、能够⾃⾏评价各主要算⼦在⽆噪声条件下和噪声条件下的分割性能;4、能够掌握分割条件(阈值等)的选择;5、完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。

⼆、实验原理1、边缘检测(1)使⽤Roberts 算⼦的图像分割实验,调⼊并显⽰⼀幅图像*.gif或*.tif;使⽤Roberts 算⼦对图像进⾏边缘检测处理;Roberts 算⼦为⼀对模板,相应的矩阵为:rh = [0 1;-1 0]; rv = [1 0;0 -1];这⾥的rh 为⽔平Roberts 算⼦,rv为垂直Roberts 算⼦。

可以显⽰处理后的⽔平边界和垂直边界检测结果;⽤“欧⼏⾥德距离”⽅式计算梯度的模,显⽰检测结果;对于检测结果进⾏⼆值化处理,并显⽰处理结果。

(2)使⽤Prewitt 算⼦的图像分割实验使⽤Prewitt 算⼦进⾏内容(1)中的全部步骤。

(3)使⽤Sobel 算⼦的图像分割实验使⽤Sobel 算⼦进⾏内容(1)中的全部步骤。

(4)使⽤Canny算⼦进⾏图像分割实验。

(5) 使⽤拉普拉斯算⼦进⾏图像分割实验。

I=imread('D:\blood.bmp');Imshow(I);BW1=edge(I,'roberts');BW2=edge(I,'prewitt');BW3=edge(I,'sobel');BW4=edge(I,'log');BW5=edge(I,'canny');figure(1),imshow(I),title('Original Image'); figure(2),imshow(BW1),title('roberts'); figure(3),imshow(BW2),title('prewitt'); figure(4),imshow(BW3),title('sobel'); figure(5),imshow(BW4),title('log'); figure(6),imshow(BW5),title('canny');2、灰度阀值分割(1)单阈值分割图像先将⼀幅彩⾊图像转换为灰度图像,显⽰其直⽅图,参考直⽅图中灰度的分布,尝试确定阈值;应反复调节阈值的⼤⼩,直⾄⼆值化的效果最为满意为⽌。

图像分割实验报告

图像分割实验报告

图像分割实验报告医学图像处理实验报告实验名称:图像分割设计实验姓名: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)0 1 01 -4 10 1 04邻域模板算子,2f = 8z5 – (z1 + z2 + z3 + z4+z5 + z6 + z7+ z8)1 1 11 -8 11 1 18邻域模板算子2、区域增长区域增长是通过一个起始点作为种子点对他周围的点进行选择。

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

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

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

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

三、实验代码及结果1、拉普拉斯边缘检测代码如下:%主函数如下:clc;closeall;clearall;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边缘图像');%拉普拉斯边缘检测函数如下:functionImagLapEdge = LaplaceEdge(ImagGray,MoldType,Thresh)%-----------------参数介绍-------------------- %输入参数:% ImagGray: 输入的灰度图像% MoldType: 摸板类型,包括四邻域和八邻域 % Thresh: 边缘检测阈值%输出参数:% ImagEdge: 边缘像素点,存储的是二值化图像[r,c] = size(ImagGray); ImagLapEdge = zeros(r,c);%四邻域拉普拉斯边缘检测算子if 4 == MoldTypefori = 2:r-1for j = 2:c-1Temp =-4*ImagGray(i,j)+ImagGray(i-1,j)+ImagGray(i+1,j)+ImagGray(i,j-1)+ImagGray(i,j+1);if Temp > ThreshImagLapEdge(i,j) = 255; elseImagLapEdge(i,j) = 0; endendendend%八邻域拉普拉斯边缘检测算子if 8 == MoldTypefori = 2:r-1for j = 2:c-1Temp =-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 > ThreshImagLapEdge(i,j) = 255; elseImagLapEdge(i,j) = 0;endendendend拉普拉斯边缘检测实验结果如下:图1 原灰度图像2、区域增长实验代码:主函数如下:clc;closeall;clearall;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('区域分割后的图片'); holdonplot(x,y,'+');由于区域增长代码老师已给这里就不在写出。

数字图像处理技术-图像分割

数字图像处理技术-图像分割

实验七图像分割课程名称:数字图像处理技术实验日期:成绩:班级:姓名:学号: 1一、实验目的1.了解图像分割的基本操作;2. 实现图像的阈值分割、区域生长。

3.掌握图像膨胀、腐蚀、开运算、闭运算等形态学操作函数的使用方法;4. 实现二值图像的形态学应用二、实验内容1. 在GUI中,实现图像的阈值分割(交互式、迭代法)、区域生长。

2. 在GUI中,,实现二值图像的膨胀、腐蚀, 比较'结构元素类型为:square,line,diamond, disk等的区别。

3. 在GUI中,实现二值图像的开运算、闭运算。

4. 在GUI中,实现二值图像的形态学应用:边界抽取(boundary extraction)区域填充(region filling)细化(thinning)粗化(thickening)骨架(skeletons)修剪(pruning)三、实验代码function axes1_CreateFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns calledimshow('1.jpg')% Hint: place code in OpeningFcn to populate axes1% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;A=imread('1.jpg');subplot(1,3,1);imshow(A);A1=rgb2gray(A);subplot(1,3,2);imshow(A1);Y=im2bw(A1,0.6);subplot(1,3,3);imshow(Y);% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;W = imread('1.jpg');subplot(2,2,1);imshow(W);A=rgb2gray(W);subplot(2,2,2);imshow(A);h=imhist(A);t=[];t(1)=128;MAX=500;for i=1:MAXs1=0;s2=0;s3=0;s4=0;for k=1:t(i)s1=s1+h(k)*k;s2=s2+h(k);endfor k=1+t(i):256s3=s3+h(k)*k;s4=s4+h(k);endt(i+1)=floor((s1/s2+s3/s4)/2);if (abs(t(i+1)-t(i))<10^-7)break;endendtt=t(i+1);B=A;B(find(B<tt))=0;B(find(B>=tt))=255;subplot(2,2,4);imshow(B);% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');I=im2bw(I);subplot(1,3,1);imshow(I);se1=strel('square',9);B1=imdilate(I,se1);subplot(1,3,3);imshow(B1);% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');I=im2bw(I);subplot(1,3,1);imshow(I);se1=strel('square',9);B1=imerode(I,se1);subplot(1,3,3);imshow(B1);% --- Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');I=im2bw(I);subplot(1,3,1);imshow(I);se1=strel('square',9);B1=imopen(I,se1);subplot(1,3,3);imshow(B1);% --- Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');I=im2bw(I);subplot(1,3,1);imshow(I);se1=strel('square',9);B1=imclose(I,se1);subplot(1,3,3);imshow(B1);% --- Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');subplot(1,3,1),imshow(I);I1=im2bw(I);subplot(1,3,2),imshow(I1);I2=bwperim(I1);subplot(1,3,3);imshow(I2);% --- Executes on button press in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in pushbutton10.function pushbutton10_Callback(hObject, eventdata, handles)% hObject handle to pushbutton10 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;A=imread('1.jpg');subplot(1,3,1),imshow(A);a=im2bw(A);subplot(1,3,2),imshow(a);b=bwmorph(a,'thin',Inf);subplot(1,3,3),imshow(b);% --- Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;A=imread('1.jpg');subplot(1,3,1),imshow(A);a=im2bw(A);subplot(1,3,2),imshow(a);b=bwmorph(a,'thicken',Inf);subplot(1,3,3),imshow(b);% --- Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)% hObject handle to pushbutton12 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;I=imread('1.jpg');subplot(2,2,1);imshow(I);I1=im2bw(I);subplot(2,2,2);imshow(I1);I2=bwmorph(I1,'skel',1);subplot(2,2,3);imshow(I2);I3=bwmorph(I1,'skel',2);subplot(2,2,4);imshow(I3);;% --- Executes on button press in pushbutton13.function pushbutton13_Callback(hObject, eventdata, handles)% hObject handle to pushbutton13 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure;RGB=imread('1.jpg');RGB1=imcrop(RGB,[60,255,400,425]); subplot(1,3,1);imshow(RGB);subplot(1,3,3);imshow(RGB1);四、实验结果截图五、实验体会实现图像的阈值分割、区域生长,基本掌握图像膨胀、腐蚀、开运算、闭运算等形态学操作函数的使用方法。

图像分割处理实验报告

图像分割处理实验报告

一、实验目的:1.学会对图像进行二值化处理和直方图均衡化处理2.进一步了解数字图像处理的知识以及matlab软件的使用3.掌握基本的查资料方法二、实验内容把这幅图像分成同样大小的10幅人脸图片然后分别对第一行5幅人脸图像的第3 第4 第5 第二行5幅人脸图像的第1 第5 进行如下处理:1.进行大津法阈值分割的二值化处理2.进行直方图均衡化处理三、实验具体代码以及结果1.实验代码%clcclearsrc_path='D:\histogram matching.bmp'; %原始图片路径dst_path='D:\picture\'; %分割图片后保存路径mkdir(dst_path);A = imread(src_path); %读入原始图片[m,n,l] = size(A); %获得尺寸for i = 1:2for j = 1:5m_start=1+(i-1)*fix(m/2);m_end=i*fix(m/2);n_start=1+(j-1)*fix(n/5);n_end=j*fix(n/5);AA=A(m_start:m_end,n_start:n_end,:); %将每块读入矩阵imwrite(AA,[dst_path num2str(i) '-' num2str(j) '.jpg'],'jpg'); %保存每块图片endendcd 'D:\pic'x1=imread('1-3.jpg');%%%%%%%%%目标读取图像x2=imread('1-4.jpg');x3=imread('1-5.jpg');x4=imread('2-1.jpg');x5=imread('2-5.jpg');% matlab 自带的自动确定阈值的方法level1=graythresh(x1);level2=graythresh(x2);level3=graythresh(x3);level4=graythresh(x4);level5=graythresh(x5);%用得到的阈值直接对图像进行二值化处理并显示BW1=im2bw(x1,level1);BW2=im2bw(x2,level2);BW3=im2bw(x3,level3);BW4=im2bw(x4,level4);BW5=im2bw(x5,level5);figure(1),imshow(BW1);figure(2),imshow(BW2);figure(3),imshow(BW3);figure(4),imshow(BW4);figure(5),imshow(BW5);%直方图均衡化处理%%%%%%%%%%调用直方图均衡化函数 histeq()%%%%%均衡化处理后的灰度级直方图分布figure(6),imhist(histeq(rgb2gray(x1))); figure(7),imhist(histeq(rgb2gray(x2))); figure(8),imhist(histeq(rgb2gray(x3))); figure(9),imhist(histeq(rgb2gray(x4))); figure(10),imhist(histeq(rgb2gray(x5)));%%%均衡化处理后的图像%%%%%%figure(11),imshow(histeq(rgb2gray(x1))); figure(12),imshow(histeq(rgb2gray(x2))); figure(13),imshow(histeq(rgb2gray(x3))); figure(14),imshow(histeq(rgb2gray(x4))); figure(15),imshow(histeq(rgb2gray(x5)));。

医学图像处理实验报告 ----图像分割

医学图像处理实验报告 ----图像分割

医学图像处理实验报告 ----图像分割医学图像处理实验报告----图像分割一.实验目的:掌握基本的图像分割方法,观察图像分割的结果,加深对边缘检测、模板匹配、区域生长的理解。

二.实验内容:边缘检测、模板匹配、区域生长。

三.实验方法:1.边缘检测:图象Blood边缘检测方法Sobel打开Toolboxes\Image Processing项选Edge Detection并运行选图象Blood边缘检测方法Sobel如图1所示按Apply键观察检测到的边界从上面四幅图像的对比来看,阈值逐渐变大,而满足要求的像素点也逐渐变少,使得图像的边缘提取的效果也越来越差,图像轮廓变得不清楚了。

以下为采用Prewitt方法的边缘提取效果:以下为Roberts方法边缘提取的效果:以下为Laplacian of Gaussian方法边缘提取的效果:以上的各种方法的理论算法有所不同,但总体效果基本一致。

以下是选其他图像重做上面的实验(适当简化)2.模板匹配:在Photoshop中打开一黑白灰度图象文件在滤镜菜单其他子菜单中选自定项在自定界面中输入点模板按好键观察处理后图象。

原始图像:点模板滤镜后的图像:0 0 00 1 00 0 0点模板: -1 -1 -1 -1 8 -1-1 -1 -1线模板: -1 -1 -1 2 2 2-1 -1 -1线模板: -1 2 -1 -1 2 -1-1 2 -1线模板: 2 -1 -1 -1 2 -1-1 -1 2线模板: -1 -1 2 -1 2 -12 -1 -1从上面的四种线模板得比较中可以发现:第一种对检测横向图像更为有效,第二种为竖向,后两种为135和45度。

这是与模板的构成有关的。

方向模板:-1 1 1-1 -2 1-1 1 1可以看出这个方向模板较多地体现出东方向的像素。

方向模板:1 1 -11 -2 -11 1 -1可以看出这个模板较多地体现出西方向的情况。

方向模板:-1 -1 -11 -2 11 1 1这个模板较多地体现了南向的情况。

图像分割实验报告汇总

图像分割实验报告汇总
图像分割实验
一、实验目的
1.掌握图像分割的基本思想,了解其分割技术及其计算策略;
2.学会从图像处理到分析的关键步骤,掌握图像分割过程;
3.了解图像分割的意义,进一步加深对图像分析和理解;
4.掌握基本分割方法:迭代分割和OTSU图像分割,并编程实现。
二、实验原理
(一)迭代阈值分割选取的基本思路是:首先根据图像中物体的灰度分布情况,选取一个近似阈值作为初始阈值,一个较好的方法就是将图像的灰度均值作为初始阈值,然后通过分割图像和修改阈值的迭代过程获得认可的最佳阈值。迭代式阈值选取过程可描述如下:
由图3可得:对于直方图双峰不明显或图像目标和背景比例差异悬殊迭代法所选取的阈值不如最大类间方差法(OTSU)(差异不是很大,很细微)。
但是对于直方图双峰明显谷底较深的图像迭代分割可以较快地获得满意结果。
五、实验程序段(具体见实验框架)
1.迭代图像分割:
void CImageProcessingDoc::Onimagediedaifenge()
msg.Format("分割阈值T=%d",T);
AfxMessageBox(msg);
for(j=0;j<m_Height;j++)
{
for(i=0;i<m_Width;i++)
{
if (m_pDibInit->m_pDibBits[j*m_SaveWidth + i]>=T)
m_pDibInit->m_pDibBits[j*m_SaveWidth + i]=255;
1.计算初始化阈值 = ;
2.根据 ,将图像分为两部分,分别计算灰度值期望,取其平均值为g1;

(完整word版)图像分割 实验报告

(完整word版)图像分割 实验报告
%例2迭代阈值分割
f=imread('cameraman.tif');%读入图像
subplot(1,2,1);imshow(f);%创建一个一行二列的窗口,在第一个窗口显示图像
title('原始图像');%标注标题
f=double(f);%转换位双精度
T=(min(f(:))+max(f(:)))/2;%设定初始阈值
Tnew=(mean(f(r1))+mean(f(r2)))/2;%新阈值两个范围内像素平均值和的一半
done=abs(Tnew-T)<1;%设定两次阈值的比较,当满足小于1时,停止循环,
1是自己指定的参数
T=Tnew;%把Tnw的值赋给T
i=i+1;%执行循坏,每次都加1
end
f(r1)=0;%把小于初始阈值的变成黑的
给背景指定一个特定的灰度级
该方法将背景用一个固定灰度级LG表现,便于研究边缘灰度的变化。
二值图像输出
在某些场合(如字符识别等),既不关心非边缘像素的灰度级差别,又不关心边缘像素的灰度级差别,只关心每个像素是边缘像素还是非边缘像素,这时可采用二值化图像输出方式,其表达式为
此法将背景和边缘用二值图像表示,便于研究边缘所在位置。
imshow(f,[]); %显示原图像f
title('原始图像'); %给图像加标题为'原始图像'
J=imnoise(f,'gaussian',0.02);%对图像加高斯噪声
subplot(3,3,2);%创建有3*3子图像的窗口,原图在位置2
imshow(J,[]);%显示加噪声的图像
title('加高斯噪声图像');%给图像加标题为'加高斯噪声图像'

图像分割

图像分割

实验三图像分割一、实验目的1、掌握图像分割的基本概念;2、基本了解图像分割的原理和方法;3、掌握用阈值法进行图像分割的基本方法。

二、实验原理及知识点图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。

如不同目标物体所占的图像区域、前景所占的图像区域等。

连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。

图像分割是图像处理与机器视觉的基本问题之一。

图像分割的一个难点在于,在划分之前,不一定能够确定图像区域的数目。

设图像 f(x,y)的灰度范围属于[z1,z2],根据一定的经验及知识确定一个灰度的门限,或者根据一定准则确定[z1,z2]的一个划分 z1,z2,其中 z1 代表目标,z2 代表背景。

根据像素的灰度属于这个划分的哪个部分来将其分类,称为灰度阈值分割法,即:如果 f(x,y)属于 z1,判断(x,y)像素属于目标。

如果 f(x,y)属于 z2,则判断(x,y)像素属于背景。

分割门限选择的准确性直接影响分割的精度及图像描述分析的正确性。

门限选得太高,容易把大量的目标判为背景,定的太低又会把大量的背景判为目标。

因此正确分割门限是很重要的。

1、双峰法如果图像所含的目标区域和背景区域大小可比,而且目标区域和背景区域在灰度上有一定的差别,那么该图像的灰度直方图会呈现双峰—谷状,如下图所示:其中一个峰值对应于目标的中心灰度,另一个峰值对应于背景的中心灰度。

由于目标边界点较少且其灰度介于它们之间。

所以双峰之间的谷点对应着边界的灰度,可以将谷点的灰度作为分割门限图 3.1 双峰图2、自适应全局阈值(单阀值)迭代平均法:为 T 选取一个初始估计使用 T 分割图像。

这时产生两组像素:灰度值>=T 的所有像素组成的 G1,和灰度值<T 的所有像素组成的 G2计算 G1 和 G2 范围内像素的平均灰度值u1 和 u2计算新阈值 T=(u1+u2)/2重复上述步骤,直到迭代中前后两次的阈值差小于预先设定参数为止3、最大类间方差法 (Otsu)在对图像进行阈值分割时,选定的分割阈值应使前景区域的平均灰度、背景区域的平均灰度与整幅图像的平均灰度之间差别最大,这种差异用区域的方差来表示。

图像分割实验报告

图像分割实验报告

图像分割实验报告一、实验目的1. 掌握图像分割的基本思想,了解其分割技术及其计算策略;2. 学会从图像处理到分析的关键步骤,掌握图像分割过程;3. 了解图像分割的意义,进一步加深对图像分析和理解;4. 掌握基本分割方法:迭代分割和OTSU图像分割,并编程实现。

二、实验原理(一)迭代阈值分割选取的基本思路是:首先根据图像中物体的灰度分布情况,选取一个近似阈值作为初始阈值,一个较好的方法就是将图像的灰度均值作为初始阈值,然后通过分割图像和修改阈值的迭代过程获得认可的最佳阈值。

迭代式阈值选取过程可描述如下:1. 计算初始化阈值g0=(g max+g min);22. 根据g0,将图像分为两部分,分别计算灰度值期望,取其平均值为g1;3. 如此反复迭代,当|g n-g n−1|足够小时,停止迭代,取T=g n即为最终阈值。

(二)OTSU图像分割(最大类间方差法)是一种自适应的阈值确定的方法,是按图像的灰度特性,将图像分成背景和目标两部分。

背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。

因此,使类间方差最大的分割意味着错分概率最小。

以最佳门限将图像灰度直方图分割成两部分,使两部分类间方差取最大值,即分离性最大。

OTSU阈值选取过程可描述如下:1.记T为目标与背景的分割阈值,目标点数占图像比例为w1,平均灰度为u1;背景点数占图像比例为w2,平均灰度为u1;2.图像的总平均灰度为:u=w1*u1+w2*u2;3.目标和背景图象的方差:g=w1*(u1-u)*(u1-u)+w1*(u2-u)*(u2-u)=w1*w2*(u1-u2)*(u1-u2);4.当方差g最大时,可以认为此时前景和背景差异最大,此时的灰度T是最佳阈值。

二、实验内容1. 利用C++编程实现迭代阈值图像分割算法;2. 利用C++编程实现OTSU动态阈值图像分割算法。

图像分割技术的使用教程与案例分析

图像分割技术的使用教程与案例分析

图像分割技术的使用教程与案例分析图像分割是计算机视觉领域的重要研究方向,它指的是将图像分成若干个具有相似特征的区域。

图像分割广泛应用于医学图像分析、目标检测、无人驾驶等领域。

本文将详细介绍图像分割技术的使用教程,并分享一些经典案例分析。

一、图像分割的基础原理图像分割的目标是将图像中的每个像素分配到对应的区域,使得同一区域内的像素具有相似的特征。

常用的图像分割方法包括基于阈值、边缘检测、区域生长、聚类等。

1. 基于阈值的分割方法:这是最简单且常用的分割方法,通过设定阈值,将图像中灰度值高于或低于阈值的像素分为不同的区域。

可以根据应用场景的需求来选择适当的阈值。

2. 边缘检测:边缘检测可以提取图像中的边界信息,然后根据边界信息将图像分割成不同的区域。

常用的边缘检测算法包括Sobel、Canny等。

3. 区域生长:区域生长是根据像素的相似性原则进行的,从种子像素开始,将与之相邻且相似的像素归为同一区域,逐步扩展分割区域。

区域生长的效果受到种子的选择、相似性准则的设定等因素的影响。

4. 聚类:聚类方法将图像像素聚合成若干个具有相似特征的集群,进而实现对图像的分割。

常用的聚类方法有K-means、Mean-shift等。

二、图像分割工具的使用教程在实际应用中,图像分割常常借助计算机软件或工具进行。

以下是两个常用的图像分割工具的使用教程。

1. OpenCVOpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。

下面是使用OpenCV进行图像分割的简单示例:(1)导入必要的库:```pythonimport cv2import numpy as np```(2)读取图像:```pythonimage = cv2.imread('image.jpg')```(3)将图像转换成灰度图像:```pythongray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)```(4)使用阈值方法进行分割,以获得二值图像:```pythonret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)```(5)显示分割结果:```pythoncv2.imshow('Segmentation', binary)cv2.waitKey(0)cv2.destroyAllWindows()```2. MATLABMATLAB是一种常用的科学计算工具,也提供了丰富的图像处理与分析函数。

实验二 图像分割与边缘检测

实验二  图像分割与边缘检测

实验二图像分割与边缘检测一.实验目的及要求1.利用MATLAB研究图像分割与边缘检测的常用算法原理;2.掌握MATLAB图像域值分割与边缘检测函数的使用方法;3.了解边缘检测的算法和用途,比较Sobel、Prewitt、Canny等算子边缘检测的差异。

二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

1.图像阈值分割clear all, close all;I = imread('rice.tif');figure (1),imshow(I)figure(2); imhist(I)T=120/255;Ibw1 = im2bw(I,T); %选择阈值T=120/255对图像二值化;figure(3);subplot(1,2,1), imshow(Ibw1);T=graythresh(I); %采用Otsu方法计算最优阈值T对图像二值化;L = uint8(T*255)Ibw2 = im2bw(I,T);subplot(1,2,2), imshow(Ibw2);help im2bw;help graythresh;(令T取不同值,重做上述试验,观察试验结果)以下是程序执行结果:Comand窗口:L =125IM2BW Convert image to binary image by thresholding.IM2BW produces binary images from indexed, intensity, or RGBimages. To do this, it converts the input image to grayscaleformat (if it is not already an intensity image), and thenconverts this grayscale image to binary by thresholding. Theoutput binary image BW has values of 0 (black) for all pixelsin the input image with luminance less than LEVEL and 1(white) for all other pixels. (Note that you specify LEVEL inthe range [0,1], regardless of the class of the input image.)BW = IM2BW(I,LEVEL) converts the intensity image I to blackand white.BW = IM2BW(X,MAP,LEVEL) converts the indexed image X withcolormap MAP to black and white.BW = IM2BW(RGB,LEVEL) converts the RGB image RGB to black andwhite.Note that the function GRAYTHRESH can be used to compute LEVELautomatically.Class Support-------------The input image can be of class uint8, uint16, or double.The output image BW is of class uint8.Example-------load treesBW = im2bw(X,map,0.4);imshow(X,map), figure, imshow(BW)See also GRAYTHRESH, IND2GRAY, RGB2GRAY.GRAYTHRESH Compute global image threshold using Otsu's method.LEVEL = GRAYTHRESH(I) computes a global threshold (LEVEL) that can be used to convert an intensity image to a binary image with IM2BW. LEVELis a normalized intensity value that lies in the range [0, 1].GRAYTHRESH uses Otsu's method, which chooses the threshold to minimize the intraclass variance of the thresholded black and white pixels.Class Support-------------The input image I can be of class uint8, uint16, or double. LEVELis a double scalar.Example-------I = imread('blood1.tif');level = graythresh(I);BW = im2bw(I,level);imshow(BW)See also IM2BW.下面是T取不同值时的所得的结果:T=60时:原图像原图像的灰度直方图T=60时分割的结果Otsu方法分割的结果T=120时:原图像原图像的灰度直方图T=120时分割的结果Otsu方法分割的结果T=200时:原图像原图像的灰度直方图T=120时分割的结果Otsu方法分割的结果对以上实验结果分析如下:由matalab命令窗口显示的内容可知,不同的阈值分割的结果并不一样。

赵琛-图像分割实验

赵琛-图像分割实验

图像分割实验 121180166 赵琛一、实验目的进一步学习各种图像分割算法二、实验原理1.图像分割图像分割是将图像划分成若干个互不相交的小区域的过程, 小区域是某种意义下具有共同属性的像素的连通集合。

图像分割有三种不同的途径:区域法、边界法、边缘法。

最常用的是灰度阈值化处理进行的图像分割:(,)(,)255(,)f x y T g x y f x y T⎧<⎪=⎨≥⎪⎩域值T 的选取直接影响分割的效果! (1)直方图双峰域值选择 (2)迭代域值选择迭代思想:选择一个初始估计值,通过某种策略不断改进(调制)新的估计值,直到满足给定的准则。

迭代步骤:⑴选择一个初值估计值T ,一般为最大灰度值和最小灰度值的中间值; ⑵使用域值T 分割图像,得到两组像素G1(>=T)和G2(<T ); ⑶计算两组像素的灰度均值:μ1和μ2; ⑷计算新域值T =(μ1和μ2)/2;⑸重复步骤2~4,直到新域值的改变量小于预先定义的参数e 。

2、边缘检测灰度或结构等信息的突变出称为边缘,在空间域借助微分算子通过卷积来完成,而空域的微分在离散数字图像可以采用差分来近似。

Reborts 算子Reboerts 算子是一种利用局部差分来寻找边缘的算子,Roberts 梯度算子所采用的是对角方向相邻两像素值之差,算子形式如下:)1,1(),(---=j i f j i f Gx (2.3.3 )1,(),1(---=j i f j i f Gy(2.3.4 22|),(|y x G G y x G +=(2.3.5)Roberts 梯度算子对应的卷积模版为:⎥⎦⎤⎢⎣⎡-=1001Gx⎥⎦⎤⎢⎣⎡-=0110Gy (2.3.6)用以上两个卷积算子与图像运算后,可求出图像的梯度幅值 G ( x,y),然后选择 适当的阈值τ ,若 G ( x,y)>τ,则 (i ,j)为边缘点,否则,判断 (i ,j)为非边缘点。

数字图像实验报告 图像分割

数字图像实验报告  图像分割

图像分割实验目的:1.了解图像分割的基本理论和方法;2.掌握对图像进行点、线和边缘检测的方法;3.掌握阈值分割的方法和阈值的选择;4.熟悉区域生长法和分水岭分割算法实验内容:1.对图片lung2.bmp和加噪声的lung3.bmp分别用3*3的sobel算子、prewitt算子、log算子、canny算子进行处理,根据处理结果分析上述算子,分别是什么类型的?有何作用?思考一下如何设计算子。

lung3.bmp为g = imnoise(f,”salt & pepper”,0.02)(0.02表示发生概率)答:lung2.bmp:>> f=imread('lung2.bmp');>> [fs,ts]=edge(f,'sobel');>> [fp,tp]=edge(f,'prewitt');>> [fl,tl]=edge(f,'log');>> [fc,tc]=edge(f,'canny');>> subplot(2,3,1),imshow(f),title '原图',subplot(2,3,2),imshow(fs),title 'sobel',subplot(2,3,3),imshow(fp),title'prewitt',subplot(2,3,4),imshow(fl),title'log',subplot(2,3,5),imshow(fc),title 'canny';lung3.bmp:>> g=imnoise(f,'salt & pepper',0.02);>> [gs,tgs]=edge(g,'sobel');>> [gp,tgp]=edge(g,'prewitt');>> [gl,tgl]=edge(g,'log');>> [gc,tgc]=edge(g,'canny');>> subplot(2,3,1),imshow(g),title '噪音图',subplot(2,3,2),imshow(gs),title 'sobel',subplot(2,3,3),imshow(gp),title'prewitt',subplot(2,3,4),imshow(gl),title'log',subplot(2,3,5),imshow(gc),title 'canny';Prewitt算子和Sobel算子提取边缘的结果差不多。

图像分割实验报告

图像分割实验报告

图像分割实验报告
《图像分割实验报告》
图像分割是计算机视觉领域的一项重要技术,它能够将图像分割成不同的区域或对象,为图像识别、目标检测等任务提供了重要的基础。

本实验报告将介绍我们在图像分割领域的研究成果及实验结果。

实验目的
本次实验的目的是通过对图像分割算法的研究和实验,探讨不同算法在图像分割任务中的表现,并对比它们的优缺点,为进一步的研究提供参考。

实验方法
我们选取了常用的图像分割算法,包括基于阈值的分割、区域增长法、边缘检测法、基于聚类的分割等,对这些算法进行了实验比较。

我们使用了多种类型的图像数据集,包括自然场景图像、医学影像等,以验证算法在不同场景下的表现。

实验结果
通过实验,我们发现不同的图像分割算法在不同的图像类型下表现出不同的优劣势。

基于阈值的分割算法在简单的图像中表现较好,但在复杂的场景下效果有限;区域增长法对于连续性较强的对象分割效果较好;边缘检测法在处理边缘清晰的图像时表现出色;基于聚类的分割算法对于复杂背景下的对象分割有一定优势。

结论
通过本次实验,我们对图像分割算法的优劣势有了更深入的了解,不同的算法适用于不同的场景。

在未来的研究中,我们将进一步探索图像分割算法的改进
和优化,以提高图像分割的准确性和效率,为计算机视觉领域的发展贡献力量。

图像处理实验-图像增强和图像分割剖析

图像处理实验-图像增强和图像分割剖析

图像处理实验图像增强和图像分割一、实验目的:掌握用空间滤波进行图像增强的基本方法,掌握图像分割的基本方法。

二、 实验要求:1、测试图像1中同时含有均值为零的均匀分布噪声和椒盐噪声。

用大小为5×5的算术均值滤波器和中值滤波器对图像进行处理,在不同窗口中显示原图像及各处理结果图像,并分析哪一种滤波器去噪效果好?2、对测试图像2进行图像分割,求出分割测试图像2的最正确阈值。

分别显示原图、原图的直方图〔标出阈值〕、和分割后的二值图。

实验内容:1. 实验原理1) 图像增强:流程图:图像增强可以通过滤波的方式来完成,即消除一部分的噪声。

滤波又可以分为均值滤波和中值滤波。

1. 中值滤波原理:中值滤波就是选用一个含有奇数个像素的滑动窗口,将该窗口在图像上扫描,把其中所含像素点按灰度级的升〔或降〕序排列,取位于中间的灰度值来代替窗口中心点的灰度值。

对于一维序列{N f }: 21,},...,,...,{-=∈=+-m u N i f f f Med y ui i u i i 对于二维序列{ij F }:为滤波窗口W y ij F Med Wij }{= 2. 均值滤波原理:对于含噪声的原始图像g(s,t)的每一个像素点去一个领域N ,用N 中所包含的相速的灰度平均值,作为领域平均处理后的图像f(x,y)的像素值,即:∑∈=xyS t s t s g mn y x f ),(),(1),(ˆ 2) 图像分割:图像分割:依据图像的灰度、颜色等特征,将一幅图像分为假设干个互不重叠的、具有某种同质特征的区域。

本实验中我们是根据灰度值,将灰度值大于阈值T的像素统一置为255,小于的则置为0。

如何求出最合适的分割阈值,则需要用到迭代算法。

迭代法算法步骤:(1) 初始化阈值T (一般为原图像所有像素平均值)。

(2) 用T分割图像成两个集合:G1 和G2,其中G1包含所有灰度值小于T的像素,G2包含所有灰度值大于T的像素。

图像分割实验报告

图像分割实验报告

图像分割实验报告图像分割实验报告一、引言图像分割是计算机视觉领域中的重要研究方向之一,它旨在将一幅图像分割成若干个具有相似特征的区域。

图像分割在许多应用中都起着关键作用,如目标检测、图像识别、医学图像处理等。

本实验旨在探究不同的图像分割算法的性能和适用场景。

二、实验方法本次实验选取了常用的两种图像分割算法:基于阈值的分割算法和基于边缘检测的分割算法。

实验使用的图像为一幅自然风景图。

1. 基于阈值的分割算法基于阈值的分割算法是最简单且常用的分割方法之一。

该方法通过设置一个或多个阈值,将图像中像素的灰度值与阈值进行比较,将像素分为不同的区域。

实验中,我们通过观察图像的灰度直方图,选择合适的阈值对图像进行分割。

2. 基于边缘检测的分割算法基于边缘检测的分割算法通过检测图像中的边缘信息来实现分割。

实验中,我们选取了经典的Canny边缘检测算法。

该算法首先对图像进行高斯滤波,然后计算图像的梯度,最后通过非极大值抑制和双阈值处理来提取图像的边缘。

三、实验结果1. 基于阈值的分割算法通过观察图像的灰度直方图,我们选择了适当的阈值对图像进行分割。

实验结果显示,该方法能够将图像中的前景物体与背景分离,并得到清晰的边界。

然而,该方法对光照变化和噪声比较敏感,当图像中存在复杂的纹理和颜色变化时,分割效果较差。

2. 基于边缘检测的分割算法使用Canny边缘检测算法对图像进行分割,实验结果显示,该方法能够有效地提取图像中的边缘信息。

与基于阈值的方法相比,基于边缘检测的方法对光照变化和噪声有较好的鲁棒性。

然而,该方法在分割复杂纹理和颜色变化较小的区域时,容易产生边缘断裂的问题。

四、讨论与总结通过本次实验,我们对比了基于阈值的分割算法和基于边缘检测的分割算法的优缺点。

基于阈值的方法简单直观,适用于对比较简单的图像进行分割;而基于边缘检测的方法能够提取图像中的边缘信息,适用于复杂的图像分割任务。

然而,两种方法都存在一定的局限性,需要根据具体的应用场景选择合适的算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二、图像分割
一、实验目的
1、使学生通过实验体会一些主要的分割算子对图像处理的效果,以及各种因素对分割效果的影响;
2、使用MatLab 软件进行图像的分割;
3、能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能;
4、能够掌握分割条件(阈值等)的选择;
5、完成规定图像的处理并要求正确评价处理结果,能够从理论上作出合理的解释。

二、实验原理
1、边缘检测
(1)使用Roberts 算子的图像分割实验,调入并显示一幅图像*.gif或*.tif;使用Roberts 算子对图像进行边缘检测处理;Roberts 算子为一对模板,相应的矩阵为:
rh = [0 1;-1 0]; rv = [1 0;0 -1];
这里的rh 为水平Roberts 算子,rv为垂直Roberts 算子。

可以显示处理后的水平边界和垂直边界检测结果;用“欧几里德距离”方式计算梯度的模,显示检测结果;对于检测结果进行二值化处理,并显示处理结果。

(2)使用Prewitt 算子的图像分割实验
使用Prewitt 算子进行内容(1)中的全部步骤。

(3)使用Sobel 算子的图像分割实验
使用Sobel 算子进行内容(1)中的全部步骤。

(4)使用Canny算子进行图像分割实验。

(5) 使用拉普拉斯算子进行图像分割实验。

I=imread('D:\blood.bmp');
Imshow(I);
BW1=edge(I,'roberts');
BW2=edge(I,'prewitt');
BW3=edge(I,'sobel');
BW4=edge(I,'log');
BW5=edge(I,'canny');
figure(1),imshow(I),title('Original Image'); figure(2),imshow(BW1),title('roberts'); figure(3),imshow(BW2),title('prewitt'); figure(4),imshow(BW3),title('sobel'); figure(5),imshow(BW4),title('log'); figure(6),imshow(BW5),title('canny');
2、灰度阀值分割
(1)单阈值分割图像
先将一幅彩色图像转换为灰度图像,显示其直方图,参考直方图中灰度的分布,尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意为止。

给图像加上零均值的高斯噪声(imnoise)重复上述过程,注意阈值的选择。

I=imread('D:\tupian.bmp');
I2=rgb2gray(I);
subplot(2,2,1);imshow(I);title('原图');
subplot(2,2,2);imshow(I2);title('原图转换为灰度图');
subplot(2,2,3);imhist(I2);title('灰度图转换直方图');
thread=160/255;I3=im2bw(I2,thread);
subplot(2,2,4);imshow(I3);title('阈值T=160/255分割图');
(2)多阈值分割图像
观察下列图像,对图1进行多阈值分割,使其分割结果如图2所示。

注意阈值的选择。

图1 图2
I=imread('D:\tupian.bmp');
figure(1);subplot(1,2,1);imshow(I);
[m,n]=size(I);
for i=1:m
for j=1:n
if(I(i,j)<120)
I(i,j)=255;
end
end
end
subplot(1,2,2);imshow(I);
三、实验步骤
1、打开计算机,启动MATLAB程序;
2、调入数字图像,并进行图像分割处理;
3、记录和整理实验报告。

四、实验仪器
1、计算机;
2、MATLAB等程序;
五、实验报告内容
1、叙述实验过程;
2、提交实验的原始图像和结果图像。

六、思考题
1 、评价Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边界检测的性能。

答:Roberts算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。

检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感。

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。

对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。

当对精度要求不是很高时,是一种较为常用的边缘检测方法。

Prewitt算子利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘。

对噪声具有平滑作用,定位精度不够高。

2、实验中所使用的四种算子所得到的边界有什么异同?
答:算子的存在就是对这种导数分割原理进行的实例化计算,是为了在计算过程中直接使用的一种计算单位。

Roberts算子:边缘定位准,但是对噪声敏感。

适用于边缘明显且噪声较少的图像分割。

Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。

经分析,由于Robert 算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。

Prewitt算子:对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。

Sobel算子:Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。

一般来说,距离越远,产生的影响越小。

Isotropic Sobel算子:加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。

Laplacian算子:这是二阶微分算子。

其具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。

但是,其对噪声比较敏感,所以,图像一般先经过平滑处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。

Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Laplacian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性质进行边缘定位;(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。

所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起的逐渐增加的噪声影响。

1.Sobel
其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值,缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,换言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意,算法具体实现很简单,就是3*3的两个不同方向上的模板运算,这里不再写出。

2.Robert算子
根据任一相互垂直方向上的差分都用来估计梯度,Robert算子采用对角方向相邻像素只差
3.Prewitt算子
该算子与Sobel算子类似,只是权值有所变化,但两者实现起来功能还是有差距的,据经验得知Sobel要比Prewitt更能准确检测图像边缘。

placian算子
拉普拉斯算子是一种二阶微分算子,若只考虑边缘点的位置而不考虑周围的灰度差时可用该算子进行检测。

对于阶跃状边缘,其二阶导数在边缘点出现零交叉,并且边缘点两旁的像素的二阶导数异号。

5.Canny算子
该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。

相关文档
最新文档