您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字图像处理图像分割
DIP-5图像分割一.题目要求对下图施加高斯噪声,采用LoG算子对含噪声的图象实施边缘分割,找出该图象的最佳边缘。二.算法设计在对图像处理的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些感兴趣的部分常称为目标或对象,它们一般对应图像中特定的、具有独特性质的区域。图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或相似性,而在不同区域间表现出明显的不同,即在一幅图像中把目标从背景中分离出来,以便于进一步处理。图像分割就是指把图像分成互不重叠的区域并提取出感兴趣目标的技术。像的分割有很多种类,边缘分割也有很多种类,LoG算子是其中一类。由于在成像时,一个给定像素所对应的场景点,它的周围点对该点的贡献的光强大小呈正态分布,所以平滑函数应能反映不同远近的周围点对给定像素具有不同的平滑作用,因此,平滑函数采用正态分布的高斯函数,即式中,s是方差。用h(x,y)对图像f(x,y)的平滑可表示为g(x,y)=h(x,y)*f(x,y)如果令r是离原点的径向距离,即r2=x2+y2,转换,然后对图像g(x,y)采用拉普拉斯算子进行边缘检测,可得),(*),(),(*e)],(*),([),(224222222yxfyxhyxfryxfyxhyxgr2222e),(yxyxh上式中的h2称为高斯—拉普拉斯滤波(LaplacianofGaussian,LoG)算子,也称为“墨西哥草帽”。它是一个轴对称函数,各向同性,它的一个轴截面如图所示。由图可见,这个函数在r=±s处有过零点,在|r|s时为正,在|r|s时为负;可以证明这个算子定义域内的平均值为零,因此将它与图像卷积并不会改变图像的整体动态范围。但由于它相当光滑,因此将它与图像卷积会模糊图像,并且其模糊程度是正比于s的。正因为h2的平滑性质能减少噪声的影响,所以当边缘模糊或噪声较大时,利用h2检测过零点能提供较可靠的边缘位置。在该算子中,s的选择很重要,s小时边缘位置精度高,但边缘细节变化多;s大时平滑作用大,但细节损失大,边缘点定位精度低。应根据噪声水平和边缘点定位精度要求适当选取s。LoG算子用到的卷积模板一般较大,不过这些模板可以分解为一维卷积来快速计算。通过判断零交叉点及其两侧像素符号的变化来确定边缘点。边缘点两侧的二阶微分是异号的,且正号对应边像点的暗侧,负号对应边像点的亮侧,两侧的符号指示着边缘的起伏走向。三.实现代码1.主函数clc;i=imread('D:\matlab2011\work\p5-03.tif');subplot(121);imshow(i);title('原图像');b=log_edge(i);subplot(122);imshow(b);title('原图像');2.LoG算子提取边缘点函数%下面的代码可以实现LoG算子提取边缘点的功能functione=log_edge(a)%该函数实现LoG算子提取边缘点%输入为图像a,输出为边缘图像e[m,n]=size(a);e=repmat(logical(uint8(0)),m,n);sigma=2;%产生同样大小的边缘图像e,初始化为0rr=2:m-1;cc=2:n-1;fsize=ceil(sigma*3)*2+1;%选择点数为奇数的滤波器的尺寸fsize6*sigma;op=fspecial('log',fsize,sigma);%产生LoG滤波器op=op-sum(op(:))/prod(size(op));%将LoG滤波器的均值变为0b=filter2(op,a);%利用LoG算子对图像滤波thresh=.75*mean2(abs(b(rr,cc)));%设置过零检测的门限%寻找滤波后的过零点:+-和-+表示水平方向从左到右和从右到左过零%[+-]'和[-+]'表示垂直方向从上到下和从下到上过零%这里我们选择边缘点为值为负的点[rx,cx]=find(b(rr,cc)0&b(rr,cc+1)0&abs(b(rr,cc)-b(rr,cc+1))thresh);%[-+]的情况e((rx+1)+cx*m)=1;[rx,cx]=find(b(rr,cc-1)0&b(rr,cc)0&abs(b(rr,cc-1)-b(rr,cc))thresh);%[+-]的情况e((rx+1)+cx*m)=1;[rx,cx]=find(b(rr,cc)0&b(rr+1,cc)0&abs(b(rr,cc)-b(rr+1,cc))thresh);%[-+]'的情况e((rx+1)+cx*m)=1;[rx,cx]=find(b(rr-1,cc)0&b(rr,cc)0&abs(b(rr-1,cc)-b(rr,cc))thresh);%[+-]'的情况e((rx+1)+cx*m)=1;%某些情况下LoG滤波结果可能正好为0,下面考虑这种情况:[rz,cz]=find(b(rr,cc)==0);if~isempty(rz)%寻找滤波后的过零%+0-和-0+表示水平方向从左到右和从右到左过零%[+0-]'和[-0+]'表示垂直方向从上到下和从下到上过零%边缘正好位于滤波值为零点上zero=(rz+1)+cz*m;%零点的线性坐标zz=find(b(zero-1)0&b(zero+1)0&abs(b(zero-1)-b(zero+1))2*thresh);%[-0+]'情况e(zero(zz))=1;zz=find(b(zero-1)0&b(zero+1)0&abs(b(zero-1)-b(zero+1))2*thresh);%[+0-]'情况e(zero(zz))=1;zz=find(b(zero-m)0&b(zero+m)0&abs(b(zero-m)-b(zero+m))2*thresh);%[-0+]情况e(zero(zz))=1;zz=find(b(zero-m)0&b(zero+m)0&abs(b(zero-m)-b(zero+m))2*thresh);%[+0-]情况e(zero(zz))=1;end四.结果分析用LoG算子进行边缘检测的结果如图。Laplace算子对通过图像进行操作实现边缘检测的时,对离散点和噪声比较敏感。于是,首先对图像进行高斯暖卷积滤波进行降噪处理,再采用Laplace算子进行边缘检测,由上图可见有较好提取边缘的效果。
本文标题:数字图像处理图像分割
链接地址:https://www.777doc.com/doc-2387931 .html