OPENCV基础操作
提示:本专栏所用版本仅供参考,其他版本也可
库 | 版本 |
---|---|
python | Python 3.9.3 |
opencv | 4.5.5 |
matplotlib | 3.4.3 |
numpy | 1.19.5 |
QQ学习群 | 点击加群:928357277 |
图像金字塔是以一系列以金字塔形状排列的,自底向上分辨率逐渐降低的图像合集。
也可以说:金字塔是同一图像不同分辨率的子图集合(每层图像的宽度和高度一般都是原来的2倍数),有向下和向上采样之分,可以通过多种种方法得到: 1、不断删除偶数行和偶数列
2、删除滤波后所得近似图像的偶数行和偶数列得到:有采用领域滤波器的平均金字塔、采用高斯滤波器的高斯金字塔
3、对像素点补零插值,右侧插入值为零的列,下方插入值为零的行,然后采用高斯滤波法。
金字塔图示
注意:图示为向下采样法,既原始图片被一层一层降低分辨率
(一)高斯金字塔
1:内容介绍
向下采样:pyrDowwn(src[,dstsize[,borderType]])
向上采样:pyrUp(src[,dstsize[,borderType]])
borderType:边界类型,只支持BORDER_DEFAULT
默认输出的图像为 Size((src.cols+1)/2,(src.rows+1)/2)
图像尺寸必须满足:|dst.width2-src.cols|<=2,|dst.height2-src.rows|<=2|
2:代码演示
代码:
import matplotlib.pyplot as plt #导入模块
import cv2
import numpy as np
img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
img3 = cv2.pyrUp(img)
img1 = cv2.pyrDown(img)
img2 = cv2.pyrDown(img1)
cv2.imshow('up',img3)
cv2.imshow('img',img)
cv2.imshow('imgplus',img1)
cv2.imshow('imgplus2',img2)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果:
(二)拉普拉斯金字塔
1:内容介绍
拉普拉斯金字塔:在向上采样时能获取完整大尺寸高分辨率图像,通常用来恢复高分辨率的图像
定义形式:L(i)= G(i) - pyrUP(G(i+1)) [i表示层数]
向上恢复:G(i) = L(i) + pyrUP(G(i+1))
2:代码演示
代码:
import matplotlib.pyplot as plt #导入模块
import cv2
import numpy as np
img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
#高斯金字塔
img1 = cv2.pyrDown(img)
img2 = cv2.pyrDown(img1)
#采样
L0 = img - cv2.pyrUp(img1)
L1 = img1 - cv2.pyrUp(img2)
#恢复
G0 = L0 + cv2.pyrUp(img1)
#显示图片
cv2.imshow('L0',L0)
cv2.imshow('G0',G0)
cv2.imshow('img1',img1)
cv2.waitKey()
cv2.destroyAllWindows()
运行结果: