Python - opencv (二) 图像金字塔
图像金字塔的含义:
图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。
一. 高斯金字塔
卷积核:
向下采样(缩小):
1. 将Gi与卷积核相乘
2. 去除所有偶数行和列
向上采样(放大):
1. 将图像每个方向扩大为原来的2倍,新增的行和列以0填充
2. 使用Gauss内核(乘以4)与图像卷积,获得近似值
代码:
up = cv2.pyrUp(img) # 上采样 down = cv2.pyrDown(img) #下采样
二. 拉普拉斯金字塔
公式:
简述为4步:
1.低通滤波
2.下采样缩小
3.上采样放大
4.图像相减
拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的。保留的是残差!为图像还原做准备!
示例将一张图片分别做2层拉普拉斯金字塔,代码:
1 import cv2 2 import numpy as np 3 4 def laplacian_l(img): 5 down = cv2.pyrDown(img) 6 down_up = cv2.pyrUp(down) 7 return img - down_up 8 9 if __name__ == '__main__': 10 img = cv2.imread('../pics/1.jpg', cv2.IMREAD_GRAYSCALE) 11 12 l1 = laplacian_l(img) 13 l2 = laplacian_l(l1) 14 15 res = np.hstack((img, l1, l2)) 16 cv2.imshow('img', res) 17 cv2.waitKey()
看效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具