最详细的图像金字塔原理及下采样的实现 您所在的位置:网站首页 层级制金字塔结构的优缺点是 最详细的图像金字塔原理及下采样的实现

最详细的图像金字塔原理及下采样的实现

#最详细的图像金字塔原理及下采样的实现| 来源: 网络整理| 查看: 265

目录

什么是图像金字塔?

原理

下采样

参数解析

代码实现

优缺点

下采样的优点

下采样的缺点

什么是图像金字塔?

图像金字塔是对图像的一种多尺度的表达,将各个尺度的图像按照分辨率从小到大,依次从上到下排列,就会形成类似金字塔的结构,因此称为图像金字塔。

常见的图像金字塔有两类,一种是高斯金字塔,另一种的拉普拉斯金字塔(Laplacian Pyramid)。一般在图像处理中,高斯代表“模糊”,而拉普拉斯代表“差异”。

高斯金字塔通过不断对图像进行模糊且下采样而获得,下采样的因子一般是2倍。随着分辨率越来越小,图像会越来越模糊,高斯金字塔的最底层就是原始图像本身。

拉普拉斯金字塔在高斯金字塔的基础上,对所有层进行上采样(一般也是2倍上采样),然后使用原高斯金字塔结果减去通分辨率的上采样结果得到每一层差异,即为拉普拉斯金字塔。注意拉普拉斯金字塔中分辨率最小的图片等同于高斯金字塔通分辨率图片,其他层均为“求差”得到的结果。另外还需注意图像先下采样再上采样后不能复原,因为下采样会产生信息缺失,简单上采样无法弥补回这些信息缺失。

原理 图像金字塔和卷积核没关系,它有自己的算法图像金字塔只能按照等整数比例缩放,不想resize那样任意缩放,例如原来图像的像素为(800 * 800),图像金字塔不能缩放到

(500 * 500),但是可以缩放到(400 * 400)或者(200 * 200)

下采样

在图像向下取样中,使用最多的是高斯金字塔。它将对图像Gi进行高斯核卷积,并删除原图中所有的偶数行和列,最终缩小图像。其中,高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(权重不同)经过加权平均后得到。常见的3×3和5×5高斯核如下:

高斯核卷积让临近中心的像素点具有更高的重要度,对周围像素计算加权平均值,如图所示其中心位置权重最高为0.4。

显而易见,原始图像Gi具有M×N个像素,进行向下取样之后,所得到的图像Gi+1具有M/2×N/2个像素,只有原图的四分之一。通过对输入的原始图像不停迭代以上步骤就会得到整个金字塔。注意,由于每次向下取样会删除偶数行和列,所以它会不停地丢失图像的信息。

参数解析

在OpenCV中,向下取样使用的函数为pyrDown(),其原型如下所示:

dst = pyrDown(src[, dst[, dstsize[, borderType]]])

src:这是输入图像,即要构建下一级金字塔的原始图像。

dst(可选参数):这是输出图像,即生成的金字塔的下一级。如果提供了这个参数,函数将结果存储在dst中。如果未提供此参数,函数会创建一个新的图像来存储结果。

dstsize(可选参数):这是一个指定输出图像大小的可选参数,它允许你指定生成的金字塔的下一级图像的尺寸。通常,它是一个包含两个整数的元组 (width, height),用于指定宽度和高度。如果未提供此参数,输出图像的尺寸将是输入图像的尺寸除以2。

borderType(可选参数):这是可选的边界处理类型,用于处理金字塔边缘的情况。它控制了在图像缩小后,如何处理图像边界像素的值。常见的选项包括:

cv2.BORDER_DEFAULT:默认值,通常意味着用零填充。cv2.BORDER_REPLICATE:边缘像素进行复制以填充边界。cv2.BORDER_REFLECT:通过反射边缘像素来填充边界。 代码实现 # 导入OpenCV库 import cv2 # 读取名为 'hui.png' 的灰度图像,并将其存储在变量 'image' 中 image = cv2.imread('hui.png', cv2.IMREAD_GRAYSCALE) # 显示图像窗口,窗口标题为 'people' cv2.imshow('people', image) # 等待用户按下键盘上的任意键,0 表示无限等待 cv2.waitKey(0) # 对图像进行一次降采样(pyrDown),结果存储在 'people_down_1' 中 people_down_1 = cv2.pyrDown(image) # 显示经过降采样后的图像窗口,窗口标题为 'people_down_1' cv2.imshow('people_down_1', people_down_1) # 对 'people_down_1' 进行一次降采样,结果存储在 'people_down_2' 中 people_down_2 = cv2.pyrDown(people_down_1) # 显示经过两次降采样后的图像窗口,窗口标题为 'people_down_2' cv2.imshow('people_down_2', people_down_2) # 等待用户按下键盘上的任意键,0 表示无限等待 cv2.waitKey(0)

运行效果:

优缺点 下采样的优点

降低计算复杂度: 降低图像分辨率可以显著减少图像处理所需的计算量。对于大型图像或视频,这可以提高处理速度,特别是在资源有限的设备上。

去除噪声: 下采样可以有助于去除图像中的一些高频噪声。高频噪声通常表现为细小的颗粒或杂乱像素,降低分辨率可以模糊这些细节,从而减轻噪声的影响。

减小内存消耗: 降低图像分辨率也可以减小内存消耗,这对于嵌入式系统或移动设备上的应用程序特别有用。

加速特征检测: 在某些图像处理任务中,如特征检测,较低分辨率的图像可能会提高算法的性能。由于较低分辨率的图像计算成本更低,因此可以更快速地检测到图像中的关键特征。

下采样的缺点

信息损失: 最明显的缺点是下采样导致信息的丧失。通过减小图像的分辨率,细节会变得模糊,这可能导致在后续处理中丧失了关键信息。

失真: 下采样可能引入图像失真,特别是当原始图像包含高频细节时。这种失真可能会对图像质量产生不利影响,特别是在需要保留精细细节的应用中。

不适用于所有任务: 下采样并不适用于所有图像处理任务。在某些情况下,如图像分割或精确测量,高分辨率图像是必需的。

复杂度选择: 确定何时以及如何下采样是一个复杂的选择。选择不当的下采样因子或方法可能导致性能下降或信息丢失。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有