10.图像金字塔

图像金字塔:主要是指一种算法思想

一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们雪要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如险,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨幸的原始图像。我们把这组图像叫做图像金字塔〈简单来说就是同一图像的不同分辨率的子图集合》。如果我们把最大的图像放在底部,最小的放在项部,看起来像一座金字塔,故而得名图像金字塔。

不同分辨率的图像,使用图像金字塔,可以找到不同大小的人脸
在这里插入图片描述
实现金字塔的两种方式

高斯金字塔

高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。项部图像中的每个像素值等于下一层图像中5个像素的高斯加权平均值。这样操作一次一个MsN的图像就变成了一个M2*N2的图像。所以这幅图像的面积就变为原来图像面积的四分之一。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。我们可以使用函数cv2.pyrDown()(图像分辨率降低)和 cv2.pyrUp() (图像分辨率提高)构建图像金字塔。

拉普拉斯金字塔

可以由高斯金字塔得到 拉普拉斯金字塔可以由高斯金字塔计算得来,公式如下:
在这里插入图片描述

拉普拉金字塔的图像看起来就像边界图,其中很多像素都是0。

from imutils import *
image = imread('image.jpg')
show(image)
image.shape

请添加图片描述

(424, 600, 3)
# 高斯金字塔的使用
for i in range(4):
    image = cv2.pyrDown(image)  #降低分辨率
    print(image.shape)
    show(image)
(212, 300, 3)

请添加图片描述

(106, 150, 3)

请添加图片描述

(53, 75, 3)

请添加图片描述

(27, 38, 3)

请添加图片描述

# 高斯金字塔 提升分辨率
for i in range(4):
    image = cv2.pyrUp(image)
    print(image.shape)
    show(image)
(54, 76, 3)

请添加图片描述

(108, 152, 3)

请添加图片描述

(216, 304, 3)

请添加图片描述

(432, 608, 3)

请添加图片描述

# 拉普拉斯金字塔
image = imread('image.jpg')
down_image1 = cv2.pyrDown(image)
down_image2 = cv2.pyrDown(down_image1)
up_image = cv2.pyrUp(down_image2)
laplacian = down_image1-up_image
show(laplacian)

请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值