用于图像处理的高斯滤波器 (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 拉吉·利尼 |中。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某XX自考小程序的AES加密分析

前言 主要是报了自考在这个小程序上面做题,就研究了一下这个接口本文仅供学习交流使用,请勿随意传播。如有侵犯你的权益及时联系我删除。 一、抓包分析打开小程序,打开devtools 工具,这里就不啰嗦,直接上过程。 点击…

深入浅出理解ResNet网络模型+PyTorch实现

温故而知新,可以为师矣! 一、参考资料 论文:Identity Mappings in Deep Residual Networks 论文:Deep Residual Learning for Image Recognition ResNet详解PyTorch实现 PyTorch官方实现ResNet 【pytorch】ResNet18、ResNet20、…

LabVIEW示波器连续触发编程

LabVIEW示波器连续触发编程 niScopeEX Fetch Forever范例利用了如何设置硬件和驱动的优点来进行连续采集。 当NI-SCOPE设备被设置为采集预触发扫描,设备上的板载内存被用作一个环形缓冲。这样,无论触发何时到来,设备都可以追踪和检索所有要求…

使用 HTTP Client 轻松进行 API 测试

在开发过程中,我们经常需要测试 API 接口以确保其正常工作。JetBrains 的集成开发环境(IDE)如 CLion、IntelliJ IDEA、PyCharm 等,默认内置了 HTTP Client 插件,可以方便地进行API测试。本文将介绍如何使用HTTP Client…

共话医疗数据安全,美创科技@2023南湖HIT论坛,11月11日见

11月11日浙江嘉兴 2023南湖HIT论坛 如约而来 深入数据驱动运营管理、运营数据中心建设、数据治理和数据安全、数据资产“入表”等热点、前沿话题 医疗数据安全、数字化转型深耕者—— 美创科技再次深入参与 全新发布:医疗数据安全白皮书 深度探讨:数字…

提升中小企业效率的不可或缺的企业云盘网盘

相比之大型企业,中小型企业在挑选企业云盘工具更注重灵活性和成本。那么市面上有哪些企业云盘产品更适合中小企业呢? 说起中小企业不能错过的企业云盘网盘,Zoho Workdrive企业云盘绝对榜上有名! Zoho Workdrive企业云盘为用户提…

轻松按需缩放图片像素——批量处理图片,满足不同需求!

在图片使用过程中,我们经常需要按照不同的要求调整图片的像素大小。如果一张一张地手动调整,不仅耗时而且容易出错。这款软件可以帮助您轻松实现批量处理图片,按需缩放图片像素,让您的图片管理更加高效、便捷! 第一步…

反转链表 --- 递归回溯算法练习三

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路: 1. 挖掘子问题: 3. 编写代码 3.1. step 1: 3.2. step 2: 3.3. step 3: 3.4. 递归代码: 1. 分析题意 力扣原题链接如下: 206. 反转链…

ChatGPT 如何改变科研之路

《Nature》全球博士后调查[1]中约有三分之一的受访者正在使用人工智能聊天机器人来帮助完善文本、生成或编辑代码、整理其领域的文献等等。 来自巴西的 Rafael Bretas 在日本生活了十多年,日语说得很好。书面日语的各个方面,例如严格的礼貌等级制度&…

4面百度软件测试工程师的面试经验总结

没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力幸运,但如果你不够幸运,那就只能拉高努力的占比。 2023年7月,我有幸成为了百度的一名测试工程师,从外包辞职了历经100…

多状态Dp问题——买卖股票的最佳时机含冷冻期

目录 一,题目 二,题目接口 三,解题思路及其代码 一,题目 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成…

自媒体项目详述

总体框架 本项目主要着手于获取最新最热新闻资讯,以微服务构架为技术基础搭建校内仅供学生教师使用的校园新媒体app。以文章为主线的核心业务主要分为如下子模块。自媒体模块实现用户创建功能、文章发布功能、素材管理功能。app端用户模块实现文章搜索、文章点赞、…

electron 内部api capturePage实现webview截图

官方文档 .capturePage([rect]) rect Rectangle (可选) - 要捕获的页面区域。 返回 Promise - 完成后返回一个NativeImage 在 rect内捕获页面的快照。 省略 rect 将捕获整个可见页面。 async function cap(){ let image await webviewRef.value.capturePage() console.log(im…

Android修行手册 - POI操作Excel常用样式(字体,背景,颜色,Style)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

Java学习 9.Java-数组 讲解及习题

一、数组的定义与使用 1.数组的基本概念 1.1 为什么要使用数组 数组是最简单的一种数据结构 组织一组相同类型数据的集合 数据结构本身是来描述和组织数据的 数据加结构 1.2.1 数组的创建 代码实现 new int 可省略; char[] chars{a,b,c};//定义一个整形类型数…

VS c++多文件编译

前言:记录下我这个菜鸡学习的过程,如有错误恳请指出,不胜感激! 1.简单多文件编译调试 文件目录: 编译: -g选项是告诉编译器生成调试信息,这样可以在程序崩溃或出现错误时更容易地进行调试。这…

MCSM面板搭建教程和我的世界Paper服务器开服教程

雨云游戏云VPS服务器用Linux搭建MCSM面板和Minecraft Paper1.20.2服务器教程。 本教程演示安装的MC服是Paper 1.20.2版,其他版本也可以参考本教程,差别不大。 本教程使用Docker来运行mc服,可以方便切换不同Java版本,方便安装多个…

STM32——NVIC中断优先级管理分析

文章目录 前言一、中断如何响应?NVIC如何分配优先级?二、NVIC中断优先级管理详解三、问题汇总 前言 个人认为本篇文章是我作总结的最好的一篇,用自己的话总结出来清晰易懂,给小白看也能一眼明了,这就是写博客的意义吧…

思维模型 多看效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。越熟悉,越喜欢。 1 多看效应的应用 1.1 多看效应在广告和营销领域的应用 1 可口可乐之歌 可口可乐公司在 20 世纪 60 年代推出了“可口可乐之歌”广告,这个广告通…

PyTorch技术和深度学习——三、深度学习快速入门

文章目录 1.线性回归1)介绍2)加载自由泳冠军数据集3)从0开始实现线性回归模型4)使用自动求导训练线性回归模型5)使用优化器训练线性回归模型 2.使用torch.nn模块构建线性回归模型1)使用torch.nn.Linear训练…