当前位置: 首页 > news >正文

用于图像处理的高斯滤波器 (LoG) 拉普拉斯

一、说明

        欢迎来到拉普拉斯和高斯滤波器的拉普拉斯的故事。LoG是先进行高斯处理,继而进行拉普拉斯算子的图像处理算法。用拉普拉斯具有过零功能,实现边缘岭脊提取。

二、LoG算法简述

        在这篇博客中,让我们看看拉普拉斯滤波器和高斯滤波器的拉普拉斯滤波器以及 Python 中的实现。拉普拉斯滤波器的故事始于图论中的拉普拉斯矩阵,这是在矩阵中表示图的最简单方法。图像的拉普拉斯高亮了强度快速变化的区域。任何具有明显不连续性的特征都将由拉普拉斯算子增强。拉普拉斯滤波器属于导数滤波器类别。它是一种二阶滤波器,用于图像处理,用于边缘检测和特征提取。当我们使用一阶导数滤波器时,我们必须应用单独的滤波器来检测垂直和水平边缘,然后将两者结合起来。但是拉普拉斯滤波器可以检测所有边缘,而不管方向如何。

        在数学上,拉普拉斯滤波器定义为:

        拉普拉斯滤波器函数

        存在 2 种类型的拉普拉斯滤波器。

  1. 拉普拉斯阳性
  2. 负拉普拉斯

        正拉普拉斯算子使用掩码,中心元素为负值,角元素为 0。此滤镜可识别图像的外边缘。下面给出了一个过滤器掩码示例。

阳性拉普拉斯掩模

        负拉普拉斯算子用于查找图像的内边缘。它使用标准蒙版,中心元素为正元素,角元素为 0,所有其他元素为 -1。下面给出一个示例。

负拉普拉斯掩码

        在这两种情况下,筛选器中的值总和应为 0。标准面罩有不同的变体可供选择。你可以试穿它。

三、过零功能

        过零点是数学函数的符号在函数图中发生变化的点。在图像处理中,使用拉普拉斯滤波器的边缘检测是通过将图中导致零的点标记为潜在的边缘点来进行的。此方法适用于在两个方向上查找边缘的图像,但当在图像中发现噪点时效果不佳。因此,我们通常在拉普拉斯滤波器之前应用 Guassian 滤波器对图像进行平滑处理。它通常被称为瓜西拉普拉斯 (LoG) 滤波器。我们可以将 Guassian 和 Laplacian 运算组合在一起,组合滤波器的数学表示如下:

LoG滤波器功能

四、代码块

        方法 1

        下面提到了实现 LoG 过滤器的 OpenCV 内置函数方法。

#OPENCV implementationimport cv2
import matplotlib.pyplot as plt
image = cv2.imread(r"E:\eye.png", cv2.IMREAD_COLOR)
image = cv2.GaussianBlur(image, (3, 3), 0)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
filtered_image = cv2.Laplacian(image_gray, cv2.CV_16S, ksize=3)
# Plot the original and filtered images
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.title('Original Image')plt.subplot(122)
plt.imshow(filtered_image, cmap='gray')
plt.title('LoG Filtered Image')plt.show()

        程序输出:

        方法 2

        在 openCV 中实现 LoG 过滤器的 Python 函数如下所示。

import cv2
import matplotlib.pyplot as plt
import numpy as np
def LoG_filter_opencv(image, sigma, size=None):# Generate LoG kernelif size is None:size = int(6 * sigma + 1) if sigma >= 1 else 7if size % 2 == 0:size += 1x, y = np.meshgrid(np.arange(-size//2+1, size//2+1), np.arange(-size//2+1, size//2+1))kernel = -(1/(np.pi * sigma**4)) * (1 - ((x**2 + y**2) / (2 * sigma**2))) * np.exp(-(x**2 + y**2) / (2 * sigma**2))kernel = kernel / np.sum(np.abs(kernel))# Perform convolution using OpenCV filter2Dresult = cv2.filter2D(image, -1, kernel)return result# Example usage:
image = cv2.imread(r"E:\eye.png", cv2.IMREAD_GRAYSCALE)  # Replace 'path_to_your_image.png' with your image path
sigma = 2.0
filtered_image = LoG_filter_opencv(image, sigma)
filtered_image = cv2.convertScaleAbs(filtered_image)
plt.imshow(filtered_image, cmap="gray")

        程序的输出:

        方法 3

        下面给出了使用 scipy 包的 LoG 过滤器的 Python 函数实现。

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import convolve
from scipy import miscdef LoG_filter(image, sigma, size=None):# Generate LoG kernelif size is None:size = int(6 * sigma + 1) if sigma >= 1 else 7if size % 2 == 0:size += 1x, y = np.meshgrid(np.arange(-size//2+1, size//2+1), np.arange(-size//2+1, size//2+1))kernel = -(1/(np.pi * sigma**4)) * (1 - ((x**2 + y**2) / (2 * sigma**2))) * np.exp(-(x**2 + y**2) / (2 * sigma**2))kernel = kernel / np.sum(np.abs(kernel))# Perform convolutionresult = convolve(image, kernel)return result# Example usage:
image = cv2.imread(r"E:\eye.png", cv2.IMREAD_GRAYSCALE)  # Replace 'path_to_your_image.png' with your image path
sigma = 2.0
filtered_image = LoG_filter(image, sigma)# Plot the original and filtered images
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.imshow(image, cmap='gray')
plt.title('Original Image')plt.subplot(122)
plt.imshow(filtered_image, cmap='gray')
plt.title('LoG Filtered Image')plt.show()

        程序输出:

        希望您喜欢阅读。这是关于图像处理中常用过滤器的另一篇文章的链接 用于图像处理的不同过滤器 | by 拉吉·利尼 |中。

相关文章:

用于图像处理的高斯滤波器 (LoG) 拉普拉斯

一、说明 欢迎来到拉普拉斯和高斯滤波器的拉普拉斯的故事。LoG是先进行高斯处理,继而进行拉普拉斯算子的图像处理算法。用拉普拉斯具有过零功能,实现边缘岭脊提取。 二、LoG算法简述 在这篇博客中,让我们看看拉普拉斯滤波器和高斯滤波器的拉普…...

【h5 uniapp】 滚动 滚动条,数据跟着变化

uniapp项目 需求: 向下滑动时,数据增加,上方的日历标题日期也跟着变化 向上滑动时,上方的日历标题日期跟着变化 实现思路: 初次加载目前月份的数据 以及下个月的数据 this.getdate()触底加载 下个月份的数据 onReach…...

ModStartBlog v8.5.0 评论开关布局调整,系统后台全面优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …...

django|报错SQLite 3.8.3 or later is required的解决方案

迁移原同事写的程序,到新服务器上边。运行报错。解决方案有三种 降低django版本升级sqlite3,不低于3.8.3版本修改django源码 方案一、降低django版本 卸载高版本django pip uninstall django安装低版本,如 pip install django2.1.7注意&…...

通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现 [附POC]

文章目录 通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 通达OA get_datas.php前台sql注入-可获取数据库session登入后台漏洞复现…...

苹果官方:所有国行iPhone 15系列都在中国生产!

近几年来,国内供应链逐渐外迁,而拥有庞大劳动力市场的印度却成为了香饽饽,逐渐获得越来越多企业的重视,就连苹果公司也将其视为发展的重要战略要地。 自从苹果扩大印度生产iPhone规模后,很快流言四起,各种负…...

Oracle 安装及 Spring 使用 Oracle

参考内容: docker安装oracle数据库史上最全步骤(带图文) Mac下oracle数据库客户端 Docker安装Oracle docker能安装oracle吗 Batch script for add a auto-increased primary key for exist table with records Docker 安装 Oracle11g 注意&a…...

element-ui 表格 点击选中

element-ui 表格 点击选中 复制element ui 表格 <template><el-table:data"tableData"style"width: 100%"><el-table-columnprop"date"label"日期"width"180"></el-table-column><el-table-col…...

畅通工程之局部最小花费问题 (C++)

目录 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; 结果 题目&#xff1a; 思路&#xff1a; 详细思路都在代码注释里 。 代码&#xff1a; #include<iostream>//无向图邻接矩阵 #include<map> #include<algorithm> #define mvnum 1005 using …...

Sql 异常 + Error

目录 1、Sql 异常 1、SQL Error 1、 Out of sort memory,consider increasing server sort buffer size 2、MySQL排序规则不同关联报错 3、MySQL ....LIMIT 15 4、MySQL&#xff1a;Data truncation: Invalid JSON text 5、MySQL:Duplicate entry ‘xx‘ for key ‘xxxx…...

基于UNI-APP实现适配器并保证适配器和实现的调用一致

概述 前端功能的实现是基于不同的环境采用不同的实现方式的。一种是企业微信小程序&#xff0c;需要基于企业微信框架实现。一种是移动APP&#xff0c;需要基于uni-app的中底层实现。为了调用方便&#xff0c;需要将两种实现统一在一种适配器中&#xff0c;调用者只需要指定环…...

使用jdk21预览版 --enable-preview

异常 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sb3: Compilation failure [ERROR] --enable-preview 一起使用时无效 [ERROR] &#xff08;仅发行版 21 支持预览语言功能&#xff09; 解决…...

js中的跳转都有哪些格式

location.href "URL" &#xff1a;用于在当前窗口中加载其他页面。 例如&#xff1a;location.href "https://www.google.com" location.replace("URL")&#xff1a;用于在当前窗口中加载其他页面&#xff0c;但不保留原页面的历史记录&#…...

无重复字符的最长子串

题目 添加链接描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2:输入: s "bbbbb" 输出…...

C语言--输入10个数字,要求输出其中值最大的元素和该数字是第几个数

今天小编带大家了解一下什么是“打擂台”算法。 一.思路分析 可以定义一个数组arr&#xff0c;长度为10&#xff0c;用来存放10个数字&#xff0c;设计一个函数Max&#xff0c;用来求两个数中的较大值&#xff0c; 定义一个临时变量tmparr[0],保存临时最大的值&#xff0c;下标…...

如何做好功能测试,提升测试质量和效率?

要做好功能测试并提升测试质量和效率&#xff0c;可以考虑以下几个方面&#xff1a; 1. 明确测试目标和需求 在开始功能测试之前&#xff0c;首先要明确测试的目标和需求&#xff0c;包括测试的范围、重点、预期结果等。这有助于为测试工作提供清晰的方向和指导。 2. 制定详细…...

高德地图添加信息弹窗,信息弹窗是单独的组件

//弹窗组件 <template><el-card class"box-card" ref"boxCard" v-if"showCard"><div slot"header" class"clearfix"><div class"title">{{ model.pointName }}</div><div class…...

Apache Arrow优点

优点 采用连续的内存布局&#xff0c;在单机计算的时候&#xff0c;对操作系统友好&#xff0c;增加了缓存命中率以及读取数据的效率采用列式存储&#xff0c;在单机计算的时候&#xff0c;可以利用SMID向量化处理&#xff0c;并且增加了查询效率&#xff08;一般查询的时候只…...

【Linux权限:系统中的数字锁与安全之门】

1.Linux下的用户 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在linux下做有限的事情。超级用户的命令提示符是“#”&#xff0c;普通用户的命令…...

笔记本电脑的麦克风没有声音

笔记本电脑的麦克风没有声音是一个常见的问题&#xff0c;可能是由于以下几个原因导致的&#xff1a; 第一&#xff0c;麦克风没有启用或者被禁用了。在Windows系统中&#xff0c;右键单击任务栏上的音量图标&#xff0c;选择“录音设备”&#xff0c;在弹出窗口中找到麦克风&a…...

GDSDecomp深度解析:Godot引擎逆向工程的技术架构与最佳实践

GDSDecomp深度解析&#xff1a;Godot引擎逆向工程的技术架构与最佳实践 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 在游戏开发领域&#xff0c;Godot引擎以其开源特性和强大的2D/3D渲染能…...

从Layer Norm到Group Norm:深入浅出图解归一化技术的演进与选择

从Layer Norm到Group Norm&#xff1a;深入浅出图解归一化技术的演进与选择 在深度学习模型的训练过程中&#xff0c;归一化技术扮演着至关重要的角色。想象一下&#xff0c;当你试图训练一个复杂的卷积神经网络时&#xff0c;不同层的输入分布可能会发生剧烈变化&#xff0c;这…...

飞牛OS新手必看:用acme.sh脚本一键搞定SSL证书,告别手动更新烦恼

飞牛OS SSL证书自动化管理&#xff1a;从零到精通的acme.sh实战指南 每次看到浏览器地址栏那个红色"不安全"警告&#xff0c;心里是不是咯噔一下&#xff1f;作为飞牛OS用户&#xff0c;你可能已经意识到SSL证书的重要性&#xff0c;但又被那些晦涩的命令行和繁琐的…...

Seedance MCP 集成指南

MCP&#xff08;模型上下文协议&#xff09;是由 Anthropic 推出的一个模型上下文协议&#xff0c;它允许 AI 模型&#xff08;如 Claude、GPT 等&#xff09;通过标准化接口调用外部工具。借助 AceData Cloud 提供的 Seedance MCP 服务器&#xff0c;您可以直接在 AI 客户端&a…...

英雄联盟全能工具箱:3分钟上手,告别繁琐操作的游戏神器

英雄联盟全能工具箱&#xff1a;3分钟上手&#xff0c;告别繁琐操作的游戏神器 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为错过对局…...

别再死记硬背公式了!用Halcon+C#手把手搞定机器人九点标定(附完整代码与调试技巧)

HalconC#实战&#xff1a;机器人九点标定的工程化实现与避坑指南 在工业自动化领域&#xff0c;视觉引导机器人作业已成为提升生产效率的关键技术。而实现这一技术的核心环节&#xff0c;就是建立相机像素坐标系与机器人物理坐标系之间的精确映射关系——也就是我们常说的九点标…...

青岛做人流术前有什么注意事项

在进行人流手术前&#xff0c;为了确保手术的安全性和有效性&#xff0c;有一些重要的注意事项需要您了解和遵守。以下是一些关键的术前准备事项&#xff0c;帮助您更好地为手术做好准备。1. 选择正规医院选择一家具备合法资质的正规妇产医院至关重要。青岛新阳光妇产医院是经青…...

像素语言·维度裂变器:5分钟零基础部署,开启你的16-bit文本冒险

像素语言维度裂变器&#xff1a;5分钟零基础部署&#xff0c;开启你的16-bit文本冒险 1. 什么是像素语言维度裂变器 像素语言维度裂变器是一款将文本改写与增强功能包装成16-bit像素冒险游戏风格的AI工具。它基于MT5-Zero-Shot-Augment引擎构建&#xff0c;能够将普通文本输入…...

保姆级教学:Sambert多情感语音合成镜像部署与使用全攻略

保姆级教学&#xff1a;Sambert多情感语音合成镜像部署与使用全攻略 1. 准备工作&#xff1a;了解Sambert语音合成镜像 Sambert多情感中文语音合成镜像是一个开箱即用的语音生成解决方案&#xff0c;基于阿里达摩院研发的Sambert-HiFiGAN模型构建。这个镜像已经预先解决了常见…...

GEO 1.0 到 2.0:为什么 90% 的品牌优化是表面功夫

当用户问 “2026 年值得买的家用按摩仪”“适合新手的旗舰手机”“熬夜党必备的膳食营养品” 时&#xff0c;你的品牌&#xff0c;会出现在 AI 的回答里吗&#xff1f;会被放在首推位吗&#xff1f;这两年&#xff0c;生成式 AI 彻底改写了用户的信息获取与消费决策链路。从豆包…...