取样
向下取样:有一个图像G0,对它重新采样,得到分辨率小些的G1,以此类推。
向上取样:有一个图像G3,然后变成像素更多的G2,以此类推。
高斯卷积核:自身像素点取36,近一些的取24,越远的像素越低。最后除以像素点个数
删除偶数行列:使尺寸变为原始四分之一。
向下取样会丢失一些信息。
向上取样方法
如原始图像45,12,3,89,149。一轮向上取样后变为右边。
因为含义0,在使用卷积核时,等于一个像素点被稀释掉为原来的四分之一。所以还要乘以4使图像正常。
向下取样和向上取样是不可逆操作。无法恢复原图。
python+OpenCV
dst=cv2.pyrDown(src)
dst:取样结果
src:原始图像
import cv2
import numpy as np
o=cv2.imread("logo.png")
r1=cv2.pyrDown(o)
r2=cv2.pyrDown(r1)
cv2.imshow("original",o)
cv2.imshow("PyrDown1",r1)
cv2.imshow("PyrDown2",r2)
cv2.waitKey()
cv2.destroyAllWindows()
dst=cv2.pyrUp(src)
dst:取样结果
src:原始图像
import cv2
import numpy as np
o=cv2.imread("lena256.bmp",cv2.IMREAD_GRAYSCALE)
r=cv2.pyrUp(o)
cv2.imshow("original",o)
cv2.imshow("pyrUp",r)
cv2.waitKey()
cv2.destroyAllWindows()
研究经过一次向下和向上取样后,图像像素是否变化。
import cv2
o=cv2.imread("girl.bmp")
r=cv2.pyrUp(o)
r2=cv2.pyrDown(r)
diff=r2-o
cv2.imshow("difference",diff)
cv2.waitKey()
cv2.destroyAllWindows()
经过一次向上再向下后,再与原图求差,其结果见下面。可以发现经过向上向下后不能恢复原图
结果=原始图像-先向下再向上
向下:尺寸变小
向上:尺寸变大
下图信息为进行两次:
(结果1=原始图像-先向下再向上)
(结果2=结果1-先向下再向上)
import cv2
o=cv2.imread("lena.bmp")
od=cv2.pyrDown(o)
odu=cv2.pyrUp(od)
lapPyr=o-odu
o1=od
o1d=cv2.pyrDown(o1)
o1du=cv2.pyrUp(o1d)
lapPyr1=o1-o1du
cv2.imshow("lapPyr",lapPyr)
cv2.imshow("lapPry1",lapPyr1)
cv2.waitKey()
cv2.destroyAllWindows()
总目录链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)
电气专业的计算机小白,写博文不容易。如果你觉得本文不错。请点个赞支持下。谢谢。