传统图像算法基本知识

边缘检测

什么是边缘呢?

在这里插入图片描述
很明显,这块石头和人所在的地方,被红色线条画的地方就是边缘。

那在图像中怎么去描述呢?

图象的边缘是指 图象局部区域亮度变化显著的部分,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。

从上图就可以看出来,人和石头与背后的雪山边缘亮度相差明显,这样我们才能从视觉上感受到边缘的存在。

高频、低频

在图像中,高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是边缘;
低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方;
人眼对图像中的高频信号更为敏感,那边缘既然形成了视觉差人能不敏感吗。

边缘提取的原理理解

那理解了边缘以及高频、低频的概念,我们就可以以此来考虑怎么去获取边缘呢?

还记得一阶导数、二阶导数的概念吗?
原函数一阶导数可以用来描述原函数的增减性。
原函数二阶导数二阶导数可以用来判断函数在一段区间上的凹凸性,f’‘(x)>0,则是凹的,f’'(x)<0则是凸的。

获取边缘不就是获取图像的高频分量吗?
像素值出现”跳跃“或者较大的变化。如果在此边缘部分求取一阶导数,就会看到极值的出现。
而在一阶导数为极值的地方,二阶导数为0。

因此,从这个角度来理解的话求取边缘通常有两种方法,一是一阶导数极值,二是二阶导数为0 。

梯度

先理解下梯度的概念
梯度(百度百科):梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。

总结来说:梯度▽ f 为一个向量,它表示f 在位置(x,y) 处的最大变化率的方向。

要得到一幅图像的梯度,则要求在图像的每个像素点位置处计算偏导数。

常用的边缘检测算子

1. roberts
roberts算子模板为2*2,
优点:它常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。
缺点:对边缘的定位不太准确,提取的边缘线条较粗
公式如下所示:

roberts算子

2. prewitt
prewitt算子模板为3*3
优点:边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。
公式如下

prewitt算子

3. sobel
sobel算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。Sobel算子在Prewitt算子的基础上增加了
权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。

优点:Sobel算子的边缘定位更准确,常用于噪声较多、灰度渐变的图像。

sobel算子

4. laplacian
拉普拉斯(Laplacian) 算子是 n 维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素。
	1、判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像
	锐化操作;

	2、在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关
	系;
	
	3、最后通过梯度运算的结果对像素灰度进行调整

拉普拉斯算子
只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适

但是对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。
存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波

5. canny

是在满足一定约束条件下推导出来的边缘检测最优化算子。

canny算子的简要步骤如下:

(1)去噪声:应用高斯滤波来平滑图像,目的是去除噪声

		边缘检测容易受到噪声的影像。因此,在进行边缘检测前,通常需要进行去噪。通常,使用高斯滤波来去除噪声。

二维高斯公式

(2)梯度:找寻图像的梯度

		按照Sobel算子计算梯度幅值和方向,寻找图像的梯度。先将卷积模板分别作用x和y方向,再计算梯度幅值和方向。
		
(3)非极大值抑制:应用非最大抑制技术来过滤掉非边缘像素,将模糊的边界变得清晰。该过程保留了每个像素点上梯度强度的极大值,过滤掉其他的值。

		对于每个像素点,它进行如下操作:应用非最大值抑制技术来过滤掉非边缘像素,将模糊的边界变得清晰。该过程保留了每个像素点上
		梯度强度的极大值,过滤掉其他的值。

非极大值抑制

(4)应用双阈值的方法来决定可能的(潜在的)边界;

		经过非极大抑制后图像中仍然有很多噪声点。Canny算法中应用了一种叫双阈值的技术。即设定一个阈值上界和阈值下界(opencv
		中通常由人为指定的),图像中的像素点如果大于阈值上界则认为必然是边界(称为强边界,strong edge),小于阈值下界则认为
		必然不是边界,两者之间的则认为是候选项(称为弱边界,weak edge),需进行进一步处理。

双阈值检测

(5)利用滞后技术来跟踪边界。若某一像素位置和强边界相连的弱边界认为是边界,其他的弱边界则被删除。
常用的几种算子结果演示

边缘检测

滤波

滤波最常用的是中值滤波、均值滤波以及高斯滤波。
均值滤波器是最常用的线性低通平滑滤波器,它可以抑制图像中的加性噪声,同时也使图像模糊;
中值滤波器是最常用的非线性平滑滤波器,它可以消除图像中孤立的噪声点,产生较少的模糊;
一般来说,中值滤波的效果优于邻域平均低通滤波,其主要特点是滤波后的图像轮廓清晰。

线性滤波

线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如均值滤波器(模板内像素灰度值的平均值)、高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定的模板,因此滤波器的转移函数是可以确定并且是唯一的(转移函数即模板的傅里叶变换)。

线性滤波有哪些?

  1. 均值滤波

    基本原理:输出图像的每一个像素是核窗口内输入图像对应像素的像素的平均值( 所有像素加权系数相等)
    优点:算法比较简单,计算速度快
    缺点:不能保护图像细节,在图像去噪的同时,也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点
    opencv算子:blur()
    
  2. 高斯滤波

    基本原理:适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波器的模板系数,则随着远离模板中心而减小
    (高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。)
    高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
    opencv算子:GaussianBlur()
    

    高斯噪声图
    在这里插入图片描述

非线性滤波器

非线性滤波有哪些?

  1. 中值滤波器
	基本原理:将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的中值代替 ,常用于消除图像中的椒盐噪声。
	(椒盐噪声是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。)
	优点:在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。
	opencv算子:medianBlur()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icecream_cheese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值