Laplace operator 拉普拉斯算子

article/2025/8/25 14:56:32

一 概要介绍

我们主要关注拉普拉斯算子在图像方面的应用。首先,列出二维拉普拉斯算子的定义:

Δ f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \Delta f = \frac{\partial^2f}{\partial x^2} + \frac{\partial^2f}{\partial y^2} Δf=x22f+y22f

从公式中可以看到,Laplace 算子在图像上,实际就是 x, y 两个方向的二阶偏导数求和。为什么这个算子可以检测边缘呢?我们可以看一下图示:
灰度曲线和一阶导数
上面左图,是图像灰度变化的曲线。在图的中心部分,灰度有一个明显的上升变化。而这个变化,我们可以认为是边缘(不严谨的说)。中心点的圆圈处,是该曲线一阶导数(梯度)最大的点。

上面右图,是对应左图的一阶导函数。我们可以看出,对应的一阶导函数的最大值,也已经用圆圈标注了。
二阶导数
上图,是灰度曲线的二阶导函数。对应着前两幅图看,圆圈标注的依然是一阶导函数的极值点,而在该点两侧,二阶导函数的符号是相反的。

到此为止,我们可以解释为什么拉普拉斯算子可以检测边缘了。边缘处的二阶导函数是过零点,即:左右符号相反的点。注意:单单是为零的点,不足以判断边缘。因为,平滑图像一阶,二阶倒数也可能为零。

二 计算过程

由于图像可以看做是二元函数,其中 x,y 的值是离散的,最小变化量为 1。因此可以用差分代替微分的计算。求导的时候:

连续形式: f ′ ( x 0 ) = lim ⁡ Δ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x {f}'(x_{0}) = \lim_{\Delta x \to 0} \frac{f(x_{0} + \Delta x) - f(x_{0})}{\Delta x} f(x0)=limΔx0Δxf(x0+Δx)f(x0)
离散形式: f ′ ( x 0 ) = lim ⁡ Δ x → 1 f ( x 0 + Δ x ) − f ( x 0 ) Δ x {f}'(x_{0}) = \lim_{\Delta x \to 1} \frac{f(x_{0} + \Delta x) - f(x_{0})}{\Delta x} f(x0)=limΔx1Δxf(x0+Δx)f(x0)

有了离散形式,我们就不难得出图的一阶偏导函数了:

∂ f ∂ x = f ( x + 1 , y ) − f ( x , y ) \frac{\partial f}{\partial x} = f(x+1, y) - f(x, y) xf=f(x+1,y)f(x,y)
∂ f ∂ y = f ( x , y + 1 ) − f ( x , y ) \frac{\partial f}{\partial y} = f(x, y+1) - f(x, y) yf=f(x,y+1)f(x,y)

然后,在一阶偏导函数的基础上,求二阶偏导函数。在求一阶偏导函数的时候,我们是通过 x+1 的形式来近似求 x 点的偏导的,直观上来讲取值有点偏右了。那么在求二阶导函数的时候,我们让 x = x - 1 来近似 x 点,更为恰当。所以,二阶偏导函数为:

∂ 2 f ∂ x 2 = f ( x + 1 , y ) − f ( x , y ) − ( f ( ( x − 1 ) + 1 , y ) − f ( x − 1 , y ) ) = f ( x + 1 , y ) + f ( x − 1 , y ) − 2 f ( x , y ) \frac{\partial^{2}f} {\partial x^{2}}=f(x+1, y) - f(x, y) - (f((x-1)+1, y) - f(x-1, y))=f(x+1, y)+f(x-1, y)-2f(x, y) x22f=f(x+1,y)f(x,y)(f((x1)+1,y)f(x1,y))=f(x+1,y)+f(x1,y)2f(x,y)
∂ 2 f ∂ y 2 = f ( x , y + 1 ) − f ( x , y ) − ( f ( x , ( y − 1 ) + 1 ) − f ( x , y − 1 ) ) = f ( x , y + 1 ) + f ( x , y − 1 ) − 2 f ( x , y ) \frac{\partial^{2}f} {\partial y^{2}}=f(x, y+1) - f(x, y) - (f(x, (y-1)+1) - f(x, y-1))=f(x, y+1)+f(x, y-1)-2f(x, y) y22f=f(x,y+1)f(x,y)(f(x,(y1)+1)f(x,y1))=f(x,y+1)+f(x,y1)2f(x,y)

由拉普拉斯算子的定义,把上面两式求和,即:

Δ f = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) \Delta f = f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y) Δf=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)

上面的式子,用在图像里可以看做上,下,左,右的点求和,减去四倍的中心点。因此,可以用如下模版对图像做卷积:
[ 0 1 0 1 − 4 1 0 1 0 ] \begin{bmatrix} 0 & 1& 0\\ 1& -4& 1\\ 0& 1& 0 \end{bmatrix} 010141010

三 运行示例

下面是一个非常简单且直白的测试图:
原始图像
处理后的图像

四 扩展模版

注意,扩展模版中元素和应为 0。

[ 0 − 1 0 − 1 4 − 1 0 − 1 0 ] \begin{bmatrix} 0 & -1& 0\\ -1& 4& -1\\ 0& -1& 0 \end{bmatrix} 010141010

[ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ] \begin{bmatrix} -1 & -1& -1\\ -1& 8& -1\\ -1& -1& -1 \end{bmatrix} 111181111

上面模版元素的符号与最初模版的符号相反。这里需要注意的是,符号相反,使得算子的结果符号也是相反的。这对于检测过零点并没有什么影响,但是如果是用该算子锐化图像,则要注意结果的加减运算。锐化是为了让灰度差异更加突出,因此,模版中心符号为负,应该减去计算结果。模版中心为正,应该加上计算结果。

[ 1 1 1 1 − 8 1 1 1 1 ] \begin{bmatrix} 1& 1& 1\\ 1& -8& 1\\ 1& 1& 1 \end{bmatrix} 111181111

正常的拉普拉斯算子是各向同性滤波器,意味着图像旋转并不影响结果。但默认的模版只在 90 度方向上存在这个不变性,而扩展模版则在 45 度方向上具有了该特性。

五 相关问题

  1. laplace 算子为何是 x 和 y 的二阶偏导的和。

    这样可以同时响应 x,y 两个方向梯度的变化。通常来讲,边缘的特性是在同一点,只有一个边缘梯度方向。比如说是水平的,或者垂直的,或者 45 度这样的,这些情况都没有问题。但有一个极特殊情况,那就是 x,y 方向的二阶偏导是相互抵消的,导致边缘没有响应,或者响应变弱了。这种情况虽然极少,但确实是存在的。好在即使存在,也只可能是个别点,基本可以忽略。

  2. laplace 算子的优劣之处

    由于 laplace 使用二阶偏导找过零点,那么对一些很小的灰度变化,也能灵敏的响应。但这也导致了其对噪声很敏感,尤其是孤立的噪声点特别强烈。因此,最好提前进行平滑处理,比如使用高斯滤波。高斯和拉普拉斯算子结合在一起,就是 LoG 算子,这个后面再说。

    由于 laplace 使用二阶偏导数,使其对应平缓的梯度变化不敏感,这是区别于一阶导数的地方。因此,如果不想检测出平缓的粗边缘,使用二阶导数更合适。

    laplace 可以通过两侧的符号判断边缘灰度是增还是减,有一定的实际用途。

六 参考资料:


http://chatgpt.dhexx.cn/article/RD3bhEqg.shtml

相关文章

通俗理解拉普拉斯算子(Laplace)

离散的一阶微分 离散的一阶微分定义为差分,如二维离散函数 f ( x , y ) \ f(x,y) f(x,y) (图像其实就可以看作一种二维离散函数,因为其反映的是不同像素点在x 和 y 轴方向上灰度的变化)在 x 方向上的一阶微分为 : σ f σ x f ( x 1 , y ) − f ( x ,…

拉普拉斯算子

文章目录 哈密尔顿算子梯度散度拉普拉斯算子图像处理——拉普拉斯算子 在介绍拉普拉斯算子概念之前我们先介绍,哈密尔顿算子( ∇ \nabla ∇),梯度,散度等概念 哈密尔顿算子 所谓哈密尔顿算子即为某一物理量在笛卡尔坐…

微信小程序阻止冒泡事件

阻止冒泡事件 当点击清空小图标时还会触发picker框弹出 解决方法: 将bindtap改为catchtap

uniapp小程序点击事件阻止冒泡

uniapp开发的小程序使用click.stop发现无法阻止冒泡&#xff0c;找了半天也不知道什么问题 后来把代码改成了 click.stop 去阻止事件冒泡的改成 tap.stop 去阻止事件冒泡 <view class"contents" v-for"(item, index) in data" :key"index&…

阻止冒泡的方法

阻止冒泡 1.标准写法 普通浏览器 e.preventDefault(); 方法&#xff0c; 2、非标准写法 e.cancelBubble true 3.阻止冒泡兼容性方案 4、使用传统的注册方式 // 3. 传统的注册方式a.onclick function(e) {// 普通浏览器 e.preventDefault(); 方法// e.preventDefault(…

JS如何阻止冒泡事件

1、背景 1.1 什么是事件冒泡 当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级&#xff0c;一直到window 。 优点&#xff1a;事件委托可以利用事件冒泡&#xff0c;来达到只指定一个事件处理程序就可以管理某一项类型的所有事件的效果&#xff0c;只添加一个事…

VUE的阻止冒泡事件

VUE的阻止冒泡事件 vue中的阻止冒泡事件可以帮助我们实现当子盒子被点击时&#xff0c;父盒子不被触发对应的点击事件。 1.click.stop()方法 <div class"boxParent" click"Parent($event)"><div class"boxSon" click"son($even…

阻止默认阻止冒泡

阻止默认&阻止冒泡 默认事件冒泡事件 默认事件 什么是默认事件 默认事件是元素默认会触发的事件&#xff0c;比如当你进入网页&#xff0c;右击鼠标会冒出菜单栏 怎么阻止默认事件发生 e.preventDefault(); <!DOCTYPE html> <html lang"en"> <h…

React中阻止冒泡

title: React中阻止冒泡 date: 2022-08-26 22:28:17 tags: React框架阻止冒泡行为 categories:框架React React中阻止冒泡 原因&#xff1a;在制作一个关于日历组件的时候&#xff0c;遇到一个bug&#x1f625;,点击input框让日历显示&#xff0c;点击日历以外的区域日历框隐…

阻止事件冒泡的方法

html结构: <body><form id"form1" runat"server"><div id"divOne" onclick"alert(我是最外层);"><div id"divTwo" onclick"alert(我是中间层&#xff01;)"><aid"hr_three"…

vue 阻止事件冒泡常用的方法

在 Vue 中&#xff0c;阻止事件冒泡有两种常用方法&#xff1a; 1. 使用 event.stopPropagation() 方法&#xff1a; 在事件处理函数中&#xff0c;可以通过调用事件对象的 stopPropagation() 方法来阻止事件冒泡。例如&#xff1a; html <template> <div click"…

大数据行业预测分析

大数据的发展引发了全球范围内深刻的技术与商业变革&#xff0c;已经成为全球发展的趋势以及国家、企业间的竞争焦点。数据作为一种资产的意识不断增强&#xff0c;越来越多的国家将数据定义为国家战略资源&#xff0c;开始抢占信息时代的制高点和竞争力。对于大数据行业的预测…

大数据与机器学习-大数据预测

大数据预测 量化交易 量化交易

你不好奇什么是大数据吗?快点进来看一看

大数据&#xff08;big data&#xff09;是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 //最小的基本单位是bit按顺序给出所有单位…

java代码验证大数据算法在竞猜足球预测分析中准确率

最近闲来无事&#xff0c;出于对足球的热爱&#xff0c;又痴迷于大数据技术&#xff0c;用java建了百来种算法模型&#xff0c;写了一个小软件&#xff0c;用来分析预测竞猜足球的胜平负。或许很多朋友都有疑问&#xff0c;竞猜足球到底怎么分析才能预测准确&#xff1f;竞猜足…

【毕业设计】大数据电商销售预测分析 - python 数据分析

文章目录 1 前言2 开始分析2.1 数据特征2.2 各项投入与销售额之间的关系2.3 建立销售额的预测模型 3 最后 1 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&…

大数据模型预测实践(knn算法+词嵌入)

大数据模型预测实践&#xff08;knn算法词嵌入&#xff09; 前言词嵌入(Word Embedding)KNN算法什么是KNN算法实现代码 前言 此次项目为根据北京大数据网站给出的用户信息和相应用户所游玩的景点&#xff0c;预测后续游客将要游玩的景点 由于数据集中许多标签为文字标签&#…

大数据预测:未来最吸金的领域

到了2020年&#xff0c;世界上每个人每秒将创造7 MB的数据。在过去的几年里&#xff0c;我们已经创造了比人类历史上更多的数据。大数据席卷全球&#xff0c;并且没有放缓的迹象。人们可能会想&#xff0c;“大数据产业从哪里开始?”以下有10个大数据预测可以回答这个有趣的问…

大数据预测未来趋势

数据是近年来备受关注的一门技术&#xff0c;大数据技术的战略意义不在于掌握庞大的数据信息&#xff0c;而在于对这些含有意义的数据进行专业化处理。 换而言之&#xff0c;如果把大数据比作一种产业&#xff0c;那么这种产业实现盈利的关键&#xff0c;在于提高对数据的“加工…