欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

OpenCV 从零学习 · 第 13 讲:图像金字塔(pyrDown / pyrUp,多尺度处理的基石)

OpenCV 从零学习 · 第 13 讲:图像金字塔

函数:cv2.pyrDown / cv2.pyrUp | 难度:★☆☆☆☆

金字塔就是把图像层层缩小(或放大)形成的一座"塔":底层是清晰原图,越往上越小越糊。它的价值在于多尺度处理——很多算法(模板匹配、特征检测)在"缩小的图"上跑更快、更稳,还能应对目标大小变化。


一、下采样 pyrDown(缩小一半)

dst = cv2.pyrDown(src)

先高斯模糊再隔点采样,输出尺寸约为输入的 1/2(宽高都减半)。是"高斯金字塔"的标准构建方式。

二、上采样 pyrUp(放大一倍)

dst = cv2.pyrUp(src)

尺寸翻倍(宽高各 ×2),但放大的是"模糊版"——pyrUp 并不能把 pyrDown 丢失的细节找回来,只是把图拉大、插值变糊。

场景 A · 多尺度模板匹配(接第 12 讲)
目标大小不固定时,把大图和模板都按金字塔逐层缩小,在每一层做 matchTemplate,再把匹配结果映射回原图尺度。这样无论目标是大是小都能找到——这是工业"找图"应对分辨率差异的核心技巧。
场景 B · 提速大图处理
一张 4000×3000 的图做边缘/特征检测很慢。先 pyrDown 两层变成 1000×750,在缩小图上处理,速度提升 16 倍,多数任务精度够用。
import cv2
img = cv2.imread('big.jpg')
small1 = cv2.pyrDown(img)      # 1/2
small2 = cv2.pyrDown(small1)   # 1/4
big    = cv2.pyrUp(small2)     # 放大回,但比原图糊
⚠ 新手必踩坑
  • pyrUp有损放大:它会变模糊,不是"高清还原"。不要指望 pyrDown 后再 pyrUp 能无损复原。
  • 每层尺寸严格减半,只有偶数尺寸能干净地往下走;奇数宽高会被裁掉一行/列,循环多层后位置会漂移,做精确定位时要记好缩放倍数(2^n)。
  • 金字塔本身不"做事",它是给别的算法当多尺度脚手架用的。

本讲要点

  • pyrDown 缩小一半(先模糊后采样);pyrUp 放大一倍(放大即模糊)。
  • 核心价值是多尺度:应对目标大小变化、加速大图处理。
  • pyrUp 不复原细节;善用 2^n 缩放倍数做坐标回映射。

下一讲:第 14 讲 · 特征点检测与匹配(角点 / ORB / SIFT)——比模板匹配更鲁棒,能在旋转、尺度变化下"认出"同一物体,是图像拼接、物体识别的基础。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功