Python版本是Python3.7.3,OpenCV版本OpenCV3.4.1,开发环境为PyCharm
图像在向上采样后,整体尺寸变为原来的4倍;在向下采样后,整体尺寸变为原来的四分之一。下图展示了图像在采样前后的大小变化关系。一幅MN大小的图像经过向下采样后大小会变为(M/2)(N/2);一幅MN大小的图像经过向上采样后大小会变为(2M)(2N)。
一幅图像在先后经过向下采样和向上采样后,会恢复为原始大小,如下图所示。
虽然一幅图像在先后经过向下采样、向上采样后,会恢复为原始大小,但是向上采样和向下采样不是互逆的。也就是说,虽然在经历两次采样操作后,得到的结果图像与原始图像的大小一致,肉眼看起来也相似,但是二者的像素值并不是一致的。
eg1:使用函数cv2.pyrDown()和cv2.pyrUp(),先后将一幅图像进行向下采样、向上采样,观察采样的结果及结果图像与原始图像的差异。
程序如下:
import cv2
o=cv2.imread("lena.bmp")
down=cv2.pyrDown(o)
up=cv2.pyrUp(down)
diff=up-o #构造diff图像,查看up与o的区别
print("o.shape=",o.shape)
print("up.shape=",up.shape)
cv2.imshow("original",o)
cv2.imshow("up",up)
cv2.imshow("difference",diff)
cv2.waitKey()
cv2.destroyAllWindows()
本例在尝试向大家说明,原始图像先后经过向下采样、向上采样后,所得到的结果图像与原始图像的大小一致,看起来也很相似,但是它们的像素值并不是一致的。
运行程序,会显示如下输出:
o.shape= (512, 512, 3)
up.shape= (512, 512, 3)
从上述输出结果可以得知,图像在先后经过向下采样、向上采样后,得到的结果图像与原始图像大小一致。
同时,程序还会显示如下图所示图像。其中:
● ( a )图是原始图像o。
● ( b )图是对图像down(通过对原始图像o向下采样得到)进行向上采样后获得的结果图像up。
● ( c )图是对图像up和原始图像o进行减法运算的结果(差值)图像diff。图像diff反映的是图像up和原始图像o的差值。
从本例的结果可知,原始图像o与先后经过向下采样、向上采样得到的结果图像up,在大小上是相等的,在外观上是相似的,但是它们的像素值并不一致。
eg2:使用函数cv2.pyrUp()和cv2.pyrDown(),先后将一幅图像进行向上采样、向下采样,观察采样的结果及结果图像与原始图像的差异。
程序如下:
import cv2
o=cv2.imread("lena.bmp")
up=cv2.pyrUp(o)
down=cv2.pyrDown(up)
diff=down-o #构造diff图像,查看down与o的区别
print("o.shape=",o.shape)
print("down.shape=",down.shape)
cv2.imshow("original",o)
cv2.imshow("down",down)
cv2.imshow("difference",diff)
cv2.waitKey()
cv2.destroyAllWindows()
本例尝试向大家说明,一幅图像在先后经过向上采样、向下采样后,所得到的结果图像大小与原始图像一致,看起来也很相似,但是它们的像素值并不是一致的。
运行程序,会显示如下输出:
o.shape= (512, 512, 3)
down.shape= (512, 512, 3)
从上述输出可得知,图像在先后经过向上采样、向下采样后,得到的结果图像与原始图像大小一致。
同时,程序还会显示如下图所示图像。其中:
● ( a )图是原始图像o。
● ( c )图是对图像up(通过对原始图像o向上采样得到)进行向下采样后的结果图像down。
● ( d )图是对图像down和原始图像o进行减法运算的结果图像diff。图像diff反映的是图像down和原始图像o的差值。
从本例的结果可知,原始图像o与先后经过向上采样、向下采样得到的图像 down,在大小上是相等的,在外观上是相似的,但是它们的像素值并不一致。