zoukankan      html  css  js  c++  java
  • 图像金字塔


    概念

    将图像组合成金字塔的形状(底下大,上面小)

    使用场景:特征提取

    方法分为

    • 高斯金字塔
    • 拉普拉斯金字塔

    一、高斯金字塔

    1、向下采样法(缩小)

    越采样越少,down sample,|是一个缩小操作;

    • (G_i) 与高斯内核卷积
    • 将所有偶数行和列去除

    $ frac{1}{16} * left[ egin{matrix} 1 & 4 & 6 & 4 & 1 4 & 16 & 24 & 16 & 4 6 & 24 & 36 & 24 & 6 4 & 16 & 24 & 16 & 4 1 & 4 & 6 & 4 & 1 end{matrix} ight] $


    2、向上采样法(放大)

    1. 将图像在每个方向上 扩大为原来的两倍;新增的行列以 0 填充;
    2. 使用先前同样的内核(乘以4)与放大后的图像卷积获得近似值

    $ left[ egin{matrix} 10 & 30 56 & 96 end{matrix} ight] ightarrow left[ egin{matrix} 10 & 0 & 30 & 0 0 & 0 & 0 & 0 56 & 0 & 96 & 0 0 & 0 & 0 & 0 end{matrix} ight] $


    3、实现

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    lena = cv2.imread('lena.jpg')
    lena.shape # (263, 263, 3)
     
    # 上采样
    up = cv2.pyrUp(lena)
    up.shape # (526, 526, 3)
     
    # 下采样
    down = cv2.pyrDown(lena)
    down.shape # (132, 132, 3)
    

    plt.imshow(up)
    

    output_8_1.png


    plt.imshow(down)
    

    output_9_1.png

    # 上采样后下采样,和原图大小一样,但有损失
    up = cv2.pyrUp(lena)
    up_down = cv2.pyrDown(up)
    up_down.shape  # (263, 263, 3)
     
    plt.imshow(np.hstack((lena, up_down)))
    


    二、拉普拉斯金字塔

    $ L_i = G_i - PyrUp(PyrDown(G_i)) $

    down = cv2.pyrDown(lena)
    down_up = cv2.pyrUp(down, dstsize=(263,263))
    l1 = lena - down_up
    plt.imshow(l1)
    

  • 相关阅读:
    屏幕适配的简单介绍
    静态单元格
    BOOL的getter方法
    取消注册监听器
    自定义cell
    假适配
    cell的重用
    UITableView的简单使用
    UISrcoll控件简单介绍
    创建ios界面的三步骤
  • 原文地址:https://www.cnblogs.com/fldev/p/14371328.html
Copyright © 2011-2022 走看看