无处不在的拉普拉斯——边缘,斑点,金字塔

news2025/6/19 0:02:34

作为拿破仑的老师和“法国牛顿”,拉普拉斯在数学和天体力学中贡献颇多,但其实在图像处理中也会发现拉普拉斯的身影。怎么它又可以用来检测斑点,又可以检测边缘,又可以金字塔重建,还可以平滑,还可以增强细节。

其实很多拉普拉斯出现的地方都归结于拉普拉斯算子,如果没有深刻地理解拉普拉斯算子,就容易一头雾水,容易“着相”,现在我们就尝试将它”打回原形“。

拉普拉斯算子Laplace operator

看着很简单,就是三维函数在三个方向的二阶导数之和。但其为什么说它是梯度的散度?当它等于0时意味着什么? 

首先要清楚什么是梯度Gradient。梯度是函数“最陡”,变化最快的方向(所以有梯度下降法)。这表明它其实是一个vector operator,对平面二维图像,分布求x,y方向的梯度,然后梯度大小和正交基就可以得到一个梯度场。

散度Divergence 是形容向量场的,从通量的角度理解,是形容一个点是否有“溢出”。因为内积表示投影,那么将向量函数与单位向量做内积,就得到该处溢出的大小。所以散度可以将由向量得到一个标量。

如果向量函数和单位向量用一套正交基,内积的结果就是各个维度的大小之和:

 那么,对梯度构成的向量场求散度,需要再求导一次(二阶导),就得到:

现在再回过头来看拉普拉斯算子,它是将梯度场看作一个向量场,然后求它的散度,所以描述的是这一点梯度“溢出”的大小。求散度的过程需要再进行一次微分,所以这就是为什么把拉普拉斯算子比做加速度的原因。

拉普拉斯边缘检测

下面是一个渐变的边缘检测示意图,分别可以用一阶和二阶算子计算边缘。

一阶的话,可以使用梯度的极值表示边缘;一阶导数通常会产生较宽的边缘。

二阶的话,可以使用拉普拉斯响应的过零点表示边缘

 现在尝试从散度的角度理解。梯度场方向都是向右,但是强度先是渐强,然后减弱。渐强的过程中二阶导数为正,流出大于流入,所以散度是正的;减弱的过程正好相反。

拉普拉斯斑点检测

刚才只是沿着边缘垂直方向的情况,当把边缘替换成斑点时,从各个方向上的移动时拉普拉斯响应都会像是刚才一样变化,这时的波峰波谷就形成了山峰和山谷。所以当使用拉普拉斯极值点的时候就可以实现斑点检测。

下图可以看到峰谷对应的散度值。可以理解为什么拉普拉斯算子的极值点是斑点,零点又可以做边缘检测。

拉普拉斯边缘检测模板

将拉普拉斯算子看作是二阶导在多维的拓展,那么拉普拉斯算子的过零点就可以用来做边缘检测。

有限差分算子,可以由二阶导定义或者泰勒展开推导出。

需要说明的是,拉普拉斯滤波器模板与图像的卷积是拉普拉斯响应,结果有正负之分,为了显示还需要归一化到0~255。但归一化之后反而不太好找过零点了。

拉普拉斯滤波器本质是一个带通滤波器,因为平坦处响应为0,高频处响应也为0(过零点)。

高斯拉普拉斯LoG

因为二阶导对噪声敏感,所以一般会先使用高斯模糊,然后再在平滑后的结果上使用拉普拉斯算子。高斯和拉普拉斯都是算子,根据卷积的结合律,可以提前计算高斯滤波的拉普拉斯响应,这样节约了计算量。

画出图像是墨西哥草帽:

墨西哥草帽和图像做相关就可以实现斑点检测(结合极大值的寻找),这就是SIFT检测的基本原理。结合离散拉普拉斯滤波算子可以看出,极大值处对应高亮背景中的黑点,极小值对应暗黑背景中的高亮点。LoG中的sigma则表示了斑点中的scale。

差分高斯金字塔

LoG可以使用DoG近似。DoG是不同的尺度因子,所以两个高斯滤波核中心会错位,二者做差就类似拉普拉斯中的左右或者上下做差。因为高斯滤波是低通,两个低通做差来近似拉普拉斯滤波器,也解释了拉普拉斯滤波器带通的性质。

拉普拉斯金字塔

在拉普拉斯金字塔中,每层是图像做差得到的结果。看到图像之差,就很自觉地联系到拉普拉斯算子的近似了。

拉普拉斯用于图像重建,重建的意义是恢复到原始状态,而一旦有了下采样再上采样就会有信息丢失,所以拉普拉斯其实提前记录了这一损失,这样就可以放心去下采样了。

除了重建,拉普拉斯金字塔又进一步用在图像融合。其实就是在重建的过程中同时使用两个图像的拉普拉斯金字塔,因为在多尺度上进行,所以一般可以得到较好的融合效果。

融合多通道图时不能分通道融合,因为不同通道的频率信息不完全一致,融合结果会破坏颜色比例,导致最终的结果出现色差。同时在融合的过程中,差分图像的精度可能损失,在底图融合时mask精度不够会在融合极大值极小值的工程中插值出预期之外的值,在之后的融合过程中继续放大误差。

reference:

https://www.plymouth.ac.uk/uploads/production/document/path/3/3744/PlymouthUniversity_MathsandStats_the_Laplacian.pdf

三大偏微分方程之首:拉普拉斯方程(1) - 知乎

基础篇2: 梯度、散度与旋度 - 知乎

高斯拉普拉斯算子(Laplacian of Gaussian, LoG) - 知乎

DoG和LoG算子 - 知乎

https://www.cse.psu.edu/~rtc12/CSE486/lecture11.pdf

Spatial Filters - Laplacian/Laplacian of Gaussian

https://www.cnblogs.com/imageshop/p/10620935.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/914737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis 6个节点(3主3从),始终一个节点不能启动

redis节点,始终有一个节点不能启动起来 1.修改了配置文件 protected-mode no,重启 修改了配置文件 protected-mode no,重启redis问题依然存在 2、查看/var/log/message的redis日志 Aug 21 07:40:33 redisMaster kernel: Out of memory: K…

Vue2-Vuex概念及使用场景、Vuex环境搭建、Vuex工作原理、Vuex配置项、Vuex模块化及命名空间

🥔:山不向我走来,我便向它走去 更多Vue知识请点击——Vue.js VUE2-Day11 理解Vuex1、Vuex是什么2、什么时候使用Vuex Vuex环境搭建1、安装vuex2、创建store文件3、main.js引入store Vuex的工作原理1、原理图2、用案例解释工作原理3、注意点 V…

linux之《进程》

文章目录 进程基础pcb状态优先级 进程的调度常见的调度算法 进程的通信方式 进程基础 pcb 操作系统在创建进程时,会给进程分配一块PCB(process control block 进程控制块),对应linux上就是task_struct结构体,PCB里面…

非root用户下安装OpenSSL

1.OpenSSL下载 https://www.openssl.org/source/ 2.将下载好的压缩包上传至linux 3.解压压缩包 tar -xvf openssl-3.0.7.tar.gz 4.创建openssl安装目录 mkdir /home/openssl 5.进入安装包解压后的目录 cd /home/openssl-3.0.7.tar.gz 6.安装openssl,注意命令是…

深度学习论文: WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation

深度学习论文: WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation PDF: https://arxiv.org/pdf/2303.14814.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: h…

hexo优化bilibili显示

首发博客地址 https://blog.zysicyj.top/ It has been 1086 days since the last update, the content of the article may be outdated. 这篇文章属于转载,原地址为Hexo博客引用B站视频并自动适配 在进行引用B站用iframe方式引入视频时发现,通过默认的方…

Python科研绘图--Task02

目录 图形元素 画布 (fifigure)。 坐标图形 (axes),也称为子图。 轴 (axis) :数据轴对象,即坐标轴线。 刻度 (tick),即刻度对象。 图层顺序 轴比例和刻度 轴比例 刻度位置和刻度格式 坐标系 直角坐标系 极坐标系 地理…

[oneAPI] 基于BERT预训练模型的SQuAD问答任务

[oneAPI] 基于BERT预训练模型的SQuAD问答任务 Intel Optimization for PyTorch and Intel DevCloud for oneAPI基于BERT预训练模型的SQuAD问答任务语料介绍数据下载构建 模型 结果参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Int…

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测。 模型描…

算法通关村第九关——中序遍历与搜索树

1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…

17.2 【Linux】通过 systemctl 管理服务

systemd这个启动服务的机制,是通过一支名为systemctl的指令来处理的。跟以前 systemV 需要 service / chkconfig / setup / init 等指令来协助不同, systemd 就是仅有systemctl 这个指令来处理而已。 17.2.1 通过 systemctl 管理单一服务 (s…

升级还是不升级?iPhone 15和iPhone 14 Plus性能比较

预览iPhone 15 Pro Max与三星Galaxy S23 Ultra之战是有正当理由的。显然,三星的旗舰智能手机为2023年的所有其他旗舰产品定下了基调——由于其超长的电池寿命和一流的摄像头,证明了它是最受欢迎的产品。 毫不奇怪,Galaxy S23 Ultra不仅是最好的照相手机之一,也是花钱能买到…

docker之DockerFile与网络

目录 DockerFile 构建步骤 基础知识 指令 实战:构建自己的centos 第一步:编写dockerfile文件 第二步:构建镜像文件 docker网络 原理 功能 网络模式 host模式 container模式 none模式 bridge模式 DockerFile dockerfile 是用来…

wireshark进行网络监听

一、实验目的: 1)掌握使用CCProxy配置代理服务器; 2)掌握使用wireshark抓取数据包; 3)能够对数据包进行简单的分析。 二、预备知识: 包括监听模式、代理服务器、中间人攻击等知识点&#xf…

【广州华锐视点】VR教学课件编辑工具有哪些用处?

随着科技的不断发展,教育领域也在不断地进行创新。在众多的创新技术中,虚拟现实(VR)技术的应用为教育带来了前所未有的变革。广州华锐视点开发的VR教学课件编辑工具作为一种新型的教育工具,可以为我们的教学提供许多支持,从而提升…

redis基本介绍以及在node中使用

文章目录 引言一、什么是redis1. redis简介2. redis的特点3. redis的应用场景 二、redis在windows下安装1. 下载安装2.验证是否安装成功3. 配置环境变量 三、redis-cli常用命令介绍1. redis-cli2. keys *3. set key value4. get key5. exists key6. del key7. info8. flushdb9.…

硬件知识累计 TVS管选型 防止浪涌

1. 首先了解 浪涌 1.1 浪涌是什么 浪涌(electrical surge),顾名思义就是瞬间出现超出稳定值的峰值,它包括浪涌电压和浪涌电流。 浪涌也叫突波,顾名思义就是超出正常工作电压的瞬间过电压。本质上讲,浪涌是…

数据结构--递归与分治

汉诺塔分析&#xff1a; 以三层进行分析&#xff0c;大于三层分析情况是一样的。 #include <stdio.h>void move(int n,char x,char y,char z) {if(1 n){printf("%c---------->%c\n",x,z);}else{move(n-1,x,z,y);//将第n-1个盘子从x借助z移动到y printf(&q…

HBuilderX学习--运行第一个项目

HBuilderX&#xff0c;简称HX&#xff0c;是轻如编辑器、强如IDE的合体版本&#xff0c;它及轻巧、极速&#xff0c;强大的语法提示&#xff0c;提供比其他工具更优秀的vue支持大幅提升vue开发效率于一身(具体可看官方详细解释)… 一&#xff0c;HBuilderX下载安装 官网地址 …

前端基础(ES6 模块化)

目录 前言 复习 ES6 模块化导出导入 解构赋值 导入js文件 export default 全局注册 局部注册 前言 前面学习了js&#xff0c;引入方式使用的是<script s"XXX.js">&#xff0c;今天来学习引入文件的其他方式&#xff0c;使用ES6 模块化编程&#xff0c;…