Laplace算子

article/2025/7/16 12:15:50

背景简述

在图像处理,我们知道经常把Laplace算子作为边缘检测之一,也是工程数学中常用的一种积分变换。本节主要介绍Laplacian 算子相关的知识。

基本理论

首先,拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数,定义为:


用更加形象的图像来解释,假设我们有一张一维图形。下图(a)中灰度值的”跃升”表示边缘的存在.如果使用一阶微分求导我们可以更加清晰的看到边缘”跃升”的存在(这里显示为高峰值)图(b); 如果在边缘部分求二阶导数会出现什么情况?,图(c)所示。(其图片和定义公式来源于http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/laplace_operator/laplace_operator.html)。

  

(a)                                                                                                          (b)

(c)

你会发现在一阶导数的极值位置,二阶导数为0。所以我们也可以用这个特点来作为检测图像边缘的方法。 但是, 二阶导数的0值不仅仅出现在边缘(它们也可能出现在无意义的位置),但是我们可以过滤掉这些点。

为了更适合于数字图像处理,将该方程表示为离散形式:


另外,拉普拉斯算子还可以表示成模板的形式,以便更好编程需要。如图1所示。


图1(a)表示离散拉普拉斯算子的模板,图1(b)表示其扩展模板,图1(c)则分别表示其他两种拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理

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


这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息但其缺点是对图像中的某些边缘产生双重响应。

参考代码

OpenCV版Laplace算子

[cpp]  view plain copy
print ?
  1. #include "cv.h"  
  2. #include "highgui.h"  
  3.   
  4. using namespace cv;  
  5.   
  6. int main(int argc, char* argv[])  
  7. {  
  8.         Mat src = imread("test.jpg");  
  9.         Mat dst;  
  10.       
  11.         Laplacian(src,dst,src.depth());  
  12.         imwrite("laplacian.jpg",dst);  
  13.   
  14.         imshow("dst",dst);  
  15.         waitKey();  
  16.   
  17.         return 0;  
  18. }  

OpenCV-Python版Laplacian

[cpp]  view plain copy
print ?
  1. #coding=utf-8    
  2. import cv2    
  3. import numpy as np      
  4.     
  5. img = cv2.imread("test.jpg", 0)    
  6. gray_lap = cv2.Laplacian(img,cv2.CV_16S,ksize = 3)    
  7. dst = cv2.convertScaleAbs(gray_lap)    
  8.     
  9. cv2.imshow('laplacian',dst)    
  10. cv2.waitKey(0)    
  11. cv2.destroyAllWindows()   

OpenCV-Python版LaplaceOperater

[cpp]  view plain copy
print ?
  1. import cv2    
  2. import numpy as np    
  3.         
  4. kernel_size = 3    
  5. scale = 1    
  6. delta = 0    
  7. ddepth = cv2.CV_16S    
  8.         
  9. img = cv2.imread('test.jpg')    
  10. img = cv2.GaussianBlur(img,(3,3),0)    
  11. gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    
  12.         
  13. gray_lap = cv2.Laplacian(gray,ddepth,ksize = kernel_size,scale = scale,delta = delta)    
  14. dst = cv2.convertScaleAbs(gray_lap)    
  15.         
  16. cv2.imshow('laplaceOperater',dst)  
  17. cv2.waitKey(0)    
  18. cv2.destroyAllWindows()    

输出测试

原始图像所示:


OpenCV-Python版Laplacian输出图像所示:


OpenCV-Python版LaplaceOperater输出图像所示:

由图可以看出,将原始图像通过拉普拉斯变换后增强了图像中灰度突变处的对比度,使图像中小的细节部分得到增强并保留了图像的背景色调,使图像的细节比原始图像更加清晰。基于拉普拉斯变换的图像增强已成为图像锐化处理的基本工具。

参考文献

[1] Milan Sonka ,Vaclav Hlavac, Roger Boyle, "Image Procssing ,analysis and Machine Vision".

[2] Richard Szelisi,"Computer Vision Algorithms and Applications".


关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博和新浪微博songzi_tea.


文章转自:http://blog.csdn.net/songzitea/article/details/12842825



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

相关文章

使用二阶微分锐化图像(拉普拉斯算子)基本原理及Python实现

1. 拉普拉斯算子 1.1 简介 一种典型的各向同性的微分算子,可用于检测图像中灰度图片的区域 $$ \nabla^{2} f\frac{\partial^{2} f}{\partial x^{2}}\frac{\partial^{2} f}{\partial y^{2}} $$ 根据上述的差分近似可以推导出 $$ \nabla^{2} f(x, y)f(x1, y)f(x-1, y)…

卷积神经网络 作业

文章目录 卷积神经网络 作业1. 高斯拉普拉斯算子(边缘检测)1.1 简介1.2 拉普拉斯算子1.3 高斯拉普拉斯算子1.3 LoG使用指南1.4 总结1.5 代码实现 2. 使用LeNet网络,输出特征图2.1 作业要求2.2 代码实现 卷积神经网络 作业 1. 高斯拉普拉斯算子(边缘检测) 作业要求…

深度学习传统CV算法——二阶微分边缘算子

二阶微分边缘算子 二阶微分边缘算子二阶微分边缘算子基本思想Laplace 算子拉普拉斯表达式图像中的Laplace 算子Laplace算法过程Laplace算子的旋转不变性证明Laplace算子优缺点 LOG算子LoG解决的问题LoG算子的计算过程LoG的卷积模板LoG算法过程DoG与LoGLoG算子优缺点 Canny算子C…

MATLAB - 拉普拉斯算子可视化

1、拉普拉斯算子 ∇ 2 \nabla^ 2 ∇2 拉普拉斯算子有很多用途,在物理中常用于波动方程、热传导方程和亥姆霍兹方程的数学模型;在静电学中,拉普拉斯方程和泊松方程的应用随处可见;在数学中,经拉普拉斯算子运算运算为零…

一文读懂Nabla算子

文章目录 ∇ \nabla ∇算子的介绍梯度、散度和旋度不同坐标系下 ∇ \nabla ∇算子的形式 ∇ \nabla ∇算子运算律 ∇ \nabla ∇算子常用公式补充内容 参考文献及视频 ∇ \nabla ∇算子的介绍 ∇ \nabla ∇称作Nabla算子或del算子(算子是一种映射,可以理解…

【CSS 表格属性(Table)】

CSS 表格属性 Table 1. border-collapse 属性: 单元格/表格 边框 合并2. border-spacing 属性: 设置 表格/单元格 边框间距 /间隔距离 (搭配 border-collapse 属性 )3. caption-side 属性: 设置 表格标题的位置4. empty-cells 属性: 设置 表格 空单元格的显示 (空单…

html里table属性值,html——table标签属性总结

table标签属性 table标签 border border标签属性:设定围绕表格的边框的宽度:table 111111111border标签属性不仅设置围绕表格边框的宽度,还为每个单元格添加宽度为1px的边框 实际开发中不建议使用border标签属性实现边框效果,建议通过为table、th和td设定border样式属性实现…

css table属性

表格边框 指定CSS表格边框,使用border属性。 下面的例子指定了一个表格的th和td元素的黑色边框: 在上面的例子中的表格有双边框。这是因为表和th/ td元素有独立的边界。 为了显示一个表的单个边框,使用 border-collapse属性 折叠边框 border-…

elementUI表格table的列内置样式修改方法/对比template,列属性class-name,table属性cell-class-name

1,table属性cell-class-name的使用可以作用到某一行,或者某一列等等。但是在style标签中要去掉scoped,不然无效。 (在elementUI中,row-class-name、row-style、cell-class-name等属性要想生效必须使用全局class才能生…

html中table标签及属性

table表格 HTML表格由table标签以及多个tr、th和td标签组成table表示表格&#xff0c;整个表格要包含在<table></table>标签中tr表示表格中的行&#xff0c;是单元格的容器&#xff0c;一行可以包括多个单元格th表示表格中的单元格&#xff0c;我理解为列,th放在t…

Antd 3.0 table,表格组件(Table属性,Column属性,RowSelection属性)

Antd 3.0 table&#xff0c;表格组件&#xff08;Table属性&#xff0c;Column属性&#xff0c;RowSelection属性&#xff09; 一、Table属性 ​ 常用参数说明&#xff1a; 参数说明类型默认dataSource数据数组any[]columns表格列的配置描述&#xff0c;具体项见下表ColumnP…

<table>标签的属性

1.border border属性用于设置表格的边框&#xff0c;默认值为0。 2.cellspacing cellspacing属性用于设置单元格于单元格之间的空间&#xff0c;默认值为2px。 3.cellpadding cellpadding属性用于设置单元格于单元格之间的空白间距&#xff0c;默认值为1px。 4.width、h…

html-table标签属性总结

table标签属性 table标签borderwidthborder-spacingborder-collapsemargin tr标签heightbackground-colortext-alignvertical-align td标签合并单元格合并行单元格rowspan合并列单元格colspan table标签 border border标签属性&#xff1a;设定围绕表格的边框的宽度&#xff…

2.9CSS table属性

表格边框 指定CSS表格边框&#xff0c;使用border属性。 下面的例子指定了一个表格的Th和TD元素的黑色边框&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>菜鸟教程(runoob.com)</title><style&g…

Vue+Element el-table属性row-class-name用法及踩坑

el-table属性row-class-name用法及踩坑 需求前提&#xff1a;想要给表格的某一行加上不同的background&#xff0c;用来区分当前行的状态 根据官方给出的文档官方文档 在el-table中绑定自定义属性row-class-name <el-table:data"tableData"style"width: 10…

HTML中的table标签属性

表格 表格是由行和列排列而成的一种结构 HTML表格由table标签以及一个或多个tr、th或td标签组成&#xff1a; table标签用来定义表格&#xff0c;整个表格包含在<table>和</table>标签中&#xff1b; tr标签用来定义表格中一个行&#xff0c;它是单元格的容器&…

html之table属性

目标&#xff1a; 1&#xff0c;table标签属性 2&#xff0c;table通用属性 3&#xff0c;tr标签属性 4&#xff0c;td标签属性 上一节我们说了table简单结构和复杂结构&#xff0c;这一节我们来看一下table的属性 1&#xff0c;table标签属性 1&#xff0c;边框border&#xf…

table常用的几个重要属性

效果图如下&#xff1b; border 规定表格边框的宽度 cellpadding 规定单元边沿与其内容之间的空白 cellspacing 规定单元格之间的空白 width 规定表格的宽度 border-collapse: collapse; 为表格设置合并边框模型 默认值为separate rowspan跨行合并单元格 colspan跨列合并单元格…

电感 vs 磁珠

铁氧体磁珠&#xff08;(Ferrite Bead, FB&#xff09;是一种利用电感原理制作而成的元器件&#xff0c;主要用于抑制信号或电源线的高频噪声和尖峰干扰&#xff0c;还具有吸收静电脉冲的能力&#xff0c;是目前应用发展很快且廉价易用的一种抗干扰器件&#xff0c;它的原理图符…

磁珠的阻抗曲线

下面是一个典型的磁珠的频率曲线&#xff0c;我们所看到的大多数厂家的磁珠规格书&#xff0c;曲线基本都是这样的。 我们知道&#xff0c;Z表示阻抗&#xff0c;R表示电阻&#xff0c;X表示电抗。那么这三者是什么关系呢&#xff1f; 他们应该满足公式&#xff1a;ZRjX。 然而…