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,使用mybatisplus操作表,使用easyexcel实现表格的导入与导出。 操作步骤 1、导入依赖:(pom.xml) <!-- 查看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)shell模块2)command模块3)script模块4)file模块5)copy模块6)yum模块7)yum-repository模块8)service模块9&#…...
清理Go/Rust编译时产生的缓存
Go Mac 1T的磁盘频频空间高级,发现是/Users/yourname/Library/Caches/go-build 目录占用了大量空间。 此目录保存来自 Go 构建系统的缓存构建工件。 如果目录太大,请运行go clean -cache。 运行go clean -fuzzcache以删除模糊缓存。 当时直接手工清理了…...
【linux】 ls命令
ls 命令是 Linux 和 Unix 系统中用于列出目录内容的命令。它显示指定目录下的文件和子目录列表。如果不指定目录,ls 默认显示当前目录下的内容。 基本用法 ls [选项] [文件或目录...] 无选项:简单地列出当前目录下的文件和目录。文件或目录࿱…...
STM32的寄存器深度解析
目录 一、STM32 寄存器概述 二、寄存器的定义与作用 三、寄存器分类 1.内核寄存器 2.外设寄存器 四、重要寄存器详解 1.GPIO 相关寄存器 2.定时器相关寄存器 3.中断相关寄存器 4.RCC 相关寄存器 五、寄存器操作方法 1.直接操作寄存器 2.使用库函数操作寄存器 六…...
win11 运行vmware workstation 虚拟机很卡,解决办法
本身win11的hyper V和vmare workstation有兼容性问题,正常来说,不能二者共存 需要在win11上流畅运行vmare虚拟机,需要在win11用管理员权限打开power shell 然后在里面运行命令: bcdedit /set hypervisorlaunchtype off powercfg /powerthr…...
C语言 | Leetcode C语言题解之第404题左叶子之和
题目: 题解: 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
点击下载:jeesite5.8.1-db2-sql.rar 提取码: yqev...
微信小程序页面制作——婚礼邀请函(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
股票量化接口api,国内股票期权怎么交易
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
Spring解决循环依赖的原理
通过将自己注入自己,使用代理对象调用add方法解决了事务失效问题,但是这样不会产生循环依赖吗? 在OrdersCreateServiceImpl 中注入的是OrdersCreateServiceImpl 的代理对象,并不是OrdersCreateServiceImpl 本身实例,构…...
Openal o1初探
9 月 13 日,OpenAI 正式公开一系列全新 AI 大模型,传说的“草莓”终于上线,但是正式命名不叫“草莓”,而是o1。 一、为什么叫o1 为什么取名叫o1,OpenAI是这么说的: For complex reasoning tasks this is…...
基于python+django+vue的学生成绩管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…...
mimd 公平收敛在相图中的细节
aimd 的收敛已经说腻了,我曾经画了好几次相图。有朋友希望我能画一个 mimd 相图,我就再画一个稍微详细的。 下面相图收敛到稳定点的前提异步 mimd: 之所以要异步,举个例子,在执行 gx 时,要确保 y 已经执…...
学术研究助手:OpenClaw+Gemma-3-12b-it自动化文献综述生成
学术研究助手:OpenClawGemma-3-12b-it自动化文献综述生成 1. 为什么需要自动化文献综述工具 作为一名经常需要写论文的研究生,我深刻体会到文献综述是整个研究过程中最耗时耗力的环节之一。每次开题或写新论文时,都需要花费数天甚至数周时间…...
开源协议解析与合规实践指南
1. 开源协议的本质与重要性作为一名在软件行业摸爬滚打十多年的开发者,我见过太多因为忽视开源协议而引发的纠纷案例。记得2018年某创业团队就因误用GPL协议代码导致整个产品被迫开源,最终项目流产。开源协议绝非一纸空文,它直接关系到开发者…...
百考通:AI精准驱动数据分析,让数据价值高效落地
在数字化浪潮席卷各行各业的今天,数据已成为核心生产要素,但如何从海量数据中挖掘价值、辅助决策,始终是企业与个人面临的核心难题。传统数据分析流程繁琐、技术门槛高、周期漫长,让许多非专业人士望而却步。百考通(ht…...
手把手教你复现phpMyAdmin 4.8.1本地文件包含漏洞(附详细payload)
深入解析phpMyAdmin 4.8.1文件包含漏洞的实战利用与防御 在Web应用安全领域,文件包含漏洞一直是攻击者青睐的攻击向量之一。phpMyAdmin作为全球最流行的MySQL数据库管理工具,其安全性直接影响数百万网站的数据安全。2018年曝光的phpMyAdmin 4.8.1版本本地…...
百考通:AI精准赋能任务书生成,让科研与项目启动更高效
在学术研究、课程设计与项目开发的起步阶段,一份规范、清晰的任务书是指引方向的核心纲领。但从选题构思到内容撰写,往往让研究者与学生陷入困境:选题迷茫、逻辑混乱、要求表述模糊,严重拖慢项目推进节奏。百考通(http…...
OpenClaw怎么部署?2026年1分钟部署OpenClaw、配置百炼APIKey、集成Skill保姆级图文教程
OpenClaw怎么部署?2026年1分钟部署OpenClaw、配置百炼APIKey、集成Skill保姆级图文教程。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉ÿ…...
收藏备用|小白/程序员必看!Agentic AI时代,手把手教你构建高效可靠AI Agent
在Agentic AI飞速迭代的当下,AI Agent已成为大模型落地的核心载体,不少小白程序员和入行开发者都想抓住这一风口,但常常陷入“不知从何下手”的困境。本文将从实操角度,详细拆解构建可靠高效AI Agent应用的全流程,核心…...
5分钟搞定OpenClaw+Qwen3-14b_int4_awq:星图GPU镜像一键体验
5分钟搞定OpenClawQwen3-14b_int4_awq:星图GPU镜像一键体验 1. 为什么选择星图平台体验OpenClaw 上周我在本地尝试部署OpenClaw时,被各种环境依赖折腾得够呛。从Node.js版本冲突到Python包兼容性问题,光是解决报错就花了大半天时间。正当我…...
单细胞测序技术原理与应用进展
一、技术发展背景与核心价值单细胞测序技术是近年来生命科学领域最重要的突破性方法之一。与传统群体细胞测序不同,该技术能够在单个细胞分辨率上解析基因组、转录组及表观遗传组的异质性。这种精细化的分析能力,使得研究者得以揭示细胞发育过程中的动态…...
Flowable6.4实战:如何优雅处理并行网关驳回与多实例加减签(附完整代码)
Flowable 6.4实战:并行网关驳回与多实例加减签的工程化解决方案 在企业级流程审批系统中,并行任务处理和多实例任务动态调整是高频需求场景。当某部门采购申请需要同时经过财务审核、法务审核和业务负责人审核时,传统串行审批模式会导致效率…...
