美文网首页
(三)OpenCV图像金字塔

(三)OpenCV图像金字塔

作者: zqyadam | 来源:发表于2020-02-28 21:55 被阅读0次

高斯金字塔

高斯金字塔
  • 第0层:原始图像(N×N)
  • 第1层:高斯滤波 -> 下采样 [N/2 , N/2]
  • 第2层:高斯滤波 -> 下采样 [N/(2^1) , N/(2^1)]
  • ...
  • 第n层:高斯滤波 -> 下采样 [N/(2^n) , N/(2^n)]

采样可逆性

无论是先下采样,然后再上采样,还是先上采样,在下采样,都是不能讲图像还原回去的。

如果想还原图像,需要采用下面的拉普拉斯金字塔

拉普拉斯金字塔

拉普拉斯金字塔

拉普拉斯金字塔中的第i层,等于“高斯金字塔中的第i层”与“高斯金字塔中的第i+1层的向上采样结果”之差。

  • Li:表示拉普拉斯金字塔的第i层
  • Gi:表示高斯金字塔的第i层
  • Gi+1:表示高斯金字塔的第i+1层,即:
Gi+1 = cv2.pyrDown(Gi) 拉普拉斯金字塔恢复图像
import cv2

def gaussin_yyramid(img, num_layers=3):
    G = [img]
    for i in range(num_layers):
        G.append(cv2.pyrDown(G[i]))
    return G


def laplace_pryramid(G):
    L = []
    for i in range(len(G) - 1):
        L.append(G[i] - cv2.pyrUp(G[i + 1]))
    return L


def reconstuct_image(G, L, layer):
    if layer > (len(L) - 1):
        assert "无法重建图像"
        return

    Li = L[layer]
    Gi = G[layer + 1]
    image = Li + cv2.pyrUp(Gi)
    return image


def main():
    img = cv2.imread("lena.tif")
    # 获取高斯金字塔
    G = gaussin_yyramid(img, 3)
    # 解构高斯金字塔每一层,第一个G0就是原图像img
    G0, G1, G2, G3 = G
    # 获取拉普拉斯金字塔
    L = laplace_pryramid(G)

    R1 = reconstuct_image(G, L, 1)
    # 显示原图像
    cv2.imshow('Original', img)
    # ============= 重建G1图像 =============
    # 显示G1图像
    cv2.imshow('G1', G1)
    # 显示重建后的图像
    cv2.imshow('r1', R1)
    # 显示两个图像的插值,全黑表示没有差别
    cv2.imshow('diff', G1 - R1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


if __name__ == "__main__":
    main()

相关文章

  • 图像金字塔

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

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

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

  • OpenCV Python实现图像金字塔

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

  • OpenCV 之ios 图像金字塔

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

  • (三)OpenCV图像金字塔

    高斯金字塔 第0层:原始图像(N×N) 第1层:高斯滤波 -> 下采样 [N/2 , N/2] 第2层:高斯滤...

  • 图像金字塔

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

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

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

  • opencv图像金字塔

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

  • openCV:图像金字塔

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

  • openCV

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

网友评论

      本文标题:(三)OpenCV图像金字塔

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