图像分割和二值数学形态学图象处理Word文档格式.docx
《图像分割和二值数学形态学图象处理Word文档格式.docx》由会员分享,可在线阅读,更多相关《图像分割和二值数学形态学图象处理Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
二、算法分析与描述3
三、详细设计过程5
3.1区域生长法5
3.1图像腐蚀5
四、调试过程中出现的问题及相应解决办法7
4.1程序调试中出现的问题及解决办法7
4.2程序运行过程中出现的问题8
五、程序运行截图及其说明9
六、简单操作手册12
参考资料15
致谢16
附录17
摘要
用计算机进行数字图像处理的目的有两个,一是产生更适合人类视觉观察和识别的图像,二是希望计算机能够自动进行识别和理解图像。
数字图像处理包括的内容主要有:
图像数字化,图像增强,图像几何变换,图像恢复,图像重建,图像隐藏,图像变换,图像编码,图像识别与理解。
在这里主要研究图像分割中的区域生长法和二值图像处理中的腐蚀。
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。
首先,对每个要分割的区域找一个种子点,然后将种子像素周围邻域中域种子像素由相同或相似性质的像素合并到种子像素所在的区域中。
将这些新像素当作新的种子点继续进行上面的过程,直到没有满足条件的像素点时停止生长。
腐蚀是一种消除边界点,使边界向内部收缩的过程,可以消除小且无意义的目标物。
腐蚀处理可以表示成用结构元素对图像进行探测,找出图像中可以放下该结构元素的区域。
在图像处理中主要用MATLAB和VC++编写图像处理程序,这里主要用VC++编写图像处理程序并调用C++图像处理的部分内部函数进行处理。
关键词数字图象处理;
区域生长法;
图像腐蚀;
一、前言
数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
在图像分析中,通常需要将所关心的目标从图像中提取出来,这种从图像中将某个特定区域与其他部分进行分离并提取出来的处理,就是图像分割。
因为图像分析处理实际就是区分图像中的“前景目标”和“背景”,所以通常又称之为图像的二值化处理。
图像分割在图像分析、图像识别、图像检测等方面占有非常重要的地位。
在图象处理中,二值数学形态学是一种经典的算法,在图象处理与分析技术中,许多场合下对所拍摄的图象进行二值化处理,然后对分割出的目标区域进行几何特征的测量。
二值图象中的一种主要处理是对所提取的目标图形进行形态分析。
二值图像中的一种主要处理是对所提取的目标图形进行形态分析。
腐蚀处理的作用是将目标图形收缩,为了实现腐蚀,数学形态学提出了结构元素的概念。
所谓结构元素是指具有某种确定形状的基本结构元素,例如,一定大小的矩形、圆或者菱形等。
二、算法分析与描述
2.1.区域生长法
图像分割的目的是要把一幅图像划分成一些区域,最直接的方法就是把点组成区域。
为此需要以下三个步骤:
确定区域的数目;
确定一个区域与其他区域相区别的特征;
产生有意义分割的相似性判据。
由此,假定已知要划分的区域数目以及每个区域内某一点的位置,就可以推导出图像分割的一种算法,即区域生长法。
首先,对每个要分割的区域找一个种子点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域中。
其中相似性准则可以是灰度级、彩色、组织、梯度或其他特性。
相似性的测度可以由所确定的阈值来决定从上例可知,区域生长方法的实现有三个关键点:
①种子点的选取;
②生长准则的确定;
③区域生长停止的条件。
选取的种子点原则上是待提取区域的有代表性的点可是单个像素,也可是包括若干个像素的子区域。
生长准则原则上是评价与种子点相似程度的度量。
生长准则多采用与种子点的距离度量。
种子点可以随着区域的生长而变化,也可以设定为一个固定的数值。
区域生长的停止条件,对于渐变区域进行生长时的停止判断非常重要。
一般是结合生长准则来进行合理的设定。
判定生长停止的阈值可以是确定的值,也可是随生长而变化的值。
2.1.图像腐蚀
形态学运算是针对二值图象依据数学形态学(MathematicalMorphology)的集合论方法发展起来的图象处理方法。
数学形态学起源于岩相学对岩石结构的定量描述工作,近年来在数字图象处理和机器视觉领域中得到了广泛的应用,形成了一种独特的数字图象分析方法和理论。
通常形态学图象处理表现为一种邻域运算形式,一种特殊定义的邻域称之为“结构元素”(StructureElement),在每个象素位置上它与二值图象对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图象的相应象素。
形态学运算的效果取决于结构元素的大小、内容以及逻辑运算的性质。
给定二值图象I(x,y)和作为结构元素的二值模板T(i,j),则典型的腐蚀运算可表示成:
腐蚀是一种消除边界点,使边界向内部收缩的过程。
可以用来消除小且无意义的物体。
一般意义的腐蚀概念定义为:
也就是说,由B对X腐蚀所产生的二值图象E是满足以下条件的点(x,y)的集合:
如果B的原点平移到点(x,y),那么B将完全包含于X中。
根据以上原理,腐蚀运算的具体步骤如下:
1).扫描原图,找第一个像素值为1的点;
2).将预先设定好形状以及原点位置的结构元素的原点移动到该点;
3).判断该结构元素所覆盖范围内的像素值是否全部为1,如果是,则腐蚀后图像的相同位置上的像素值置为1,如果至少有一个像素的值为0,则腐蚀后图像的相同位置上的像素值置为0;
4).对原图中所有像素值为1的点重复进行2)和3).
三、详细设计过程
3.1区域生长法
1.类的属性说明:
double*m_pDbImage;
intm_nSupp;
intm_nDWTCurDepth;
2.类的行为说明:
intInitDocVariable();
intFreeDocVariable();
virtualvoidAssertValid()const;
virtualvoidDump(CDumpContext&
dc)const;
BOOLDIBDWTStep(CDib*pDib,intnInv);
C06500131panzhangrongDoc*GetDocument();
afx_msgvoidOnEdgeRoberts();
afx_msgvoidOnEdgeSobel();
afx_msgvoidOnEdgePrewitt();
afx_msgvoidOnEdgeLaplace();
afx_msgvoidOnEdgeCanny();
afx_msgvoidOnEdgeTrack();
afx_msgvoidOnRegionGrow();
RegionGrow();
pUnRegion指针指向的数据区存储了区域生长的结果,其中1(逻辑)表示,对应象素为生长区域,0表示为非生长区域。
3.2.图像腐蚀
1、程序运行中用到的运算:
VErosion()图象进行垂直方向上的腐蚀运算
HErosion()图象进行水平方向上的腐蚀运算
VHErosion()图象进行全方向腐蚀
2、主要函数说明
1).函数名称:
VErosion()
参数:
HDIBhDIB-待处理的DIB
返回值:
void-无返回值
说明:
该函数对图象进行垂直方向上的腐蚀
2).函数名称:
HErosion()
HDIBhDIB-待处理的DIB
该函数对图象进行水平方向上的腐蚀
3).函数名称:
VHErosion()
HDIBhDIB-待处理的DIB
该函数对图象进行全方向腐蚀
四、调试过程中出现的问题及相应解决办法
4.1程序调试中出现的问题及解决办法
voidRegionSegFixThreshold(CDib*pDib,intnThreshold)
{
//遍历图象的纵坐标
inty;
//遍历图象的横坐标
intx;
//图象的长宽大小
CSizesizeImage=pDib->
GetDimensions();
intnWidth=sizeImage.cx;
intnHeight=sizeImage.cy;
//图像在计算机在存储中的实际大小
CSizesizeImageSave=pDib->
GetDibSaveDim();
//图像在内存中每一行象素占用的实际空间
intnSaveWidth=sizeImageSave.cx;
//图像数据的指针
LPBYTEpImageData=pDib->
m_lpImage;
for(y=0;
y<
nHeight;
y++)
for(x=0;
x<
nWidth;
x++)
{
if()
*(pImageData+y*nSaveWidth+x)=0;
}
}
程序中判断条件空,程序无法顺利执行
改正为:
if(*(pImageData+y*nSaveWidth+x)<
nThreshold)
4.2程序运行过程中出现的问题
该程序只能处理256色的文件,对于其他格式的图像文件不能直接处理要经过格式转换后才能在改程序上执行。
1、函数在编译时出错,应为没有加入必须有的头文件#include"
math.h"
有"
头文件才能对出现的数学计算进行正确处理。
2、安装的创天中文VC++无法打开头文件"
afsrex.h"
。
3、所被用来做二值数学形态学图象处理的图像必须是24位色位图,若不是则需将其先转化。
五、程序运行截图及其说明
5.1区域生长法运行结果
1.原图
图5.1
2.经区域生长法分割后图像
图5.2
5.2图像腐蚀运行结果
2