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

OpenCV-上下采样

文章目录

  • 一,简介
  • 二、下采样(Downsampling)
  • 三、上采样(Upsampling)
  • 四、代码实现
    • 1.图像读取
    • 2.下采样
    • 3.上采样
    • 4.拉普拉斯金字塔
  • 五、应用

一,简介

  • 高斯金字塔是图像处理、计算机视觉和信号处理中常用的一项技术,其核心在于通过高斯平滑和亚采样(即下采样)来构建图像的多尺度表示。在高斯金字塔中,上下采样是构建金字塔层级的关键步骤。

  • 拉普拉斯金字塔(Laplacian Pyramid)是高斯金字塔的一种扩展,用于捕捉和重建图像在不同尺度上的细节信息。在高斯金字塔中,每一层图像都是通过对其上一层图像进行高斯模糊和下采样得到的,这个过程会导致图像细节的损失。拉普拉斯金字塔则通过记录这些在高斯金字塔构建过程中丢失的细节来工作。

  • 拉普拉斯金字塔的每一层都是高斯金字塔中当前层与其上采样并高斯模糊后的上一层图像之间的差异。这个差异图像包含了当前层特有的细节信息,即那些在上采样过程中无法从上一层恢复的信息。

二、下采样(Downsampling)

下采样是高斯金字塔构建过程中的一个重要环节,其目的是减小图像的分辨率,从而生成金字塔的下一层图像。下采样的具体步骤通常包括:

  • 高斯模糊:首先,对原始图像或当前层的图像进行高斯模糊处理。高斯模糊是一种减少图像噪声和细节的方法,它通过使用高斯函数作为权重函数来对图像进行平滑处理。
  • 下采样:在高斯模糊之后,进行亚采样操作。亚采样通常是通过删除图像的偶数行和偶数列(或其他规则的间隔采样)来实现的,这样处理后的图像面积将是原图的四分之一。亚采样操作进一步减小了图像的分辨率,为构建金字塔的下一层提供了基础。

通过不断重复上述步骤,可以构建出高斯金字塔的多个层级,每个层级的图像分辨率逐渐降低,但保留了图像的主要结构和特征。

三、上采样(Upsampling)

与下采样相反,上采样是增加图像分辨率的过程,通常用于从金字塔的较低层级重建较高层级的图像。然而,在高斯金字塔中,上采样并不是直接用于构建金字塔的,而是与其他技术(如拉普拉斯金字塔)结合使用,以实现图像的放大和细节恢复。

在高斯金字塔的上下文中,上采样通常涉及以下步骤:

  • 插值:首先,将图像的每个方向(通常是行和列)扩大为原来的两倍。新增的行和列通常使用零值或其他插值方法(如双线性插值、双三次插值等)进行填充。
  • 卷积:然后,使用与下采样时相同或相似的高斯核对放大后的图像进行卷积处理,以平滑图像并减少插值产生的锯齿效应。

四、代码实现

1.图像读取

jijia_yuan = cv2.imread('3.png', cv2.IMREAD_GRAYSCALE)jijia = cv2.resize(jijia_yuan, (720, 408))
cv2.imshow('jijia', jijia)
cv2.waitKey(0)

图像读取与调整大小:
使用cv2.imread()读取图像,并指定cv2.IMREAD_GRAYSCALE以灰度模式读取。
使用cv2.resize()将图像调整为720x408的大小,以适应显示或后续处理的需要。

2.下采样

jijia_down_1 = cv2.pyrDown(jijia)  # 下采样
cv2.imshow('down1', jijia_down_1)
cv2.waitKey(0)
jijia_down_2 = cv2.pyrDown(jijia_down_1)
cv2.imshow('down2', jijia_down_2)
cv2.waitKey(0)

高斯金字塔的下采样:
cv2.pyrDown()函数用于构建高斯金字塔的下采样层级。它首先用高斯核对图像进行卷积,然后删除图像的偶数行和列,从而减小图像尺寸(通常是宽和高都减半)。
您对jijia进行了两次下采样,生成了jijia_down_1和jijia_down_2。

3.上采样

jijia_up_1 = cv2.pyrUp(jijia)
cv2.imshow('up1', jijia_up_1)
cv2.waitKey(0)
jijia_up_2 = cv2.pyrUp(jijia_up_1)
cv2.imshow('up2', jijia_up_2)
cv2.waitKey(0)

高斯金字塔的上采样:
cv2.pyrUp()函数用于对图像进行上采样,通常是高斯金字塔下采样操作的逆过程。它通过插入零值(通常称为零填充)并在新的行和列之间应用插值来增加图像的尺寸(通常是宽和高都加倍)。
但请注意,cv2.pyrUp()并不是cv2.pyrDown()的完全逆操作,因为在下采样过程中丢失的信息无法恢复。因此,直接对下采样后的图像进行上采样会导致图像变得模糊。

4.拉普拉斯金字塔

# 对下采样后图像进行上采样,图像变模糊,无法复原
jijia_down_1_up = cv2.pyrUp(jijia_down_1)
jijia_down_2_up = cv2.pyrUp(jijia_down_2)cv2.imshow('down_up1', jijia_down_1_up)
cv2.imshow('down_up2', jijia_down_2_up)
cv2.waitKey(0)
# 拉普拉斯金字塔
l0 = jijia - jijia_down_1_up
l1 = jijia_down_1 - jijia_down_2_upfuyuan = jijia_down_1_up + l0
cv2.imshow('l0', l0)
cv2.imshow('l1', l1)
cv2.imshow('fuyuan', fuyuan)
cv2.waitKey(0)
cv2.destroyAllWindows()

拉普拉斯金字塔的尝试:
拉普拉斯金字塔用于捕捉高斯金字塔中相邻层级之间的差异,即细节损失。
计算l0和l1,它们分别是jijia与jijia_down_1_up、jijia_down_1与jijia_down_2_up之间的差异。然而,由于jijia_down_1_up和jijia_down_2_up是上采样后的图像,它们无法完全复原下采样前的图像细节,因此l0和l1包含了这种细节损失的表示。

五、应用

上下采样在图像处理中有多种应用,包括图像缩放、图像金字塔构建、图像压缩等。图像金字塔是一种多分辨率的图像表示,其中图像被逐步下采样以形成不同尺度的表示。图像金字塔在图像融合、图像匹配、图像分割等任务中非常有用。

在图像压缩中,下采样可以减少图像的冗余信息,而上采样则可以在解压缩时恢复图像到原始尺寸(尽管细节可能有所损失)。然而,现代的图像压缩算法通常使用更复杂的编码和解码技术来最小化这种损失。

相关文章:

OpenCV-上下采样

文章目录 一,简介二、下采样(Downsampling)三、上采样(Upsampling)四、代码实现1.图像读取2.下采样3.上采样4.拉普拉斯金字塔 五、应用 一,简介 高斯金字塔是图像处理、计算机视觉和信号处理中常用的一项技…...

pip install、yum install和conda install三者技术区分

pip install、yum install和conda install在安装系统环境时可以从以下几个方面进行区分选择: 一、适用范围 pip install 主要用于安装 Python 包。适用于 Python 项目中特定的库和工具的安装。如果你的项目是纯 Python 开发,并且需要安装各种 Python 库&…...

【C++指南】作用域限定符 :: 使用详解

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 1. 访问全局变量 2. 命名空间中的成员访问 3. 类的静态成员访问 4. 嵌套命名空间/类中的…...

项目实训:CSS基本布局理解——WEB开发系列38

对CSS学习已经接近尾声,下面你可以对以下两道“小卡拉米”测试进行测试下CSS理解程度。 题 1:基于栅格布局的现代博客首页设计 题目要求: 创建一个博客首页布局,包含一个顶部导航栏、一个主要的内容区域(左侧为博客文…...

springBoot整合easyexcel实现导入、导出功能

本次使用的框架是springboot&#xff0c;使用mybatisplus操作表&#xff0c;使用easyexcel实现表格的导入与导出。 操作步骤 1、导入依赖&#xff1a;&#xff08;pom.xml&#xff09; <!-- 查看excel的maven仓库 https://mvnrepository.com/artifact/com.alibaba/easyex…...

代码随想录训练营第35天|逆序背包

46. 携带研究材料 #include <iostream> #include <vector> using namespace std; int main(){int m,n;cin>>m>>n;vector<int> weights(m,0), values(m,0),dp(n1,0);for(int i0; i<m; i){cin>>weights[i];}for(int i0; i<m; i){cin…...

Centos7环境下Hive的安装

Centos7环境下Hive的安装 前言一、安装Hive1.1 下载并解压1.2 配置环境变量1.3 修改配置1. hive-env.sh2. hive-site.xml 1.4 拷贝数据库驱动1.5 初始化元数据库报错 1.6 安装MySQL1.7 启动 二、HiveServer2/beeline2.1 修改Hadoop配置2.2 修改Hive配置2.2 启动hiveserver22.3 …...

??Ansible——ad-hoc

文章目录 一、ad-hoc介绍二、ad-hoc的使用1、语法2、ad-hoc常用模块1&#xff09;shell模块2&#xff09;command模块3&#xff09;script模块4&#xff09;file模块5&#xff09;copy模块6&#xff09;yum模块7&#xff09;yum-repository模块8&#xff09;service模块9&#…...

清理Go/Rust编译时产生的缓存

Go Mac 1T的磁盘频频空间高级&#xff0c;发现是/Users/yourname/Library/Caches/go-build 目录占用了大量空间。 此目录保存来自 Go 构建系统的缓存构建工件。 如果目录太大&#xff0c;请运行go clean -cache。 运行go clean -fuzzcache以删除模糊缓存。 当时直接手工清理了…...

【linux】 ls命令

ls 命令是 Linux 和 Unix 系统中用于列出目录内容的命令。它显示指定目录下的文件和子目录列表。如果不指定目录&#xff0c;ls 默认显示当前目录下的内容。 基本用法 ls [选项] [文件或目录...] 无选项&#xff1a;简单地列出当前目录下的文件和目录。文件或目录&#xff1…...

STM32的寄存器深度解析

目录 一、STM32 寄存器概述 二、寄存器的定义与作用 三、寄存器分类 1.内核寄存器 2.外设寄存器 四、重要寄存器详解 1.GPIO 相关寄存器 2.定时器相关寄存器 3.中断相关寄存器 4.RCC 相关寄存器 五、寄存器操作方法 1.直接操作寄存器 2.使用库函数操作寄存器 六…...

win11 运行vmware workstation 虚拟机很卡,解决办法

本身win11的hyper V和vmare workstation有兼容性问题&#xff0c;正常来说&#xff0c;不能二者共存 需要在win11上流畅运行vmare虚拟机&#xff0c;需要在win11用管理员权限打开power shell 然后在里面运行命令: bcdedit /set hypervisorlaunchtype off powercfg /powerthr…...

C语言 | Leetcode C语言题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; bool isLeafNode(struct TreeNode *node) {return !node->left && !node->right; }int sumOfLeftLeaves(struct TreeNode *root) {if (!root) {return 0;}struct TreeNode **q malloc(sizeof(struct TreeNode *) * 2001);in…...

jeesite支持db2数据库初始化sql

点击下载&#xff1a;jeesite5.8.1-db2-sql.rar 提取码: yqev...

微信小程序页面制作——婚礼邀请函(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

股票量化接口api,国内股票期权怎么交易

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

Spring解决循环依赖的原理

通过将自己注入自己&#xff0c;使用代理对象调用add方法解决了事务失效问题&#xff0c;但是这样不会产生循环依赖吗&#xff1f; 在OrdersCreateServiceImpl 中注入的是OrdersCreateServiceImpl 的代理对象&#xff0c;并不是OrdersCreateServiceImpl 本身实例&#xff0c;构…...

Openal o1初探

9 月 13 日&#xff0c;OpenAI 正式公开一系列全新 AI 大模型&#xff0c;传说的“草莓”终于上线&#xff0c;但是正式命名不叫“草莓”&#xff0c;而是o1。 一、为什么叫o1 为什么取名叫o1&#xff0c;OpenAI是这么说的&#xff1a; For complex reasoning tasks this is…...

基于python+django+vue的学生成绩管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…...

mimd 公平收敛在相图中的细节

aimd 的收敛已经说腻了&#xff0c;我曾经画了好几次相图。有朋友希望我能画一个 mimd 相图&#xff0c;我就再画一个稍微详细的。 下面相图收敛到稳定点的前提异步 mimd&#xff1a; 之所以要异步&#xff0c;举个例子&#xff0c;在执行 gx 时&#xff0c;要确保 y 已经执…...

UE4动画蓝图实战:用双骨骼IK节点搞定手部穿模,附完整蓝图节点截图

UE4动画蓝图实战&#xff1a;双骨骼IK节点解决手部穿模的完整指南在角色动画开发中&#xff0c;手部穿模问题堪称"视觉杀手"。想象一下精心设计的角色挥拳时&#xff0c;拳头直接穿过墙壁或敌人身体——这种违和感足以毁掉整个场景的沉浸感。本文将彻底解决这个痛点&…...

Obsidian PDF++:如何在Obsidian中实现PDF与笔记的无缝双向链接?

Obsidian PDF&#xff1a;如何在Obsidian中实现PDF与笔记的无缝双向链接&#xff1f; 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_…...

三十岁想从零转行现实吗?带你分辨真正有前景的好工作

![](https://img-blog.csdnimg.cn/direct/b0bfa28b59f9478dae4e6feee6659cce.png)我是29岁那年&#xff0c;完成从转行裸辞副业的职业转型。 如果你把职业生涯看成是从现在开始30岁&#xff0c;到你退休那年&#xff0c;中间这么漫长的30年&#xff0c;那么30岁转行完全来得及…...

基于可解释机器学习的城市人口流动空间降尺度分析实践

1. 项目概述&#xff1a;从宏观到微观&#xff0c;解码城市脉搏在城市的肌理中&#xff0c;人口的流动如同血液的循环&#xff0c;承载着经济活力、社会互动与空间结构的全部信息。无论是城市规划师优化公交线路&#xff0c;还是商业分析师评估店铺选址&#xff0c;亦或是公共卫…...

轻量化部署,异地机房快速接入,多机房管理不用再大动干戈

随着业务拓展&#xff0c;不少企业、单位陆续建起异地分部机房、多区域节点机房。传统资产管理系统部署复杂、对接困难&#xff0c;异地机房接入成本高、周期长&#xff0c;改造繁琐&#xff0c;让很多运维团队望而却步&#xff0c;只能继续沿用分散人工管理&#xff0c;资产混…...

告别SVN恐惧症:美术策划也能轻松上手的Unity PlasticSCM极简入门(附团队项目拉取实战)

告别SVN恐惧症&#xff1a;美术策划也能轻松上手的Unity PlasticSCM极简入门&#xff08;附团队项目拉取实战&#xff09; 在游戏开发团队中&#xff0c;版本控制系统是协作的基石&#xff0c;但传统工具如SVN往往让非技术成员望而生畏。当美术资源频繁更新、策划案不断迭代时&…...

百度深度学习研究院的“叛将“,带着一颗芯片改变了中国智能驾驶——地平线余凯,从ImageNet冠军到征程出货1000万

大家好&#xff0c;我是写代码的篮球球痴。这篇文章跟我自己有点关系——我开的是理想汽车。理想的智驾系统 AD Pro&#xff0c;搭载的就是地平线征程 5 芯片。2026 年 1 月理想 AD Pro 4.0 推送&#xff0c;基于单颗征程 6M 实现了城市 NOA——这是行业里第一个用单颗 128TOPS…...

【Lindy营销自动化工作流终极指南】:20年实战验证的7大反脆弱性设计原则,92%企业漏掉的关键衰减阈值

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Lindy营销自动化工作流的基本范式与历史验证 Lindy效应指出&#xff0c;一个事物的预期剩余寿命与其当前年龄成正比——在营销自动化领域&#xff0c;Lindy范式体现为&#xff1a;经时间检验仍被广泛采…...

告别多头对接!DMXAPI 为企业打造国产大模型 “统一入口”

一、企业 AI 落地的普遍痛点&#xff1a;被接口和平台消耗的成本在企业数字化转型的浪潮中&#xff0c;AI 大模型已经成为标配&#xff0c;但很多企业在落地时&#xff0c;都会陷入一个共同的困境&#xff1a;为了满足不同业务场景的需求&#xff0c;需要同时对接 DeepSeek、阿…...

ubuntu环境下为python项目配置taotoken多模型api密钥与端点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Ubuntu环境下为Python项目配置Taotoken多模型API密钥与端点 1. 准备工作 在Ubuntu系统上为Python项目接入Taotoken&#xff0c;首…...