谈到边缘提取,按照理论的说法,即把给定图像进行分割或者将分隔的图像区域用更加简单明确的数值、符号或图形表示出来。对边缘提取,首先要先检测边缘。而检测边缘,必须先对边缘有明确的定义,matlab中对边缘的定义大概有两种:
1.两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的结果。直白地说,便是认为边缘是发生在梯度幅值较大的地方,即灰度发生突变的地方。
2.当相邻点的梯度方向相同或则相近,则这个区域可能存在边缘。
这两种定义其实是处于两个角度判别边缘,第一种是针对灰度的突变,第二种是针对相邻点梯度方向;于是对应这两种定义就有了不同的方法。
第一种:利用边缘算子做边缘检测,不连续性通常可以利用求导数的方法方便地检测到。一般常用一阶导数和二阶导数来检测边缘。
1)基本思想:首先是利用边缘增强算子,突出图像中的局部边缘,然后定义像素的“边缘强度”,通过设置阈值的方法提取边缘点集。但是由于噪声和图像模糊的原因,检测到的边界可能会有间断的情况发生。
2)两个内容:
a.用边缘算子提取边缘点集 b.在边缘点集中去除某些边缘点,填充一些边缘点,再将得到的边缘点集连接为线。
3)检测算子:微分算子、log算子和canny算子(具体可以看附件中的算子检测边缘情况表)
edge函数:利用各种算子做边缘检测
语法格式:
BW=edge(I,method)
BW=edge(I,method,thresh)
BW=edge(I,method,thresh,direction)
BW:返回的二进制图像,1代表找到的边缘,0表示其他像素。
method:使用算子的类型(‘sobel’是默认值,表示用导数的sobel近似值检测边缘,那些梯度最大点返回边缘)
thresh:指定的阈值,所有不强于thresh的边都被忽略
direction:字符串,为"horizontal"表示水平方向,为"vertical"表示垂直方向,默认值是"both",表示两个方向。
4)最有效的边缘检测方法是canny方法(拉普拉斯算子检测)。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。因此,这种方法不容易被噪声"填充",更容易测出真正的弱边缘。
canny法:寻找图像梯度的局部极大值,梯度是用高斯函数的一阶微分来计算的。
例:
I=imread('tire.tif'); BW1=edge(I,'canny'); %用canny法检测 subplot(1,2,1);imshow(I);title('原图像'); subplot(1,2,2);imshow(BW1);title('canny算子检测图像');
第二种:相位编组法
想法:
1)认为边缘不只是发生在梯度幅值较大的地方,即灰度发生突变的地方。
2)当相邻点的梯度方向相同或则相近,则这个区域可能存在边缘。
步骤有六步,这里就不详述了。另外,由于相位编组法可能会受到噪声的影响,使各直线断裂,所以,还需要进行直线连接操作。
接下来,谈到图像分割。图像分割是一个将一幅数字图像划分为不交叠的、连通的像素集的过程,其中一个对应于背景,其他则对应图像中的各个物体。
难度在于:划分前,不一定能够确定图像区域的数目。
图像分割的方法也有几种,下面就简单说下灰度门限法和四叉树分解法。
1.灰度门限法(常见的直接检测区域的分割方法)
——对物体与背景有较强对比的景物分割特别有用;如果目标物在其内部具有均匀一致的灰度值并分布在一个具有另一个灰度值的均匀背景上。
内容:所有灰度值大于或等于某门限值的像素都被判属于物体。所有灰度值小于该门限值的像素被排除在物体之外。于是边界就成为这样一些内部点的集合,这些点至少都有一个邻点不属于该物体。
注:如果物体同背景的差别在于某些性质而不是灰度值,那么,首先可以把性质转化为灰度,然后,再利用该法。
灰度门限的确定:
1)全局阈值化方法(根据图像的直方图选择阈值,一般阈值设置为常数)
条件:背景的灰度值在整个图像中可合理看作为恒定,而且所有物体与背景都具有几乎相同的对比度。
2)自适应阈值法(灰度阈值取成一个随图像位置缓慢变化的函数值)
条件:物体和背景的对比度在图像中有变化
2.四叉树分解
基本思想:从整幅图像开始不断分裂得到各个区域,最终将具有一致性的像素分到同一个小块。这里的一致性是指各个像素点的灰度值的接近程度要满足要求。
具体过程:将一块图像分成四块等大小的方块,判断每个块是否满足一致性标准,如果满足,则不再分解;如果不满足,再进行细分使之成四块,进而再检查,分解过程重复迭代下去,直到满足一致性准则。结果可能包含不同大小的块。
一致性标准可以是:
1)区域中灰度最大值与最小值的差小于阈值。
2)两区域平均灰度差小于阈值。
3)两区域的灰度分布函数差小于阈值。
4)两区域参数统计特征结果相同。
相关推荐
1、 编程实现图像阈值分割(阈值可以指定3个,分析分割结果,要理解阈值确定的基本方法); 2、 Matlab中边缘提取函数的应用。
一个经典的图像处理教程,主要包括图像边缘的提取
数字图像处理图像分割与边缘检测实用教案.pptx
基于vc的图像处理的代码,可以进行图像的灰度化,二值化,边缘检测、提取等功能
数字图像处理,分水岭算法matlab源码
彩色分割法是数字图像处理中一种应用广泛的技术,与灰度图像分割算法相比,二者思想基本上是一致的,只是对像素属性的考察及特征的提取等技术由一维空间转向了多维空间。因此彩色分割法可以看作是灰度图像分割技术在...
利用Matlab处理图像,使用几种方法进行边缘分割
图像抠取和图像分割有异曲同工之妙,都是利用提取特征,把感兴趣目标从背景中分离出来。但是图像抠取技术会更注意目标边缘的抠取,对带有毛发等的细微细节分割。自蓝屏技术提出以来,图像、视频编辑得到广泛的重视,...
本次试验主要是对图像进行分割处理,通过算法检测图像内容的边缘,并进行提取
为利用matlab进行图像处理实验的小部分代码,这部分代码非常简单,仅需直接调用内置函数即可完成,所以做成简单整理算是分享啦
问题1:编写程序实现一阶Sobel算子,进行图像的边缘提取; 问题2:编写程序实现一阶Prewitt算子,进行图像的边缘提取; 问题3:编写程序实现一阶Roberts算子,进行图像的边缘提取; 问题4:编写程序实现二阶...
C#,VS2005,RGB和HSI彩色空间、伪彩色处理、彩色图像直方图均衡化、彩色图像平滑处理、锐化处理、边缘检测、图像分割
本资源为matlab代码,应用于数字图像处理领域,压缩包打开后为一个.m文件和一张.jpg图片,本代码实现对图像的边缘提取功能;
Hough线检测 问题1:对作业一中边缘检测的结果,进行Hough线检测。 问题2:调节参数,提取较长的边界。
FPGA通过将8位灰度数字图像进行分割,然后提取图像中边缘、各个组 成部分的连通域、型心、外接矩等重要的图像形状特征,为DSP后续的图像目标追 踪匹配工作提供了极为重要的参考数据,极大地提高了系统整体图像运算...
数字图像处理,边缘提取,分割,湖面面积计算matlab程序
包括图像处理的基本算法,大津阈值分割、梯度算子、均值和中值平滑、区域生长、形态学灰值开闭运算、快速傅里叶变换去噪、边缘检测、缩放以及细胞图像的分割与测量,求取细胞核与核仁的面积比例、基于手动选取多个...
包含了数字图像处理的基本matlab仿真实验内容,包括图像的存储,读取,图像平滑,图像锐化,图像加噪去噪,中值滤波均值滤波,图像复原,图像分割,图像的边缘提取,图像增强。
数学形态学图像处理应用广泛,可以用于图像去噪、特征提取、边缘检测、图像分割、形状识别、纹理分析、图像恢复与重建、图像压缩等领域。数学形态学图像处理的基本思想是构建具有一定形态的结构元素去匹配和提取图像...
全书共12章,分别介绍了数字图像编程基础,图像感知与获取,图像的点运算,图像的几何变换,图像的正交变换,图像的增强,数字图像腐蚀算法、膨胀算法、细化算法,图像边缘检测与提取、轮廓跟踪,图像分割,图像配准...