美文网首页游戏王的故事
openCV:图像金字塔

openCV:图像金字塔

作者: SwiftBirds | 来源:发表于2019-09-25 08:01 被阅读0次

定义

图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔就是用来进行图像缩放的。

进行图像缩放可以用图像金字塔,也可以使用resize函数进行缩放,后者效果更好。这里只是对图像金字塔做一些简单了解。

图像金字塔.png

高斯金字塔

  • 用于下采样,高斯金字塔是最基本的图像塔。
  • 原理:首先将原图像作为最底层图像G0(高斯金字塔的第0层),利用高斯核(5*5)对其进行卷积,然后对卷积后的图像进行下采样(去除偶数行和列)得到上一层图像G1,
  • 将此图像作为输入,重复卷积和下采样操作得到更上一层图像,反复迭代多次,形成一个金字塔形的图像数据结构,即高斯金字塔。

采样类型

上采样

  • 就是图片放大(所谓上嘛,就是变大),使用PryUp函数。
  • 步骤:先将图像在每个方向放大为原来的两倍,新增的行和列用0填充,再使用先前同样的内核与放大后的图像卷积,获得新增像素的近似值。
上采样

下采样

  • 就是图片缩小(所谓下嘛,就是变小),使用PryDown函数。
  • 步骤:先对图像进行高斯内核卷积 ,再将所有偶数行和列去除。
下采样
import cv2 #opencv读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline 

def cv_showimg(name,img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
# 原图
img=cv2.imread("lena.jpg")
cv_showimg('img',img)
print (img.shape)
(263, 263, 3)
原图.PNG
# 高斯金字塔-向上
up=cv2.pyrUp(img)
cv_showimg('up',up)
print (up.shape)
(526, 526, 3)
高斯金字塔-向上.PNG
# 高斯金字塔-向下
down=cv2.pyrDown(img)
cv_showimg('down',down)
print (down.shape)
(132, 132, 3)
高斯金字塔-向下.PNG
# 向上-向下法
up=cv2.pyrUp(img)
up_down=cv2.pyrDown(up)
cv_showimg('img vs up_down',np.hstack((img,up_down)))
cv_showimg('img-up_down',img-up_down)
原图与向上向下法的对比.PNG

总之,上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。要解决这个问题,就得用拉普拉斯金字塔。

拉普拉斯金字塔

  • 用于重建图像,也就是预测残差,对图像进行最大程度的还原。比如一幅小图像重建为一幅大图,
  • 原理:用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。
拉普拉斯金字塔.png
# 拉普拉斯金字塔LP1
img=cv2.imread("AM.png")
down=cv2.pyrDown(img)
down_up=cv2.pyrUp(down)
l_1=img-down_up
cv_showimg('l_1',np.hstack((img,img-down_up)))
拉普拉斯金字塔LP1.PNG

相关文章

  • 图像金字塔

    概述 图像金字塔其实说白了就是披着金字塔外衣的图像缩放,在OpenCV中,有关图像金字塔的操作有pyrup()和p...

  • 【图像处理】如何对一幅图像进行放大放小

    【图像处理】OpenCV系列十五 --- 对一幅图像进行放大、放小 上一篇我们学习了图像金字塔,图像金字塔有两种实...

  • OpenCV Python实现图像金字塔

    图像金字塔一文中,已经详细介绍了图像金字塔的MATLAB实现,这里贴上OpenCV Python的实现以做补充。在...

  • OpenCV 之ios 图像金字塔

    OpenCV 之ios 图像金字塔 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 pyrUp 和 py...

  • 图像金字塔

    图像金字塔与图像尺寸变化(放大,缩小)是不同的.一般对图像进行放大或缩小,可以使用opencv resize 函数...

  • Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。 基础知识铺垫 学习图像金字塔,发现网...

  • opencv图像金字塔

    1 原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像...

  • openCV:图像金字塔

    定义 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。...

  • openCV

    Opencv2图像裁剪(子图像提取) opencv之读取图像 #######opencv读取图像的灰度值并显示出来...

  • iOS OpenCV 图像灰度处理

    iOS OpenCV 图像灰度处理 iOS OpenCV 图像灰度处理

网友评论

    本文标题:openCV:图像金字塔

    本文链接:https://www.haomeiwen.com/subject/qdnmuctx.html