OpenCV(十七):拉普拉斯图像金字塔

news/2024/11/23 3:11:18/

1.拉普拉斯图像金字塔原理

       拉普拉斯图像金字塔是一种多尺度图像表示方法,通过对高斯金字塔进行差分运算得到。它能够提供图像在不同尺度上的细节信息,常用于图像处理任务如图像增强、边缘检测等。

下面是拉普拉斯图像金字塔的原理和步骤:

  1. 构建高斯金字塔:首先,使用高斯模糊和下采样操作构建高斯金字塔。高斯金字塔是由一系列不同分辨率的图像层级组成,每个层级都是通过对上一层级的图像进行高斯模糊和下采样得到的。

  2. 构建拉普拉斯金字塔:从高斯金字塔的顶层开始,通过将下一层级的图像上采样并与当前层级的图像进行减法运算来构建拉普拉斯金字塔。

算法如下:

L_i = G_i - Resize(Upsample(G_i+1))

其中,L_i是拉普拉斯金字塔的第i层,G_i是高斯金字塔的第i层,Upsample()是上采样函数,使用插值技术将图像的尺寸放大为原来的两倍。

  1. 重复步骤2:对于拉普拉斯金字塔的每一层,继续进行上采样和差分运算,得到更精细的细节信息。最底层的金字塔层级是原始图像的低频信息。

最终,拉普拉斯金字塔包含了原始图像在不同尺度上的细节信息,较高层级的图像包含了较高频的细节,而较低层级的图像包含了较低频的细节。从金字塔的最底层开始,通过将每个层级的图像与其上一层级的上采样图像相加,可以还原原始图像。

2.拉普拉斯图像金字塔实现

在OpenCV中,可以使用cv::pyrDown()和cv::pyrUp()函数构建高斯金字塔,并通过差分运算得到拉普拉斯金字塔。拉普拉斯金字塔在多尺度图像处理中具有很大的应用,如图像融合、纹理合成、压缩等。

  1. cv::pyrDown()函数:

    • 函数原型:void pyrDown(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT)

    • 参数说明:

      • src:输入图像,可以是单通道或多通道的图像,数据类型为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。

      • dst:输出图像,下采样后的图像。

      • dstsize:可选参数,输出图像的尺寸,默认情况下,输出图像的尺寸为输入图像尺寸的一半,也可以手动指定输出图像的尺寸。

      • borderType:可选参数,用于边缘填充的类型,默认为 BORDER_DEFAULT。

  2. cv::pyrUp()函数:

    • 函数原型:void pyrUp(InputArray src, OutputArray dst, const Size& dstsize = Size(), int borderType = BORDER_DEFAULT)

    • 参数说明:

      • src:输入图像,可以是单通道或多通道的图像,数据类型为 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F。

      • dst:输出图像,上采样后的图像。

      • dstsize:可选参数,输出图像的尺寸,默认情况下,输出图像的尺寸为输入图像尺寸的两倍,也可以手动指定输出图像的尺寸。

      • borderType:可选参数,用于边缘填充的类型,默认为 BORDER_DEFAULT。

示例:

    // 构建高斯图像金字塔std::vector<cv::Mat> Guass;int level=3;Guass.push_back(image);for(int i=0;i<level;i++){Mat guass;cv::pyrDown(Guass[i], guass);Guass.push_back(guass);}//构建拉普拉斯金字塔vector<Mat> Lap;for(int i=Guass.size()-1;i>0;i--){Mat lap,upGuass;if(i==Guass.size()-1){Mat down,up;pyrDown(Guass[i],down);pyrUp(down,up);lap=Guass[i]-up;Lap.push_back(lap);}pyrUp(Guass[i], upGuass);lap = Guass[i-1] - upGuass;Lap.push_back(lap);}


http://www.ppmy.cn/news/1083858.html

相关文章

软件产品确认测试鉴定测试

软件产品确认测试 确认测试也称鉴定测试&#xff0c;即验证软件的功能、性能及其它特性是否与用户的要求一致。软件确认测试是在模拟的环境下&#xff0c;验证软件是否满足需求规格说明书列出的需求。为此&#xff0c;需要首先制定测试计划&#xff0c;规定要做测试的种类&…

Lesson4-2:OpenCV图像特征提取与描述---Harris和Shi-Tomas算法

学习目标 理解Harris和Shi-Tomasi算法的原理能够利用Harris和Shi-Tomasi进行角点检测 1 Harris角点检测 1.1 原理 H a r r i s Harris Harris角点检测的思想是通过图像的局部的小窗口观察图像&#xff0c;角点的特征是窗口沿任意方向移动都会导致图像灰度的明显变化&#xff…

MIME类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)MultipartFile 多媒体文件上传

目录 MIME媒体类型介绍MediaTypes 有哪些MultipartFile 类介绍MultipartFile 类 接收的文件是二进制嘛代码举例 上传的文件 实现接口 MultipartFile 类有哪些最终调用接口的方法时&#xff0c;会有哪个类实现 如何决定哪个类去实现呢 Spring 会根据运行环境自动选择合适的实现类…

关于trackformer中的super().forward()

代码&#xff1a; import torch import torch.nn as nnclass DETRTrackingBase(nn.Module):def __init__(self):print("build_DETRTrackingBase")def forward(self, x):print("DETRTrackingBase_forward") print(x)x super().forward(x)print(&q…

使用 htmx 构建交互式 Web 应用

学习目标&#xff1a;了解htmx的基本概念、特点和用法&#xff0c;并能够运用htmx来创建交互式的Web应用程序。 学习内容&#xff1a; 1. 什么是htmx&#xff1f; - htmx是一种用于构建交互式Web应用程序的JavaScript库。 - 它通过将HTML扩展为一种声明性的交互式语言&a…

精心整理了优秀的GitHub开源项目,包含前端、后端、AI人工智能、游戏、黑客工具、网络工具、AI医疗等等,空闲的时候方便看看提高自己的视野

精心整理了优秀的GitHub开源项目&#xff0c;包含前端、后端、AI人工智能、游戏、黑客工具、网络工具、AI医疗等等&#xff0c;空闲的时候方便看看提高自己的视野。 刚开源就变成新星的 igl&#xff0c;不仅获得了 2k star&#xff0c;也能提高你开发游戏的效率&#xff0c;摆…

【包过滤防火墙——firewalld动态防火墙】的简单使用

文章目录 firewald与iptables区别firewalld九个区域firewalld配置方法firewalld参数和命令firewalld两种模式firewalld使用实验 firewalld不要与iptables混用 firewald与iptables区别 iptables 主要是基于接口&#xff0c;来设置规则&#xff0c;从而判断网络的安全性。firewa…

Spring 中存取 Bean 的相关注解

目录 一、五大类注解 1、五大类注解存储Bean对象 1.1Controller(控制器储存) 1.2Service(服务存储) 1.3Repository(仓库存储) 1.4Component(组件存储) 1.5Configuration(配置存储) 2、五大类注解小结 2.1为什么要这么多类注解 2.2 五大类注解之间的关系 二、方法注解 1.方法注…