阈值法图像分割实验报告

合集下载

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

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

实验报告课程名称数字图像处理导论专业班级_______________姓名 _______________学号_______________电气与信息学院与谐勤奋求就是创新一.实验目得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、了解图像的分割技术,掌握图像的全局阈值分割技术并通过MATLAB实现;2、了解图像的边缘检测,掌握梯度算子图像边缘检测方法。

二、实验内容1、基于直方图的全局阈值图像分割方法;2、Edge命令(roberts,perwitt,sobel,log,canny),实现边缘检测。

三、实验原理1、全局阈值是最简单的图像分割方法。

其中,直方图法的原理如下:想做出图像的直方图,若其直方图呈双峰且有明显的谷底,则可以讲谷底点所对应的灰度值作为阈值T,然后根据该阈值进行分割,九可以讲目标从图像中分割出来。

这种方法是用于目标和背景的灰度差较大且直方图有明显谷底的情况。

2、用于边缘检测的梯度算子主要有Roberts算子、Prewitt算子、Sobel算子。

这三种检测算子中,Roberts算子定位精度较高,但也易丢失部分边缘,抗噪声能力差,适用于低噪声、陡峭边缘的场合。

Prewitt算子、Sobel算子首先对图像做平滑处理,因此具有一定的抑制噪声的能力,但不能排除检测结果中的虚假边缘,易出现多像素宽度。

四、实验步骤1、全局阈值分割:①读取一张图像;②生成该图像的直方图;③根据直方图双峰产生的低谷估计阈值T;④依次读取图像各个点的像素,若大于阈值,则将像素改为255,若小于阈值,则将该像素改为0;实验代码如下:I=imread('cameraman.tif'); %读取一张图像subplot(221);imshow(I); %显示该图像subplot(222);imhist(I); %生成该图像的直方图T=60; %根据直方图估计阈值T为60[m,n]=size(I); %取图像的大小为【m,n】for i=1:m %依次读取图像各个点的像素,若大于阈值,则将像素改为255,若小于阈值,则将该像素改为0for j=1:nif I(i,j)>=T I(i,j)=255;else I(i,j)=0;endendendsubplot(223);imshow(I); %显示全局阈值分割后的图像2、图像的边缘检测①读取一张图像;②分别使用roberts算子检测、Prewitt算子检测、sobel算子检测、log算子检测、canny算子检测对图像进行处理③输出实验结果图像实验代码如下:I=imread('cameraman.tif'); %读取一张图像subplot(231);imshow(I);title('原图像');BW1=edge(I,'roberts'); %进行Roberts算子边缘检测,门限值采用MATLAB默认值BW2=edge(I,'prewitt'); %进行prewitt算子边缘检测,门限值采用MATLAB默认值BW3=edge(I,'sobel'); %进行sobel算子边缘检测,门限值采用MATLAB默认值BW4=edge(I,'log'); %进行log算子边缘检测,门限值采用MATLAB默认值BW5=edge(I,'canny'); %进行canny算子边缘检测,门限值采用MATLAB默认值subplot(232);imshow(BW1,[]);title('进行Roberts算子边缘检测');subplot(233);imshow(BW2,[]);title('进行prewitt算子边缘检测');subplot(234);imshow(BW3,[]);title('进行spnel算子边缘检测’);subplot(235);imshow(BW4,[]);title('进行log算子边缘检测');subplot(236);imshow(BW5,[]);title('进行canny算子边缘检测');五、实验结果1、图像全局阈值分割源图像直方图全局阈值分割后的图像2、图像的边缘检测六、实验心得1、通过本次实验,我学习到利用MATLAB进行图像的全局阈值分割,其方法是通过图像的直方图估计出阈值再进行分割。

图像分割处理实验报告

图像分割处理实验报告

图像分割处理实验报告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. 结果分析:对比不同算法的优缺点,并分析其适用场景和改进空间。

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

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

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

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

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

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

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

图像分割处理实验报告

图像分割处理实验报告

一、实验目的: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)));。

迭代阈值法实验报告(3篇)

迭代阈值法实验报告(3篇)

第1篇一、实验背景迭代阈值法(Iterative Thresholding Method)是一种常用的图像处理技术,广泛应用于图像分割、边缘检测等领域。

该方法通过迭代调整阈值,将图像中的像素分为前景和背景,从而实现图像的分割。

本实验旨在验证迭代阈值法在图像分割中的应用效果,并分析不同参数设置对分割结果的影响。

二、实验目的1. 了解迭代阈值法的基本原理和实现方法。

2. 分析不同参数设置对图像分割结果的影响。

3. 比较迭代阈值法与其他图像分割方法的优缺点。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 图像处理库:OpenCV四、实验步骤1. 数据准备:收集多张不同场景的图像,包括自然场景、医疗图像、遥感图像等。

2. 图像预处理:对图像进行灰度化、滤波等预处理操作,提高图像质量。

3. 迭代阈值法实现:1. 读取预处理后的图像,将其转换为灰度图像。

2. 初始化阈值,可取图像的平均灰度或经验值。

3. 迭代计算前景和背景像素的灰度均值,更新阈值。

4. 根据新的阈值,将图像分割为前景和背景。

5. 重复步骤3和4,直至阈值不再变化或达到预设的迭代次数。

4. 结果分析:1. 对分割结果进行可视化,观察前景和背景的分割效果。

2. 分析不同参数设置对分割结果的影响,如迭代次数、初始阈值等。

3. 比较迭代阈值法与其他图像分割方法的优缺点。

五、实验结果与分析1. 实验结果:1. 自然场景图像分割结果:如图1所示,迭代阈值法能够较好地分割前景和背景,但在复杂场景中,分割效果可能受到噪声和边缘模糊等因素的影响。

2. 医疗图像分割结果:如图2所示,迭代阈值法能够有效地分割器官和组织,但在一些细节部位,分割效果可能不理想。

3. 遥感图像分割结果:如图3所示,迭代阈值法能够较好地分割地表和背景,但在一些复杂地形中,分割效果可能受到遮挡和阴影等因素的影响。

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

阈值法图像分割实验报告阈值法图像分割实验报告 1 实验目的图像分割阈值法具有实现容易、计算量小、性能稳定等优点。

因此这种方法成为图像分割领域中应用最普遍的方法。

本文主要讨论了基于直方图法的图像分割的设计与实现,并与迭代法进行了对比实验。

2 实验环境Microsoft VC++6.0软件平台,32位Windows XP操作系统。

3 实验原理基础3.1 直方图法直方图阈值法其阈值主要通过分析图像的灰度直方图来进行确定。

假定一幅图像如图3-1所示,其中背景是灰色,物体为灰白色的,背景中的黑色像素产生了直fxy(,)方图的左锋,而物体的各灰度级产生了直方图的右峰。

由于物体边界像素数相对而言较少,从而产生两峰之间的谷,选择谷对应的灰度值作为阈值T,利用式3.1,可以得到一幅二值图像gxy(,),用于后续处理和分析。

0,(,)fxyT,, (3.1) g(,)xy,,255,(,)fxyT,,背景部分物体部分0255阈值T图3-1 利用直方图选择二值化阈值3.2 迭代法(用于对比试验)迭代法也是一种在图像分割过程中选择合适阈值的方法。

它是基于逼近的思想通过阈值迭代的方式利用程序自动计算出比较合适的分割阈值。

迭代法指在初始条件中假设一个阈值,而通过对图像的迭代运算来不断地更新这一假设阈值来得到最佳阈值。

迭代法阈值分割主要算法:RR,minmax1( 求出图像最小灰度值和最大灰度值计算初始阈值为T,RRminmax022( 根据阈值将图像分割成目标和背景两部分,求出两部分的平均灰度值RijNij(,)(,),RijNij(,)(,),,,RijT(,),RijT(,),kkR,R,0GNij(,)Nij(,),,RijT(,),RijT(,),kk为图像上点的灰度值,为点的权重系数,一般为Rij(,)(,)ijNij(,)(,)ijNij(,)的个数 T 为阈值 Rij(,)RR,0G3. 重新选择阈值,新的阈值定义为 TTT,k,1k,1,k124. 循环做第二步到第四步,当 TT,则结束,即可获得最佳阈值来对图像进行kk,1分割。

4 程序设计4.1 直方图法算法流程如错误~书签自引用无效。

所示。

统计直方确定波峰波输入图像确定阈值T二值化图像保存图谷图4-1 直方图阈值法算法流程统计直方图和阈值分割流程图如图4-所示。

输入图像输入图像读信息头lpbit读信息头lpbit获取位图数据文件首地址L获取阈值T获取图像宽度W和高度H获取图像宽度W和高度Hi=0,j=0i=0,j=0Noi<WNoi<WYesYesj=0j=0Noj<HNoj<HYesYesZhifangtu[*lpbit+i*w+j]++;Nod>TYesj=j+1*(lpbit+i*width+j)=*(lpbit+i*width+j)=2550i=i+1j=j+1i=i+1结束结束(a)统计直方图 (b)阈值分割图4-2 程序设计流程图4.2 关键程序语段unsigned i,j; // 循环变量unsigned char pixel; // 像素值long lHistogram[256]; // 直方图数组LONG lLineBytes; // 图像每行的字节数//获得直方图for (i = 0;i < 256 ;i++)//初始化数组lHistogram[i]=0;lLineBytes = WIDTHBYTES(width * 8);// 计算图像每行的字节数for (i = 0;i < width ;i++){for(j = 0;j < height ;j++){// 指向源图像倒数第j行,第i个象素的指针pixel = *(buf+lLineBytes * j + i);lHistogram[pixel]++;}}//初始化阈值unsigned char yuzhi=0;//创建阈值选择对话框CFENGE dlg1;dlg1.m_Yuzhi=0;//在对话框里输出说明文字CString ss;ss.Format("如果峰值较多,建议用迭代法");dlg1.m_ShuChu+=ss;// 显示对话框,提示用户输入阈值for (i = 0; i <256; i++)dlg1.m_fIntensity[i] = (float)lHistogram[i]; if (dlg1.DoModal() != IDOK){return; // 返回}yuzhi=(unsigned char)dlg1.m_Yuzhi;delete dlg1;// 删除对话框//根据阈值将图像二值化for ( i = 0;i < width ;i++){for(j = 0;j < height ;j++){pixel = *(buf+lLineBytes * j + i);if(pixel<= yuzhi){*(buf+lLineBytes * j + i)=(unsigned char)0; }else{*(buf+lLineBytes * j + i)=(unsigned char)255;}}}5 实验结果5.1程序界面运行程序生成可执行程序文件TT.exe,文件操作界面如图5-1所示。

图5-1 程序运行界面程序可读取、处理和保存8位灰度图像,并可对8位灰度图像进行图像分割操作,用户界面设计较人性化。

5.2示例1对所示的目标图像进行阈值分割处理,结果如图5-2所示。

(a) 目标图像 (b) 直方图统计结果图5-2 图像分割直方图由图中可以看出,图像有很多峰,这样给我们选取峰谷确定阈值带来了一定的困难,下面我们将通过试探的方法,研究直方图法的优缺点分别选择不同阈值参数,对图5-3(a)所示的图像进行图像分割,结果如下图所示。

其中(a)~(e)为直方图法的处理结果,而(f)为迭代法的处理结果,用于对比直方图法选取阈值的合理性。

(a)阈值T=30 (b)阈值T=50(c)阈值T=60 (d)阈值T=80(e)阈值T=100 (f)迭代法,阈值T=87图5-3 不同阈值的图像分割效果图中(f)图为迭代法的结果,阈值为87,可以看出处理结果较理想,而其他阈值则不太理想,因为峰值太多,给阈值选取带来了很大困难。

5.2示例2图像上半部分做了反色处理,这样可以更好地测试图像分割的目的性和作用。

(a)目标图像 (b)直方图统计图图5-4直方图统计(a)阈值T=50 (b)阈值T=100(c)阈值T=120 (d)迭代法,阈值T=128图5-5 不同阈值的图像分割效果从图中可以看出,这个示例的峰值相对较少,可以较好的选择阈值,以便于更好地分割图像,提取目标,可以看出处理后的图片比原始图片更加容易辨认目标,基本上达到了目的。

6 结论6.1 算法性能分析由实验结果可以看出,阈值法图像分割中迭代法的处理结果比较理想,可以作为一个很好的参考,对于直方图阈值法来说,虽然操作简单方便,但有以下缺点:1. 不适合处理峰值较多,灰度级分布较密的图像。

2. 无法获得最优阈值,因此无法获得最佳结果。

6.2 总结通过光学图像处理课程的学习,我们对数字图像的来源,显示,处理等过程有了初步了解。

对光学系统的成像过程,数字图像的传输,编码,复原,分割,压缩等理论知识和关键技术有了较系统的掌握,并能够得以初步应用。

通过这一段时间的图像处理实践过程,我们对BMP格式图像的数据结构有了更深入的了解,能够灵活运用C++编程语言对BMP图像进行读写,存储以及一些简单处理等操作,对阈值法图像分割操作体会尤深。

总之,光学图像处理课程的开设对我们的学习,科研等有较大帮助,虽然研究内容与之相关甚微,但老师在课程中提出的研究问题的思想与方法让我们受益匪浅。

7 附录//迭代求最佳阈值iNewThreshold = (iMin + iMax)/2;iThreshold = 0;for(iIterationTimes = 0; iThreshold != iNewThreshold &&iIterationTimes < 200;iIterationTimes ++){iThreshold = iNewThreshold;lP1 =0;lP2 =0;lS1 = 0;lS2 = 0;//求两个区域的灰度平均值for (i = iMin;i < iThreshold;i++) {lP1 += lHistogram[i]*i;lS1 += lHistogram[i];}iMean1 =(unsigned char)(lP1 / lS1); for (i = iThreshold+1;i < iMax;i++) {lP2 += lHistogram[i]*i;lS2 += lHistogram[i];}iMean2 = (unsigned char)(lP2 / lS2); iNewThreshold = (iMean1 + iMean2)/2; }。

相关文档
最新文档