win10+Python3.7.3+OpenCV3.4.1入门学习(十一 图像金字塔)————11.3 pyrUp函数及使用

Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm

在OpenCV中,使用函数cv2.pyrUp()实现图像金字塔操作中的向上采样,其语法形式如下:

dst = cv2.pyrUp( src[, dstsize[, borderType]] )

其中:
● dst为目标图像。
● src为原始图像。
● dstsize为目标图像的大小。
● borderType为边界类型,默认值为BORDER_DEFAULT,且这里仅支持BORDER_DEFAULT。
默认情况下,目标图像的大小为Size(src.cols2, src.rows2)。在任何情况下,图像尺寸需要满足下列条件:

|dst. width - src. cols∗2|≤mod(dst. widh,2)
|dst. height - src. rows∗2|≤mod(dst.height,2)

对图像向上采样时,在每个像素的右侧、下方分别插入零值列和零值行,得到一个偶数行、偶数列(即新增的行、列)都是零值的新图像New。接下来,用向下采样时所使用的高斯滤波器对新图像New进行滤波,得到向上采样的结果图像。需要注意的是,为了确保像素值区间在向上采样后与原始图像保持一致,需要将高斯滤波器的系数乘以4。
上一段描述的是OpenCV函数cv2.pyrUp()所实现的向上采样过程。了解上述过程,有助于我们更好地理解和使用该函数。但是,OpenCV库的目的就是要让我们忽略这些细节,直接使用函数cv2.pyrUp()完成向上采样。

eg1:使用函数cv2.pyrUp()对一幅图像进行向上采样,观察采样的结果。
程序如下:

import cv2
o=cv2.imread("lenas.bmp")
r1=cv2.pyrUp(o)
r2=cv2.pyrUp(r1)
r3=cv2.pyrUp(r2)
print("o.shape=",o.shape)
print("r1.shape=",r1.shape)
print("r2.shape=",r2.shape)
print("r3.shape=",r3.shape)
cv2.imshow("original",o)
cv2.imshow("r1",r1)
cv2.imshow("r2",r2)
cv2.imshow("r3",r3)
cv2.waitKey()
cv2.destroyAllWindows()

本例使用cv2.pyrUp()函数对图像进行了3次向上采样。采样后,利用print()函数输出了每次采样结果图像的大小,用cv2.imshow()函数显示了原始图像和3次向上采样后的结果图像。
程序运行后,会输出如下结果:

o.shape= (64, 64, 3)
r1.shape= (128, 128, 3)
r2.shape= (256, 256, 3)
r3.shape= (512, 512, 3)

从上述输出结果可知,经过向上采样后,图像的宽度和高度都会变为原来的2倍,图像整体大小会变为原来的4倍。
程序还会显示如图11-6所示图像,图像大小就是上述输出结果所显示的大小。这里为了便于对比,将它们调整成了等高格式展示。读者可以通过各个图像内标题栏所占比例,看出各个图像大致的尺寸关系。
在下图中:
● ( a )图是原始图像o。
● ( b )图是对原始图像o进行向上采样后的结果图像r1。
● ( c )图是对图像r1进行向上采样后的结果图像r2。
● ( d )图是对图像r2进行向上采样后的结果图像r3。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值