1.我们主要学习以下四种差分算子
- Roberts算子
- Sobel算子
- Prewitt算子
- canny算子
% Matlab图像边缘检测梯度算子–Roberts、Prewitt、Sobel、LOG、Canny
I = imread('0.jpg');
I =rgb2gray(I);
% edge()函数:边缘检测,门限值采用默认值
% Roberts算子边缘检测
BW1=edge(I,'roberts');
% Prewitt算子边缘检测
BW2=edge(I,'prewitt');
% Sobel算子边缘检测
BW3=edge(I,'sobel');
% LOG算子边缘检测
BW4=edge(I,'log');
% Canny算子边缘检测
BW5=edge(I,'canny');
figure,imshow(BW1,[]);
figure,imshow(BW2,[]);
figure,imshow(BW3,[]);
figure,imshow(BW4,[]);
figure,imshow(BW5,[]);
2.图像分割原理
图像分割的研究多年来一直受到人们的高度重视,至今提出了各种类型的分割算法。Pal把图像分割算法分成了6类:阈值分割,像素分割、深度图像分割、彩色图像分割,边缘检测和基于模糊集的方法。但是,该方法中,各个类别的内容是有重叠的。为了涵盖不断涌现的新方法,有的研究者将图像分割算法分为以下六类:并行边界分割技术、串行边界分割技术、并行区域分割技术、串行区域分割技术、结合特定理论工具的分割技术和特殊图像分割技术。而在较近的一篇综述中,更有学者将图像分割简单的分割数据驱动的分割和模型驱动的分割两类。下面将图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法、基于数学形态的分割方法以及基于特定理论的分割方法等,对其中主要的分别进行简要介绍。
2.1灰度阈值分割法
是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。如果阈值选取过高,则过多的目标区域将被划分为背景,相反如果阈值选取过低,则过多的背景将被划分到目标区[7]。阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割必须满足一个假设条件:图像的直方图具有较明显的双峰或多峰,并在谷底选择闭值。因此这种方法对目标和背景反差较大的图像进行分割的效果十分明显,而且总能用封闭、连通的边界定义不交叠的区域。
阈值分割法主要分为全局和局部两种,目前应用的闭值分割方法都是在此基础上发展起来的,比如最小误差法、最大相关法、最大嫡法、矩量保持法、Otsu最大类间方差法等,而应用最广泛的是Otsu最大类间方差法。
人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。 全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。这时可以根据图像的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图像分割。这时的阈值为自适应阈值。阈值的选择需要根据具体问题来确定,一般通过实验来确定。对于给定的图像,可以通过分析直方图的方法确定最佳的阈值,例如当直方图明显呈现双峰情况时,可以选择两个峰值的