在计算机视觉领域,图像金字塔和直方图是基础且重要的工具。图像金字塔用于多尺度分析(如图像缩放、特征融合),直方图则用于描述图像像素分布(如亮度调整、对比度增强)。本文将通过Python和OpenCV实现这两部分功能,并结合代码详细讲解原理。
一、图像金字塔:上下采样与高斯/拉普拉斯金字塔
1.1 金字塔基础概念
图像金字塔是一种多分辨率表示方法,通过**下采样(降分辨率)和上采样(升分辨率)**生成不同尺度的图像集合。常见的金字塔有两种:
- 高斯金字塔:通过高斯模糊后下采样生成,用于多尺度表示。
- 拉普拉斯金字塔:通过高斯金字塔相邻层差值生成,用于图像重建(保留细节)。
1.2 下采样(pyrDown)
cv2.pyrDown() 用于对图像进行下采样,生成分辨率减半的图像(宽高各缩小为1/2)。其核心步骤是:
- 对原图进行高斯模糊(核大小为5x5),消除高频细节;
- 将图像尺寸从
(w, h)缩小为(w//2, h//2)(舍入取整)。
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取灰度图像(G0层,原始层)
face = cv2.imread('longpic.png', cv2.IMREAD_GRAYSCALE)
cv2.imshow('Original Face (G0)', face)
cv2.waitKey(0)
# 下采样生成G1层(分辨率减半)
face_down_1 = cv2.pyrDown(face) # 尺寸:(w//2, h//2)
cv2.imshow('Downsampled G1', face_down_1)
cv2.waitKey(0)
# 继续下采样生成G2层(分辨率再减半)
face_down_2 = cv2.pyrDown(face_down_1) # 尺寸:(w//4, h//4)
cv2.imshow('Downsampled G2', face_down_2)
cv2.waitKey(0)
1.3 上采样(pyrUp)
cv2.pyrUp() 用于对图像进行上采样,生成分辨率翻倍的图像(宽高各放大为2倍)。其核心步骤是:
- 将图像尺寸从
(w, h)放大为(w*2, h*2)(新增像素用0填充); - 对放大后的图像进行高斯模糊(核大小为5x5)。
# 上采样生成G1'层(
OpenCV图像处理:金字塔与直方图分析

最低0.47元/天 解锁文章
6024

被折叠的 条评论
为什么被折叠?



