openCV专栏(七):图像金字塔

OPENCV基础操作

提示:本专栏所用版本仅供参考,其他版本也可

版本
pythonPython 3.9.3
opencv4.5.5
matplotlib3.4.3
numpy1.19.5
QQ学习群点击加群:928357277

本章内容阐述OPENCV中图像金字塔,在学习之前,我们首先应该知道什么是图像金字塔。

   图像金字塔是以一系列以金字塔形状排列的,自底向上分辨率逐渐降低的图像合集。

也可以说:金字塔是同一图像不同分辨率的子图集合(每层图像的宽度和高度一般都是原来的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()

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿只萌新

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值