小白目前经手的科研课题涉及到在编码解码过程中增加各类噪声和相关滤波的处理,涉及到了一些算子处理,所以一边学习一边记录:若博文有不妥之处,望加以指点,笔者一定及时修正。

文章目录

  • ① Sobel算子
  • ② Laplace算子
  • ③ 参考博客

① Sobel算子

边缘图像上灰度级变化很快的点的集合。那如何在图像上找到这些点呢?

高数中,我们知道如果函数点变化很快,其导数越大。也就是导数越大的地方越有可能是边缘。但是计算机不常用,因为存在导数无穷大的情况,计算机难以表达。所以,计算机就采用微分的形式。连续函数xxx变化了dxdxdx,导致yyy变化了dydydy,dydydy值越大表示变化的越大,那么计算整幅图像的微分,dydydy的大小就是边缘的强弱了。微分与导数的关系:dy=f′(x)dxdy = f '(x) dxdy=f′(x)dx。

举个例子:

经过微分之后,平缓的地方dydydy几乎为0,而边缘的地方绝对值很大,真实值有正负情况。连续函数里面有微分,离散里面是差分,也是求变化率。差分的定义f′(x)=f(x+1)−f(x)f^{'}(x)=f(x+1)-f(x)f′(x)=f(x+1)−f(x),后一项减去前一项。 Sobel算子是一阶微分的边缘检测算子,该算子引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响

模板运算基本思路:将原图像中某个像素的值,作为它本身灰度值和其相邻像素灰度值进行运算的函数。模板中有一个锚点,通常是矩阵中心点,和原图像中待计算点对应;整个模板对应的区域,就是原图像中像素点的相邻区域,模板运算目的是让图像变好。

Sobel算子包含两组 3∗33*33∗3 的矩阵,分别为横向纵向模板,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。下面是 GxG_xGx​ 和 GyG_yGy​ 的相关模板,但是实用卷积的时候,需要把相关模板旋转180度再与图像做卷积的操作。

Gx=[−10+1−20+2−10+1]G_x = \left[ \begin{matrix} -1 & 0 & +1 \\ -2 & 0 & +2 \\ -1 & 0 & +1 \end{matrix} \right] Gx​=⎣⎡​−1−2−1​000​+1+2+1​⎦⎤​Gy=[−1−2−1000+1+2+1]G_y = \left[ \begin{matrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ +1 & +2 & +1 \end{matrix} \right] Gy​=⎣⎡​−10+1​−20+2​−10+1​⎦⎤​卷积的时候运用的是:GxG_xGx​是对原图xxx方向上的卷积,GyG_yGy​是对原图yyy方向上的卷积(卷积:卷积可以理解为一个过程:元素对应相乘,乘积累加,是一个线性操作):Gx=[+10−1+20−2+10−1]G_x = \left[ \begin{matrix} +1 & 0 & -1 \\ +2 & 0 & -2 \\ +1 & 0 & -1 \end{matrix} \right] Gx​=⎣⎡​+1+2+1​000​−1−2−1​⎦⎤​Gy=[+1+2+1000−1−2−1]G_y = \left[ \begin{matrix} +1 & +2 & +1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{matrix} \right] Gy​=⎣⎡​+10−1​+20−2​+10−1​⎦⎤​
具体计算为:图像上的每一个像素点的横向和纵向灰度值结合起来计算该点灰度的大小:
G=Gx2+Gy22G=\sqrt[2]{{G_x}^2+{G_y}^2}G=2Gx​2+Gy​2​然后计算梯度方向:
Θ=arctan(GyGx)\Theta = arctan(\frac{G_y}{G_x})Θ=arctan(Gx​Gy​​)

这个相关模板一般都是奇数:因为模板是偶数的话,卷积出来的结果应该是放在中间的,不方便表示。使用奇数保证锚点(卷积核的中心)刚好在中间,方便以模块中心为标准进行滑动卷积。同时保证了padding时,图像的两边依然相对称

缺点:

Sobel算子并没有将图像的主题与背景严格地区分开来,所以提取的图像轮廓有时并不能令人满意。

当然还有另外一个比Sobel函数的近似效果更好的 Scharr函数,其内核矩阵如下:


② Laplace算子

拉普拉斯算子是一个二阶微分算子,定义为梯度∇f\nabla{f}∇f和散度∇f′\nabla{f^{'}}∇f′。对图像求二阶导数,因为图像是二维的,所以不用分开求横向和纵向的导数,然后相加。

离散形式,在一个二维函数 f(x,y)f(x,y)f(x,y) 中,x,yx,yx,y 两个方向的二阶差分分别为:
∂2f∂x2=f(x+1,y)+f(x−1,y)−2f(x,y)\frac{\partial ^{2}f}{\partial x^2}=f(x+1,y)+f(x-1,y)-2f(x,y)∂x2∂2f​=f(x+1,y)+f(x−1,y)−2f(x,y)∂2f∂y2=f(x,y+1)+f(x,y−1)−2f(x,y)\frac{\partial ^{2}f}{\partial y^2}=f(x,y+1)+f(x,y-1)-2f(x,y)∂y2∂2f​=f(x,y+1)+f(x,y−1)−2f(x,y)所以拉普拉斯算子的差分形式为:
∇2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)\nabla^2f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)∇2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)

图像锐化:使灰度反差增强,从而使模糊图像变得更加清晰。
图像模糊:图像受到平均运算或积分运算,对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。
拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。
因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像!

拉普拉斯算子模板:
G=[0101−41010]G= \left[ \begin{matrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{matrix} \right] G=⎣⎡​010​1−41​010​⎦⎤​该模板在上下左右四个90度的方向上结果相同,也就是说在90度方向上无方向性
其他常用的模板还有:
目的:在45度的方向上也具有无方向,对该模板进行扩展定义为G=[1111−81111]G= \left[ \begin{matrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1 \end{matrix} \right] G=⎣⎡​111​1−81​111​⎦⎤​缺点:
1、没有了边缘的方向信息;
2、双倍加强了噪声的影响。


③ 参考博客

这几位的博客十分好,隆重推荐!

  1. https://www.jianshu.com/p/2334bee37de5
  2. https://blog.csdn.net/xddwz/article/details/78006655

Sobel,拉普拉斯算子相关推荐

  1. 边缘检测:Sobel、拉普拉斯算子

    边缘 边缘(edge)是指图像局部强度变化最显著的部分.主要存在于目标与目标.目标与背景.区域与区域(包括不同色彩)之间,是图像分割.纹理特征和形状特征等图像分析的重要基础. 图像强度的显著变化可分为 ...

  2. Opencv3 Robert算子 Sobel算子 拉普拉斯算子 自定义卷积核——实现渐进模糊

    #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace c ...

  3. 【数字图像处理】图像锐化:拉普拉斯算子(Laplacian)、高通滤波、Sobel算子、Isotropic算子、Prewitt算子

    图像锐化 图像锐化处理的目的是使模糊的图像变得更加清晰起来,通常针对引起图像模糊的原因而进行相应地锐化操作属于图像复原的内容.图像的模糊实质就是图像受到平均或积分运算造成的,因此可以对图像进行还原运算 ...

  4. 【OpenCV】边缘检测:Sobel、拉普拉斯算子

    边缘 边缘(edge)是指图像局部强度变化最显著的部分.主要存在于目标与目标.目标与背景.区域与区域(包括不同色彩)之间,是图像分割.纹理特征和形状特征等图像分析的重要基础. 图像强度的显著变化可分为 ...

  5. sobel算子 拉普拉斯算子以及散度与梯度的概念

    在ECBSR论文的代码研究中,我发现关于ECBSR提出的多分支重参数化模型中,代码用到了sobel算子与laplace算子,很难判断这两个算子是为了论文的创新点还是真的有用,这块只能等待后续的对比实验 ...

  6. Robert算子、Sobel算子、拉普拉斯算子

    文章目录 1.Robert算子 2.Sobel算子 3.拉普拉斯算子 4.结果 1.Robert算子 // 1. Robert算子cv::Mat gray;cv::Mat dstRoX;cv::Mat ...

  7. 图像锐化拉普拉斯算子matlab,Matlab图像锐化-Sobel,Laplacian算子 实验教程

    一.实验内容: ⑴图像的锐化:使用Sobel,Laplacian算子分别对图像进行运算,观察并体会运算结果. ⑵综合练习:对需要进行处理的图像分析,正确运用所学的知识,采用正确的步骤,对图像进行各类处 ...

  8. OpenCV 拉普拉斯算子Laplace Operator

    OpenCV 拉普拉斯算子Laplace Operator 拉普拉斯算子Laplace Operator 目标 理论 拉普拉斯算子 代码 解释 声明变量 加载源图像 减少噪音 灰阶 拉普拉斯算子 将输 ...

  9. OpenCV-数字图像处理之拉普拉斯算子

    OpenCV-数字图像处理之拉普拉斯算子 Laplace算子和Sobel算子一样,属于空间锐化滤波操作.起本质与前面的Spatial Filter操作大同小异,下面就通过Laplace算子来介绍一下空 ...

最新文章

  1. 如何为MySQL选择更合适的数据类型
  2. C# .net core 使用自定义的WebProxy
  3. ubuntu+查看服务器文件夹权限,Ubuntu - 文件夹权限查看与修改
  4. JPA-EntityManager.merge()
  5. 关于毫米波技术的描述
  6. Java 集合Collection常见知识点汇总~
  7. mysql curd语句_MySQL常用SQL语句(CURD,建表,加字段,查改参数)
  8. php-fpm linux_Linux下PHP-fpm配置
  9. 实战:配置内网DNS实现内部域名解析
  10. 五大常用算法(一) - 分治算法
  11. PS——证件照换底色的极简方法
  12. 跨境电商个人物品清单申报开发代码
  13. 火山引擎虚拟数字人技术与应用
  14. 蒟蒻的控制台贪吃蛇(新手实验)
  15. 用python绘制用例图源代码_用Visio画UML用例图
  16. 1055 习题4-9-3 逆序输出正整数各位上数字
  17. 输入年龄,判断年龄阶段
  18. Python文件读取关闭和写入
  19. 写给想成为前端工程师的同学们―前端工程师是做什么的?
  20. 网易2017秋招编程题集合

热门文章

  1. 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
  2. Java树形结构设计与开发
  3. 液晶显示器LCD与LED的区别
  4. 谈一谈自动化测试的统筹规划
  5. PS 2019 Mac版 自学入门系列(四)——调配颜色
  6. 【算法套路】-【递归篇】【递归三要素】
  7. 怎么在微信公众平台上传PPT?
  8. 使用prophet库分析航空出行人次规律
  9. 项目实训—场景划分(一)
  10. 什么是 C# 分部类(partia)