数字图像处理七:图像分割

边缘检测:采用Roberts、Prewitt、Sobel、Log、Canny算子将图像中各不同区域的边缘(边界)检测出来,以达到检测的目的。常用的一阶微分边缘检测算子模板有Roberts、Prewitt、Sobel算子。这些算子都是利用边缘处的梯度最大这一性质来进行边缘检测的,即利用了灰度图像的拐点位置是边缘的性质。
(1) Sobel算子
以待增强图像 的任意像素 为中心,取3*3像素窗口,分别计算窗口中心像素在 和 方向的梯度。增强后的图像在 处的灰度值为
在这里插入图片描述
用模板表示为:
在这里插入图片描述
在这里插入图片描述
(2) Prewitt算子
用模板表示为
在这里插入图片描述
在这里插入图片描述
(3) Roberts算子
Roberts模板是用斜向上的4个象素的交叉差分定义的,即
在这里插入图片描述
在这里插入图片描述
(4)LOG 算子
先用高斯函数对图像进行平滑滤波,再用拉普拉斯算子检测边缘,有效克服了拉普拉斯算子抗噪能力差的缺点,但该算子在抑制噪声的同时,也可能将原有的比较尖锐的边缘平滑掉,造成尖锐边缘无法被检测出来。此外,高斯函数中参数 的选择尤为关键。 越大,通频带越窄,对较高频率噪声的抑制作用越大,但同时信号的边缘也被平滑掉,造成某些边缘点的丢失;反之 越小,通频带越宽,可以检测出图像更高频率的细节,但对噪声的抑制能力相对下降,容易出现虚假边缘。
(5)Canny算子
Canny算子求边缘点具体算法步骤如下:

  1. 用高斯滤波器平滑图像.
  2. 用一阶偏导有限差分计算梯度幅值和方向.
  3. 对梯度幅值进行非极大值抑制.
  4. 用双阈值算法检测和连接边缘.
clc;clear;close all;
I = imread('实验图片素材\lena.bmp');
K1 = double(imnoise(I,'gaussian',0.01));
subplot(231);imshow(K1,[]);title('高斯噪声图像');

%  Roberts算子边缘检测
BW1 = edge(K1,'roberts',0.2);
subplot(232);imshow(BW1,[]);title('Roberts算子图像');
% Prewitt算子边缘检测
BW2 = edge(K1,'prewitt',0.05);
subplot(233);imshow(BW2,[]);title('Prewitt算子图像');
% Sobel算子边缘检测
BW3 = edge(K1,'sobel',0.04);
subplot(234);imshow(BW3,[]);title('Sobel算子图像');
% Log算子边缘检测
BW4 = edge(K1,'log',0.02);
subplot(235);imshow(BW4,[]);title('Log算子图像');
% Canny算子边缘检测
BW5 = edge(K1,'canny',0.04);
subplot(236);imshow(BW5,[]);title('Canny算子图像');

数字图像处理七:图像分割_第1张图片

你可能感兴趣的:(数字图像处理,图像处理,matlab,计算机视觉)