游戏王的故事

openCV:图像金字塔

2019-09-25  本文已影响0人  SwiftBirds

定义

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

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

图像金字塔.png

高斯金字塔

采样类型

上采样

上采样

下采样

下采样
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

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

拉普拉斯金字塔

拉普拉斯金字塔.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
上一篇 下一篇

猜你喜欢

热点阅读