-
dst_img:目标图像
-
src_img:原始图像
-
dstsize:目标图像大小。 默认行和列都会变成原始图像行和列的1/2, 整幅图像会变成原始图像的1/4。
cv2.pyrDown()函数首先对原始图像进行高斯变换,再通过抛弃偶数行和偶数列实现下采样。
import cv2
import numpy as np
image = cv2.imread("/Users/manmi/Desktop/lena.bmp", 0)
result_1 = cv2.pyrDown(image)
result_2 = cv2.pyrDown(result_1)
result_3 = cv2.pyrDown(result_2)
cv2.imshow('image', image)
cv2.imshow('result_1', result_1)
cv2.imshow('result_2', result_2)
cv2.imshow('result_3', result_3)
cv2.waitKey()
cv2.destroyAllWindows()
函数cv2.pyrUp() 用于实现高斯金字塔中的上采样。
函数原型:
dst_img = cv2.pyrUp(src_img, dstsize)
- dst_img:目标图像
- src_img:原始图像
- dstsize:目标图像大小。 默认行和列都会变成原始图像行和列的2倍, 整幅图像会变成原始图像的4倍。
cv2.pyrUp() 函数首先在原始图像的每个像素的右侧和下侧分别插入零值列和零值行,得到一个偶数行,偶数列(新增的行和列)都是零值的新图,在进行高斯变换,得到上采样的结果图像。
import cv2
import numpy as np
image = cv2.imread("/Users/manmi/Desktop/result_3.bmp", 0)
result_1 = cv2.pyrUp(image)
result_2 = cv2.pyrUp(result_1)
result_3 = cv2.pyrUp(result_2)
print('image.shape =', image.shape)
print('result_1.shape =', result_1.shape)
print('result_2.shape =', result_2.shape)
print('result_3.shape =', result_3.shape)
cv2.imshow('image', image)
cv2.imshow('result_1', result_1)
cv2.imshow('result_2', result_2)
cv2.imshow('result_3', result_3)
cv2.waitKey()
cv2.destroyAllWindows()
原始图像先下采样再上采样,得到的结果图像和原始图像尺寸一样,但是二者像素值并不是一致的。
原始图像先上采样再下采样,得到的结果图像和原始图像尺寸一样,但是二者像素值并也不是一致的。
所以,结论是,上采样和下采样不是互逆的。(上采样并不是下采样的逆运算)
构造拉普拉斯金字塔的目的就是为了恢复高分辨率的图像。
图像金字塔(Image> Pyramid)是一种用于多尺度图像处理和分析的技术,它通过构建一系列不同分辨率的图像,从而使得图像可以在不同尺度下进行处理和分析。图像金字塔在计算机视觉、图像处理和计算机图形学等领域中广泛应用,可以用于目标检测、特征提取、图像匹配、尺度不变特征变换(SIFT)等任务。图像金字塔通常分为两种类型:高斯金字塔和拉普拉斯金字塔。高斯金字塔(Gaussian Pyramid):高斯金字塔通过不断降采样(缩小)原始图像来构建,每一层图像都是前一层图像的一半大小。
函数 cv2.pyrDown 是从高分辨率的大尺寸图像逐次向下采样得到一系列图像,构建一个金字塔,称为高斯金字塔(Gaussian pyramid),实际上是一个重复高斯平滑并重新对图像采样的过程。拉普拉斯金字塔每次向下采样后将再次向上采样,并记录残差信息,可以对图像进行最大程度的还原。构造拉普拉斯金字塔的目的就是为了恢复高分辨率的图像。
高斯金字塔
操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一,这被称为 Octave。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。使用函数
cv2.pyrDown() 和 cv2.pyrUp() 构建图像金字塔。
cv2.pyrDown()
cv2.pyrDown() 从一个高分辨率大尺寸的图像...
图像金字塔是一种以多分辨率来解释图像的结构,常用于图像分割、图像压缩和机器视觉。
在需要处理同一图像的不同分辨率的子图时,需要创建一组具有不同分辨率的原始图像。把最大的图像放在底部,最小的放在顶部,看起来就像一座金字塔,称为图像金字塔。...
在学习tensorflow卷积神经网络时,需要实现图像的下采样,于是便想手动实现一下,但是发现有一点麻烦,于是便寻找看opencv是否有下采样方法,找了下,还真有
When I was young, I desired to be a scientist after I grow up, but things always go oppsite to people’s wish, after su...
OpenCV图像处理应用(面向Python)欢迎来到梁老湿课堂1.图像金字塔
欢迎来到梁老湿课堂
美好的一天从学习开始,今天不学习明天变垃圾。让我们用编程为世界增添美好!(本次课程素材都来源于我的专业课老师小傅,他的课形象生动,他所掌握的知识点犹如大海一般,他最擅长用简单、通俗易懂的语言让我们记住知识点。我只是一个搬运工、打工人。我只是站在他的肩膀上发文章!)
1.图像金字塔
图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。通过对原图像不断地向下采样而产生的,即高分辨率的图像(大尺寸)产生低分
Python版本是Python3.7.3,OpenCV版本OpenCV.3.4.1,开发环境为PyCharm
OpenCV提供了函数cv2.pyrDown(),用于实现图像高斯金字塔操作中的向下采样,其语法形式为:
dst = cv2.pyrDown( src[, dstsize[, borderType]] )
● dst为目标图像。
● src为原始图像。
● dstsize为目标图...