赞
踩
目录
拉普拉斯金字塔是一种图像金字塔,是一系列不同分辨率的图像堆叠。它的名称来源于数学家皮埃尔·西蒙·拉普拉斯,他对信号处理和图像分析做出了重要贡献。
拉普拉斯金字塔是图像金字塔的一种特殊类型,用于捕捉图像中的细节和边缘信息。当我们对一张图片进行下采样,然后再上采样,是无法得到原始图像的,那是因为图像中的细节和边缘信息丢失,而这些丢失的信息就构成了拉普拉斯金字塔。而我们可以在上采样时加入拉普拉斯金字塔就可得到有较高分辨率的原始图像。
关于图像金字塔,详情可参考我的另一篇博客:最详细的图像金字塔原理及下采样的实现
拉普拉斯金字塔的定义形式为:
Li=Gi - pyrUp(pyrDown(Gi))
其中:
Li:表示拉普拉斯金字塔中的第 i 层
Gi:表示高斯金字塔中的第 i 层
Gi+1:表示高斯金字塔中的第 i+1 层
下图展示了高斯金字塔与拉普拉斯金字塔的关系:
由此可知:拉普拉斯金字塔第i层=高斯金字塔第i层 — 高斯金字塔第i+1层的上采样结果
拉普拉斯金字塔构建:一旦高斯金字塔构建完成,就可以生成拉普拉斯金字塔。每一级的拉普拉斯图像都是对应高斯金字塔级别的原始图像与上一级高斯金字塔图像的差异。
构建后的拉普拉斯金字塔具有以下特点:
- # 导入OpenCV库
- import cv2
-
- # 读取名为'zl.png'的灰度图像
- zl = cv2.imread('zl.png', 0)
-
- # 调整图像尺寸为宽300像素,高400像素
- zl = cv2.resize(zl, (300, 400))
-
- # 显示原始图像
- cv2.imshow('yuantu', zl)
- cv2.waitKey(0)
-
- # 对图像进行下采样操作
- zl_down1 = cv2.pyrDown(zl)
- # 显示下采样后的图片
- cv2.imshow('down1', zl_down1)
- cv2.waitKey(0)
-
- # 对下采样后的图像进行上采样操作
- zl_down1_up1 = cv2.pyrUp(zl_down1)
- # 显示上采样后的图片
- cv2.imshow('down1_up1', zl_down1_up1)
- cv2.waitKey(0)
-
- # 计算原始图像与上采样后图像的差异,用于构建Laplacian金字塔的一部分
- L0 = zl - zl_down1_up1
-
- # 显示L0图像
- cv2.imshow('L0', L0)
- cv2.waitKey(0)
-
- # 重建原始图像,将上采样后的图像和L0相加
- zl_fuyuan = zl_down1_up1 + L0
-
- # 显示重建后的图像
- cv2.imshow('fuyuan', zl_fuyuan)
- cv2.waitKey(0)
1、由下图可印证:当我们对一张图片进行下采样,然后再上采样,是无法得到原始图像的,那是因为图像中的细节和边缘信息丢失。
2、
3、要重建原始图像,就将上采样后的图像和L0相加:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。