使用 OpenCV 的图像金字塔 | Python
图像金字塔是图像处理中最漂亮的概念之一。通常,我们使用默认分辨率的图像,但很多时候我们需要更改分辨率(降低它)或调整原始图像的大小,这样图像金字塔就派上用场了。
pyrUp()
函数将大小增加到其原始大小的两倍,而pyrDown()
函数将大小减小到一半。如果我们将原始图像保留为基础图像并继续对其应用pyrDown
函数并将图像保持在垂直堆栈中,它将看起来像一个金字塔。通过pyrUp
函数对原始图像进行放大也是如此。
一旦我们缩小,如果我们将其重新缩放到原始大小,我们会丢失一些信息,并且新图像的分辨率比原始图像的分辨率低得多。
下面是一个图像金字塔的例子——
import cv2
import matplotlib.pyplot as plt
img = cv2.imread("images/input.jpg")
layer = img.copy()
for i in range(4):
plt.subplot(2, 2, i + 1)
# using pyrDown() function
layer = cv2.pyrDown(layer)
plt.imshow(layer)
cv2.imshow("str(i)", layer)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出:
图像金字塔的优点:
- 降低分辨率
- 获取各种尺寸的图像
- 图像混合
- 边缘检测