Opencv 学习笔记:图像金字塔实现上采样(pyrUp)与降采样(pyrDown)

图像的上采样(放大)和降采样(缩小)是图像处理中调整尺寸的基础操作,OpenCV 通过图像金字塔相关 API(pyrUp/pyrDown)可快速实现,本文用极简代码演示核心用法,新手秒会。

核心代码实现

python 复制代码
import cv2 as cv
import numpy as np

# 1. 读取图像并校验
src = cv.imread(".\image\6.bmp")
if src is None:
    print('could not load image')
    exit()
cv.imshow("src", src)  # 显示原图

# 2. 上采样(pyrUp):图像尺寸翻倍(宽/高各×2)
res = cv.pyrUp(src)
# 3. 降采样(pyrDown):图像尺寸减半(宽/高各÷2)
resd = cv.pyrDown(src)

# 4. 显示采样结果
cv.imshow('outimage1(降采样)', resd)
cv.imshow('outimage(上采样)', res)

cv.waitKeyEx(0)  # 支持特殊按键响应,等价于waitKey(0)
cv.destroyAllWindows()

关键知识点解析

1. 采样核心逻辑

操作类型 核心 API 效果 适用场景
上采样(放大) cv.pyrUp() 图像宽度、高度均翻倍,像素插值填充 细节放大、小目标可视化
降采样(缩小) cv.pyrDown() 图像宽度、高度均减半,高斯滤波后下采样 降低计算量、去除高频噪点

2. 重要注意事项

  • 不可逆性pyrDown不是pyrUp的逆操作!降采样会丢失图像高频细节,即使对降采样后的图像执行上采样,也无法恢复原始细节;
  • 尺寸要求:图像尺寸最好为 2 的幂次(如 256×256、512×512),否则多次采样后可能出现尺寸异常(如非整数尺寸);
  • 滤波特性pyrDown执行时会先对图像做高斯滤波,再剔除偶数行 / 列,因此降采样同时具备轻微去噪效果。

3. 扩展技巧

  • 精准控尺寸:若需指定具体尺寸,可改用cv.resize()(如cv.resize(src, (800, 600))),pyrUp/pyrDown 仅支持倍数缩放;
  • 多次采样:可嵌套调用(如cv.pyrUp(cv.pyrUp(src)))实现 4 倍放大,需注意多次放大后图像会模糊;
  • 对比显示:采样后可通过cv.hconcat/cv.vconcat将原图与采样图拼接,直观对比效果。

总结

  1. 上采样(pyrUp)是图像尺寸翻倍放大,降采样(pyrDown)是尺寸减半缩小,均基于高斯金字塔实现;
  2. 降采样不可逆,会丢失细节,兼具轻微去噪效果;
  3. 倍数缩放用 pyrUp/pyrDown,精准尺寸调整用 cv.resize ()。
相关推荐
是上好佳佳佳呀9 分钟前
【深度学习|DAY03】神经网络深度学习笔记(上):框架总览、参数初始化与激活函数
笔记·深度学习·神经网络
小弥儿17 分钟前
Firecrawl:把整个网页变成 AI 可查询的数据库
数据库·人工智能·学习
woshihuanglaoshi18 分钟前
鸿蒙老旧项目升级改造高级:API废弃迁移/ArkTS语法升级/架构重构策略/增量迁移/风险管控方案
学习·华为·重构·架构·harmonyos·鸿蒙
zhangrelay20 分钟前
ROS 2 Lyrical 第2章 ROS 2系统架构与核心概念
linux·笔记·学习·ubuntu·ros2
云空27 分钟前
《软件专业完整学习路线图(本科4年+自学通用版,2026就业向)》
人工智能·科技·学习·计算机·编程·软件
油丶酸萝卜别吃9 小时前
前端转全栈学习路线
前端·学习
GlueNa2SiO312 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
牧羊人.33313 小时前
计算机视觉基础|第2章 OpenCV图像基础操作(读写、窗口、像素操作)
人工智能·opencv·计算机视觉
weixin_4316004413 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
带娃的IT创业者13 小时前
DeepTutor:当 Agent-Native 架构撞上个性化学习的临界点
学习·架构·ai agent·大模型应用·个性化学习·教育技术·agent-native架构