- Roberts 算子
1.1 基本原理 Roberts算子又称为交叉微分算法,它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。其缺点是对边缘的定位不太准确,提取的边缘线条较粗。 1.2代码示例 %%使用梯度算子实现边缘检测 %%使用matlab自带的函数进行边缘检测 clear all; I = imread('rice.png'); %导入图像 imshow(I), title('none');%显示原图 G = edge(I, 'roberts');%应用罗伯特算子对像进行边缘检测,并进行二值化 figure, imshow(G), title('roberts'); %%另有博客主给出的MATLAB实现五种边缘检测,Matlab图像二值化,hen有参考意义 %%自己编码,先卷积检测边缘(使用roberts算子),再将图像二值化 myF = I; %卷积操作,先补零 myF(:, size(I, 2) + 1) = 0; myF(size(I, 1) + 1, :) = 0; %进行卷积检测边缘 P = ones(size(I, 1) + 1, size(I, 2) + 1); for i = 1:size(I, 1) for j = 1:size(I, 2) P(i, j) = P(i, j) + abs(myF(i + 1, j + 1) -myF(i, j)) + abs(myF(i +1, j) - myF(i, j + 1)); end end P = P(1:size(I, 1), 1:size(I, 2)); figure, imshow(P, []), title('梯度图像'); %二值化操作 %先统计0到255灰度级对应的像素个数 L = zeros(1, 256); for i = 1:size(P, 1) for j = 1:size(P, 2) for k = 0:255 if P(i, j) == k L(k+1) = L(k+1) + 1; end end end end %绘制I的灰度直方图 figure, bar(0:255, L); axis([0,255,0,1650]);%设置坐标轴x和y的范围——x从0到255,y从0到1650 %%取谷底的灰度级45为二值化阈值 for i = 1:size(P, 1) for j = 1:size(P, 2) if P(i, j) <= 45 P(i, j) = 0; else P(i, j) = 1; end end end figure, imshow(P, []), title('二值化图像');%输出二值化图像 运行结果: ![](https://img-blog.csdnimg.cn/39e6981e6c614f8092c4fbde2d3930f1.png) ![](https://img-blog.csdnimg.cn/c7ae6f0d61b048d7a64413795065c224.png)
- Sobel 算子
2.1 基本原理 Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。 Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。 2.2代码示例 clear all; close all; imag = imread("C:\Users\a1510\Pictures\Screenshots\屏幕截图 2023-10-24 080822.png"); %读取关键帧 imag = rgb2gray(imag); %转化为灰度图 subplot(131);imshow(imag):title('原图'); [high,width] = size(imag); % 获得图像的高度和宽度 F2 = double(imag); U = double(imag); uSobel = imag; for i = 2:high - 1 %sobel边缘检测 for j = 2:width - 1 Gx = (U(i+1,j-1) + 2*U(i+1,j) + F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i-1,j) + F2(i-1,j+1)); Gy = (U(i-1,j+1) + 2*U(i,j+1) + F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i,j-1) + F2(i+1,j-1)); uSobel(i,j) = sqrt(Gx^2 + Gy^2); end end subplot(132);imshow(im2uint8(uSobel)):title('边缘检测后'); %画出边缘检测后的图像 % Matlab自带函数边缘检测 % K为获取得到的关键帧的灰度图 BW3 = edge(imag,'sobel', 0.09); subplot(133);imshow(BW3,[]):title('Matlab自带函数边缘检测'); 运行结果: ![](https://img-blog.csdnimg.cn/19ef2d890cca4bdf9951780bf8857a55.png) 3. Prewitt 算子 3.1基本原理 Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 3×3 模板对区域内的像素值进行计算,而Robert算子的模板为 2×2,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像. 3.2代码实现: F=imread("C:\Users\a1510\Pictures\Screenshots\屏幕截图 2023-10-24 080822.png"); f=double(rgb2gray(F)); [row,col]=size(f); f2=rgb2gray(F); imshow(f2); f1=zeros(row,col); gx=[1,0,-1;1,0,-1;1,0,-1]; gy=[-1,-1,-1;0,0,0;1,1,1]; for i=2:row-1 for j=2:col-1 fx=[f(i-1,j-1),f(i-1,j),f(i-1,j+1);f(i,j-1),f(i,j),f(i,j+1);f(i+1,j-1),f(i+1,j),f(i+1,j+1)]; fy=[f(i-1,j-1),f(i-1,j),f(i-1,j+1);f(i,j-1),f(i,j),f(i,j+1);f(i+1,j-1),f(i+1,j),f(i+1,j+1)]; Gx=gx.*fx; Gy=gy.*fy; A=abs(abs(sum(Gx,'all'))+abs(sum(Gy,'all'))); if A>=100 f1(i,j)=255; end end end figure(2); imshow(f1); 运行结果: ![](https://img-blog.csdnimg.cn/e7a8765c2d30489d90412b4faeebfc1d.png) 4. Laplacian 算子 4.1基本原理 拉普拉斯(Laplacian) 算子是维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素。 4.2算法基本流程 1)判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作; 2)在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系; 3)最后通过梯度运算的结果对像素灰度进行调整。 Laplacian算子分为四邻域和八邻域,四邻域是对邻域中心像素的四个方向求梯度,八邻域是对八个方向求梯度. 4.3代码实现: clc; clear; hold off; I = imread('lena.bmp'); figure(1); imshow(I); title('Lena原图'); % J1 = imnoise(I,'gaussian',0,0.01); %高斯噪声 % figure(2); % imshow(J1); % J2 = imnoise(I,'salt & pepper',0.02); %椒盐噪声 % figure(3); % imshow(J2); %--------------------二阶微分算子边缘检测----------------------- c = [-1 -1 -1 %laplacian算子 -1 8 -1 -1 -1 -1] I = double(I); for j = 2:255 for i = 2:255 b1 = I(j-1,i-1); b2 = I(j-1,i); b3 = I(j-1,i+1); b4 = I(j,i-1); b5 = I(j,i); b6 = I(j,i+1); b7 = I(j+1,i-1); b8 = I(j+1,i); b9 = I(j+1,i+1); buffer(j,i) = b1*c(1,1) + b2*c(1,2) + b3*c(1,2) + b4*c(2,1) + b5*c(2,2) + b6*c(2,3) + b7*c(3,1) + b8*c(3,2) + b9*c(3,3); J(j,i) = uint8(buffer(j,i)); if J(j,i) < 1 J(j,i) = -J(j,i); end if J(j,i) > 255 J(j,i) = 255; end end end for i = 0:256 J(1,i) = I(1,i); J(256,i) = I(256,i); end for j = 1:256 J(j,1) = I(j,1); J(j,256) = I(j,256); end 运行结果: ![](https://img-blog.csdnimg.cn/949fd445bfcb42f48139fa2507d1178d.png) |
- Roberts算子:
- 介绍: Roberts 算子是一种常用于边缘检测的算子,它利用了图像中相邻像素间的差异来检测边缘。
- 工作原理: Roberts 算子使用了一个2x2的卷积核,分别对图像进行水平和垂直方向的卷积操作,然后将两者的平方和开方,得到边缘强度。
- 总结: Roberts 算子简单易实现,但对于一些情况下的噪声比较敏感,可能会产生一些虚假的边缘。
- Prewitt 算子:
- 介绍: Prewitt 算子也是一种常用的边缘检测算子,与Roberts相似,但在卷积核的设计上稍有不同。
- 工作原理: Prewitt 算子同样使用了2x2的卷积核,分别对图像进行水平和垂直方向的卷积操作,然后将两者的平方和开方,得到边缘强度。
- 总结: Prewitt 算子在一定程度上减轻了Roberts算子对噪声的敏感性,但仍可能对一些噪声产生响应。
- Sobel 算子:
- 介绍: Sobel 算子也是一种常用于图像边缘检测的算子,相比于Roberts和Prewitt,Sobel算子在设计上考虑了像素之间的权重。
- 工作原理: Sobel 算子同样使用了2x2的卷积核,但其权重分配更加均衡,以减少噪声的影响。
- 总结: Sobel 算子相对于前两者在边缘检测中表现更为稳定,对于噪声的抵抗能力更强。
- Laplacian 算子:
- 介绍: Laplacian 算子是一种广泛用于边缘检测和图像增强的算子,它强调了像素的二阶导数。
- 工作原理: Laplacian 算子使用了一个4或8邻域的卷积核,可以通过对图像进行二阶微分来检测边缘。
- 总结: Laplacian 算子通常用于提升图像的高频细节,可以与其他算子结合使用。
方法对比: Roberts 算子:基于一阶导数的方法 Prewitt 算子:基于一阶导数的方法 Sobel 算子:基于一阶导数的方法 Laplacian 算子:基于二阶导数的方法 Canny 算子:非微分边缘检测算子 公式对比: 算子:![](https://img-blog.csdnimg.cn/6aec4971c20c4875b6f8dfc73dd26eae.png) ![](https://img-blog.csdnimg.cn/940ecbc736e24cd48ef556dc45983dfc.png) 算子:![](https://img-blog.csdnimg.cn/77a327512d524233a68c688e5ca0ca13.png) ![](https://img-blog.csdnimg.cn/55fc7977d2224d728edc83b8ab9018bb.png) 算子:![](https://img-blog.csdnimg.cn/bdbb7e2860e4458d9856ab79c6d04fd0.png) ![](https://img-blog.csdnimg.cn/b648d811723041f7af570971aa7e11de.png) 算子:4领域 ,8领域![](https://img-blog.csdnimg.cn/3fadfb951c324d608715fb59d708a6f5.png) 优点对比: Roberts:对垂直边缘的检测效果好于斜向边缘 对具有陡峭的低噪声的图像效果最好 定位精度高 Prewitt:边缘检测结果在水平方向和垂直方向均比 Robert 算子明显 适合用来识别噪声较多,灰度渐变的图像 对噪声有抑制作用,抑制噪声的原理是通过像素平均 Sobel:边缘定位较准确,常用于噪声较多,灰度渐变的图像 Laplacian:对图像中的阶跃性边缘点定位准确 Canny:对噪声不敏感,不容易受到噪声干扰 能够检测到真正的弱边缘 使用两种不同的阈值分别检测强边缘和弱边缘 仅当强边缘与弱边缘相连时才将弱边缘包含在输出图像中 缺点对比: Robert
一、实验目的 |
- 了解掌握边缘检测的基本概念
- 了解边缘检测算子分类
| 二.实验环境 | Matlab | 三、实验内容与步骤 |
- Roberts 算子
- Prewitt 算子
- Sobel 算子
- Laplacian 算子
| 四、实验过程与分析 |
- Roberts 算子
1.1 基本原理 Roberts算子又称为交叉微分算法,它是基于交叉差分的梯度算法,通过局部差分计算检测边缘线条。常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。其缺点是对边缘的定位不太准确,提取的边缘线条较粗。 1.2代码示例 %%使用梯度算子实现边缘检测 %%使用matlab自带的函数进行边缘检测 clear all; I = imread('rice.png'); %导入图像 imshow(I), title('none');%显示原图 G = edge(I, 'roberts');%应用罗伯特算子对像进行边缘检测,并进行二值化 figure, imshow(G), title('roberts'); %%另有博客主给出的MATLAB实现五种边缘检测,Matlab图像二值化,hen有参考意义 %%自己编码,先卷积检测边缘(使用roberts算子),再将图像二值化 myF = I; %卷积操作,先补零 myF(:, size(I, 2) + 1) = 0; myF(size(I, 1) + 1, :) = 0; %进行卷积检测边缘 P = ones(size(I, 1) + 1, size(I, 2) + 1); for i = 1:size(I, 1) for j = 1:size(I, 2) P(i, j) = P(i, j) + abs(myF(i + 1, j + 1) -myF(i, j)) + abs(myF(i +1, j) - myF(i, j + 1)); end end P = P(1:size(I, 1), 1:size(I, 2)); figure, imshow(P, []), title('梯度图像'); %二值化操作 %先统计0到255灰度级对应的像素个数 L = zeros(1, 256); for i = 1:size(P, 1) for j = 1:size(P, 2) for k = 0:255 if P(i, j) == k L(k+1) = L(k+1) + 1; end end end end %绘制I的灰度直方图 figure, bar(0:255, L); axis([0,255,0,1650]);%设置坐标轴x和y的范围——x从0到255,y从0到1650 %%取谷底的灰度级45为二值化阈值 for i = 1:size(P, 1) for j = 1:size(P, 2) if P(i, j) <= 45 P(i, j) = 0; else P(i, j) = 1; end end end figure, imshow(P, []), title('二值化图像');%输出二值化图像 运行结果: ![](https://img-blog.csdnimg.cn/eb25e47a78b64c0ea2bb69a94584f24d.png) ![](https://img-blog.csdnimg.cn/640ab519a30a4837adf28c739c630f49.png)
- Sobel 算子
2.1 基本原理 Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导。该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。 Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。 2.2代码示例 clear all; close all; imag = imread("C:\Users\a1510\Pictures\Screenshots\屏幕截图 2023-10-24 080822.png"); %读取关键帧 imag = rgb2gray(imag); %转化为灰度图 subplot(131);imshow(imag):title('原图'); [high,width] = size(imag); % 获得图像的高度和宽度 F2 = double(imag); U = double(imag); uSobel = imag; for i = 2:high - 1 %sobel边缘检测 for j = 2:width - 1 Gx = (U(i+1,j-1) + 2*U(i+1,j) + F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i-1,j) + F2(i-1,j+1)); Gy = (U(i-1,j+1) + 2*U(i,j+1) + F2(i+1,j+1)) - (U(i-1,j-1) + 2*U(i,j-1) + F2(i+1,j-1)); uSobel(i,j) = sqrt(Gx^2 + Gy^2); end end subplot(132);imshow(im2uint8(uSobel)):title('边缘检测后'); %画出边缘检测后的图像 % Matlab自带函数边缘检测 % K为获取得到的关键帧的灰度图 BW3 = edge(imag,'sobel', 0.09); subplot(133);imshow(BW3,[]):title('Matlab自带函数边缘检测'); 运行结果: ![](https://img-blog.csdnimg.cn/9b1ae9d7c06e400bb8dcda01ab82bcd6.png) 3. Prewitt 算子 3.1基本原理 Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测。由于Prewitt算子采用 3×3 模板对区域内的像素值进行计算,而Robert算子的模板为 2×2,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像. 3.2代码实现: F=imread("C:\Users\a1510\Pictures\Screenshots\屏幕截图 2023-10-24 080822.png"); f=double(rgb2gray(F)); [row,col]=size(f); f2=rgb2gray(F); imshow(f2); f1=zeros(row,col); gx=[1,0,-1;1,0,-1;1,0,-1]; gy=[-1,-1,-1;0,0,0;1,1,1]; for i=2:row-1 for j=2:col-1 fx=[f(i-1,j-1),f(i-1,j),f(i-1,j+1);f(i,j-1),f(i,j),f(i,j+1);f(i+1,j-1),f(i+1,j),f(i+1,j+1)]; fy=[f(i-1,j-1),f(i-1,j),f(i-1,j+1);f(i,j-1),f(i,j),f(i,j+1);f(i+1,j-1),f(i+1,j),f(i+1,j+1)]; Gx=gx.*fx; Gy=gy.*fy; A=abs(abs(sum(Gx,'all'))+abs(sum(Gy,'all'))); if A>=100 f1(i,j)=255; end end end figure(2); imshow(f1); 运行结果: ![](https://img-blog.csdnimg.cn/6a935d59aa5a445fa865a1b4068a192c.png) 4. Laplacian 算子 4.1基本原理 拉普拉斯(Laplacian) 算子是维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素。 4.2算法基本流程 1)判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作; 2)在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系; 3)最后通过梯度运算的结果对像素灰度进行调整。 Laplacian算子分为四邻域和八邻域,四邻域是对邻域中心像素的四个方向求梯度,八邻域是对八个方向求梯度. 4.3代码实现: clc; clear; hold off; I = imread('lena.bmp'); figure(1); imshow(I); title('Lena原图'); % J1 = imnoise(I,'gaussian',0,0.01); %高斯噪声 % figure(2); % imshow(J1); % J2 = imnoise(I,'salt & pepper',0.02); %椒盐噪声 % figure(3); % imshow(J2); %--------------------二阶微分算子边缘检测----------------------- c = [-1 -1 -1 %laplacian算子 -1 8 -1 -1 -1 -1] I = double(I); for j = 2:255 for i = 2:255 b1 = I(j-1,i-1); b2 = I(j-1,i); b3 = I(j-1,i+1); b4 = I(j,i-1); b5 = I(j,i); b6 = I(j,i+1); b7 = I(j+1,i-1); b8 = I(j+1,i); b9 = I(j+1,i+1); buffer(j,i) = b1*c(1,1) + b2*c(1,2) + b3*c(1,2) + b4*c(2,1) + b5*c(2,2) + b6*c(2,3) + b7*c(3,1) + b8*c(3,2) + b9*c(3,3); J(j,i) = uint8(buffer(j,i)); if J(j,i) < 1 J(j,i) = -J(j,i); end if J(j,i) > 255 J(j,i) = 255; end end end for i = 0:256 J(1,i) = I(1,i); J(256,i) = I(256,i); end for j = 1:256 J(j,1) = I(j,1); J(j,256) = I(j,256); end 运行结果: ![](https://img-blog.csdnimg.cn/a973cf3072544393b02daab2da3acdee.png) | 五、实验总结 |
- Roberts算子:
- 介绍: Roberts 算子是一种常用于边缘检测的算子,它利用了图像中相邻像素间的差异来检测边缘。
- 工作原理: Roberts 算子使用了一个2x2的卷积核,分别对图像进行水平和垂直方向的卷积操作,然后将两者的平方和开方,得到边缘强度。
- 总结: Roberts 算子简单易实现,但对于一些情况下的噪声比较敏感,可能会产生一些虚假的边缘。
- Prewitt 算子:
- 介绍: Prewitt 算子也是一种常用的边缘检测算子,与Roberts相似,但在卷积核的设计上稍有不同。
- 工作原理: Prewitt 算子同样使用了2x2的卷积核,分别对图像进行水平和垂直方向的卷积操作,然后将两者的平方和开方,得到边缘强度。
- 总结: Prewitt 算子在一定程度上减轻了Roberts算子对噪声的敏感性,但仍可能对一些噪声产生响应。
- Sobel 算子:
- 介绍: Sobel 算子也是一种常用于图像边缘检测的算子,相比于Roberts和Prewitt,Sobel算子在设计上考虑了像素之间的权重。
- 工作原理: Sobel 算子同样使用了2x2的卷积核,但其权重分配更加均衡,以减少噪声的影响。
- 总结: Sobel 算子相对于前两者在边缘检测中表现更为稳定,对于噪声的抵抗能力更强。
- Laplacian 算子:
- 介绍: Laplacian 算子是一种广泛用于边缘检测和图像增强的算子,它强调了像素的二阶导数。
- 工作原理: Laplacian 算子使用了一个4或8邻域的卷积核,可以通过对图像进行二阶微分来检测边缘。
- 总结: Laplacian 算子通常用于提升图像的高频细节,可以与其他算子结合使用。
方法对比: Roberts 算子:基于一阶导数的方法 Prewitt 算子:基于一阶导数的方法 Sobel 算子:基于一阶导数的方法 Laplacian 算子:基于二阶导数的方法 Canny 算子:非微分边缘检测算子 公式对比: 算子:![](https://img-blog.csdnimg.cn/225c55e1b61544a88dd0001a956ab04f.png) ![](https://img-blog.csdnimg.cn/59471161191d4850ae219a4e49b2930d.png) 算子:![](https://img-blog.csdnimg.cn/f341510d10b04d89abd7cece6bbe8dfc.png) ![](https://img-blog.csdnimg.cn/2412a38286d8488c9dcd7598cc083d64.png) 算子:![](https://img-blog.csdnimg.cn/c916aefec07144269089f03e58b2e489.png) ![](https://img-blog.csdnimg.cn/677954ecfc49401bbf286725f46712fd.png) 算子:4领域 ,8领域![](https://img-blog.csdnimg.cn/7dcfa5a59ce34505b1af39f2a2733126.png) 优点对比: Roberts:对垂直边缘的检测效果好于斜向边缘 对具有陡峭的低噪声的图像效果最好 定位精度高 Prewitt:边缘检测结果在水平方向和垂直方向均比 Robert 算子明显 适合用来识别噪声较多,灰度渐变的图像 对噪声有抑制作用,抑制噪声的原理是通过像素平均 Sobel:边缘定位较准确,常用于噪声较多,灰度渐变的图像 Laplacian:对图像中的阶跃性边缘点定位准确 Canny:对噪声不敏感,不容易受到噪声干扰 能够检测到真正的弱边缘 使用两种不同的阈值分别检测强边缘和弱边缘 仅当强边缘与弱边缘相连时才将弱边缘包含在输出图像中 缺点对比: Roberts:对噪声敏感,无法抑制噪声的影响 提取边缘的结果是边缘比较粗 边缘定位不是很准确 Prewitt:像素平均相当于对图像的低通滤波 Sobel:由于边缘是位置的标志,对灰度的变化不敏感 Laplacian:对噪声比较敏感,只适用于无噪声图像 容易丢失边缘方向信息,造成一些不连续的检测边缘 Canny:易使高频边缘被平滑掉,从而造成边缘丢失 常用场景对比: Roberts:常用于垂直边缘明显或具有陡峭的低噪声的图像的边缘检测任务 Prewitt:常用于噪声较多、灰度渐变的图像的边缘检测任务 Sobel:常用于噪声较多,灰度渐变的图像的边缘检测任务 Laplacian:常用于归一化检测结果,进行方差计算,可以用在模糊检测任务上 Canny:被用于诸如“车道线检测”等实际项目中,是最有效的边缘检测方法 边缘检测结果对比: ![](https://img-blog.csdnimg.cn/e408d45eb3114f56be1c4227d01f372f.png) |
s:对噪声敏感,无法抑制噪声的影响 提取边缘的结果是边缘比较粗 边缘定位不是很准确 Prewitt:像素平均相当于对图像的低通滤波 Sobel:由于边缘是位置的标志,对灰度的变化不敏感 Laplacian:对噪声比较敏感,只适用于无噪声图像 容易丢失边缘方向信息,造成一些不连续的检测边缘 Canny:易使高频边缘被平滑掉,从而造成边缘丢失 常用场景对比: Roberts:常用于垂直边缘明显或具有陡峭的低噪声的图像的边缘检测任务 Prewitt:常用于噪声较多、灰度渐变的图像的边缘检测任务 Sobel:常用于噪声较多,灰度渐变的图像的边缘检测任务 Laplacian:常用于归一化检测结果,进行方差计算,可以用在模糊检测任务上 Canny:被用于诸如“车道线检测”等实际项目中,是最有效的边缘检测方法 边缘检测结果对比: ![](https://img-blog.csdnimg.cn/fb35658ec618448eacf5c914225a3a62.png) |