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)
    

  • 相关阅读:
    缓存服务Ehcache方案
    sql的一点总结<一>
    消息队列-ActiveMQ
    Kettle数据抽取解决方案
    在VMware上安装VMTools
    数组去重方法
    横向tab计算滚动位置
    无高度内容垂直居中
    常见富文本处理方法
    极简触感反馈Button组件
  • 原文地址:https://www.cnblogs.com/fldev/p/14371328.html
Copyright © 2011-2022 走看看