资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
武汉理工大学图像处理程序设计说明书1引言所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同 37简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。2阈值分割的基本概念图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像 1。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定不同的特征阈值,把图像像素点分为若干类常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征设原始图像为 f(x,y),按照一定的准则在 f(x,y) 中找到特征值 T,将图像分割为两个部分,分割后的图像为 .,10tyxfbyxg若取 :b 0=0(黑),b 1=1(白) ,即为我们通常所说的图像二值化。武汉理工大学图像处理程序设计说明书(原始图像) (阈值分割后的二值化图像)一般意义下,阈值运算可以看作是对图像中某点的灰度、该点的某种局部特性以及该点在图像中的位置的一种函数,这种阈值函数可记作T(x,y, N(x,y),f(x,y)式中,f(x,y)是点(x,y)的灰度值; N(x,y)是点(x,y)的局部邻域特性根据对 T 的不同约束,可以得到 3 种不同类型的阈值 37,即点相关的全局阈值 TT(f(x ,y) (只与点的灰度值有关)区域相关的全局阈值 TT(N(x ,y),f(x,y) (与点的灰度值和该点的局部邻域特征有关)局部阈值或动态阈值 TT(x,y,N(x ,y),f(x,y)(与点的位置、该点的灰度值和该点邻域特征有关)所有这些阈值化方法,根据使用的是图像的局部信息还是整体信息,可以分为上下文无关(non-contextual) 方法(也叫做基于点(point-dependent)的方法)和上下文相关(contextual)方法(也叫做基于区域(region-dependent)的方法);根据对全图使用统一阈值还是对不同区域使用不同阈值,可以分为全局阈值方法(global thresholding)和局部阈值方法(local thresholding,也叫做自适应阈值方法 adaptive thresholding);另外,还可以分为双阈值方法(bilever thresholding)和多阈值方法(multithresholding)3. 设计原理说明 这次 VC+设计主要是基于迭代阈值图像分割法,它的设计方法如下。初始阈值选取为图像的平均灰度 T0,然后用 T0 将图像的象素点分作两部分,计算两部分各自的平均灰度,小于 T0 的部分为 TA,大于 T0 的部分为 TB计算 ,将 T1 作为新的全局阈值代替 T0,重复以上过程,如此迭21BAT代,直至 TK 收敛,即 TK1 T K 经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。对于背景和物体直方图双峰明显的图像进行迭代阈值分割,把目标从背景中分离出来,以便于进一步处理。此次设计就是利用 VC 平台建立一个软件程序对图武汉理工大学图像处理程序设计说明书像进行迭代阈值分割。VC 界面比比较简洁,主要功能是打开目标背景 BMP 图像文件,并且在主界面下显示图像。通过对图像的迭代阈值分割操作,然后将已经分割的图像在主界面下显示。4算法流程设计Fig.1 算法流程图5实现步骤1) 打开 VC+软件,进入主界面,建立一个单文档的应用项目。2) 在主框架添加菜单“图像处理” ,并在此菜单下添加如下子菜单“显示原图像”、 “图像阈值分割” 、 “显示图像分割结果”3)把代码输入后编译通过,实现“显示原图像”功能,并以对话框的形式显示4)对图像作“迭代阈值分割”处理5)在主界面下显示“迭代阈值分割”的图像,并以对话框的形式显示。6)保存图像文件打开图像 显示图像 对图像进行阈值分割显示处理后的图像结束开始武汉理工大学图像处理程序设计说明书6运行结果的截图Fig.2 主界面Fig.3 显示原目标背景图像武汉理工大学图像处理程序设计说明书Fig.4 显示迭代阈值分割结果武汉理工大学图像处理程序设计说明书7.部分主要程序代码/图像阈值分割程序#include stdafx.h#include windowsx.h#include math.h#include YuZhiChuLidib.h#include MainFrm.h/*/ /*函数名称:Diedaifazhi(int *tongji) /*函数类型:void/*参数说明:tonji -直方图灰度值统计 /*功能:对图像进行迭代阀值选取。 /*/ void CYuZhiChuLiDib:Diedaifazhi(int *tongji)/ 循环变量LONG i;LONG j;/ 指向 DIB 象素指针LPBYTE p_data;/ 找到 DIB 图像象素起始位置p_data = GetData();/ DIB 的宽度LONG wide = this-GetDibWidthBytes();/ DIB 的高度LONG height = this-GetHeight();/ 迭代阀值int T1, T2;T1 = 127;T2 = 0;/ 临时变量int Temp0, Temp1, Temp2, Temp3;Temp0 = Temp1 = Temp2 = Temp3 = 0;while (true)/ 计算下一个迭代阀值for (i = 0; i GetData();/ DIB 的宽度LONG wide = GetDibWidthBytes();/ DIB 的高度LONG height = GetHeight();武汉理工大学图像处理程序设计说明书/ 对各像素进行灰度转换for (j = 0; j CopyOriginaltoNew();int tongji256;/初始为 0memset(tongji, 0, sizeof(tongji);m_CDibNew.Fenbutongji(tongji); /统计直方图灰度值m_CDibNew.Diedaifazhi(tongji); /调用迭代法值检测处理函数else:MessageBox(NULL,没有加载图像,错误,MB_ICONWARNING);显示分割结果:武汉理工大学图像处理程序设计说明书void CLXHView:OnResult() / TODO: Add your command handler code hereif(m_CDibNew.m_valid=TRUE)m_dialogResult.DestroyWindow();m_dialogResult.Create(m_dialogResult.ShowWindow(SW_SHOW);else:MessageBox(NULL,没有加载图像,错误,MB_ICONWARNING);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号