本篇文章介绍图像金字塔处理,某些时候我们需要一组不同分辨率大小的相同图像,这一组图像按金字塔方式堆叠,底部具有最高分辨率图像而顶部具有最低分辨率图像。
主要学习cv.pyrUp(),cv.pyrDown()函数的使用。
环境:Windows 7(64) Python 3.6 OpenCV 3.4.2
一、图像金字塔
1.1 相关函数介绍
pyrUp()函数形式如下:
dst = cv.pyrUp( src[, dst[, dstsize[, borderType]]] )
功能:图像金字塔向上采样,图像尺寸加倍(向上是针对尺寸而言的,刚好和金字塔方向相反,注意别搞混了)。
参数:
src:输入图像。
dst:输出图像。
dstsize:输出图像大小
borderType:边界填充类型
pyrDown()函数形式如下:
dst = cv.pyrDown( src[, dst[, dstsize[, borderType]]] )
功能:图像金字塔向下采样,图像尺寸减半(向下是针对尺寸而言的,刚好和金字塔方向相反,注意别搞混了)。
参数:
src:输入图像。
dst:输出图像。
dstsize:输出图像大小
borderType:边界填充类型
1.2 编程测试
先对原始图像进行向下金字塔,然后对其进行向上金字塔,代码如下:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('1.png')
#向下金字塔
DstpyrDown = cv.pyrDown(img)
#向上金字塔
DstpyrUp = cv.pyrUp(DstpyrDown)
#显示
cv.imshow("src img", img)
cv.imshow("pyrDown", DstpyrDown)
cv.imshow("DstpyrUp", DstpyrUp)
代码运行结果图如下所示。可以看出对原始图像进行向下采样,再向上采样后的图像相较于原始图像来说,变模糊了,这是因为对图像向下采样会丢失信息。此外可知两种操作不是互逆操作。