zoukankan      html  css  js  c++  java
  • opencv_python学习笔记十七

    20 图像金字塔

    高斯金字塔

    拉普拉斯金字塔

    所用函数:

    def pyrDown(src, #输入图像

    dst=None, #输出图像

    dstsize=None, #输出图像的大小

    borderType=None)#图像边界的处理方式

    def pyrUp(src,

    dst=None,

    dstsize=None,

    borderType=None)

     

    1 原理

    示例代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2016/11/21 14:01
    # @Author  : Retacn
    # @Site    : 图像金字塔
    # @File    : imagePyr.py
    # @Software: PyCharm

    import cv2
    import numpy as np,sys
    from matplotlib import pyplot as plt

    img=cv2.imread('../test.jpg',0)
    lower_reso=cv2.pyrDown(img)
    higher_reso=cv2.pyrUp(img)

    plt.subplot(131),plt.imshow(img,'gray')
    plt.title('Original')
        #,plt.xticks([]),plt.yticks([])
    plt.subplot(132),plt.imshow(lower_reso,'gray')
    plt.title('Lower_reso')
        #,plt.xticks([]),plt.yticks([])
    plt.subplot(133),plt.imshow(higher_reso,'gray')
    plt.title('Higher_reso')
        #,plt.xticks([]),plt.yticks([])

    plt.show()

     

    2 使用金字塔进行图像融合

    示例代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2016/11/21 14:44
    # @Author  : Retacn
    # @Site    : 图像融合
    # @File    : ImageFusion.py
    # @Software: PyCharm

    import cv2
    import numpy as np,sys
    from matplotlib import pyplot as plt

    """
        使得img1的大小与img2相同
    """
    def
    sameSize(img1, img2):
        rows, cols, dpt = img2.shape
        dst = img1[:rows,:cols]
        return dst

    #读入图像
    apple=cv2.imread('../apple.jpg')
    orange=cv2.imread('../orange.jpg')


    #为图像苹果创建一个高斯金字塔
    temp_c=apple.copy()
    apple_gp=[temp_c]
    for i in range(6):
        temp_c=cv2.pyrDown(temp_c)
        apple_gp.append(temp_c)

    #为图像橙子创建一个高斯金字塔
    temp_c=orange.copy()
    orange_gp=[temp_c]
    for i in range(6):
        temp_c=cv2.pyrDown(temp_c)
        orange_gp.append(temp_c)

    #为图像苹果创建一个拉普拉斯金字塔
    apple_lp=[apple_gp[5]]
    for i in range(5,0,-1):
        GE=cv2.pyrUp(apple_gp[i])
        L=cv2.subtract(apple_gp[i-1],sameSize(GE,apple_gp[i-1]))
        apple_lp.append(L)


    #为图像橙子创建一个拉普拉斯金字塔
    orange_lp=[orange_gp[5]]
    for i in range(5,0,-1):
        GE=cv2.pyrUp(orange_gp[i])
        L=cv2.subtract(orange_gp[i-1],sameSize(GE,orange_gp[i-1]))
        orange_lp.append(L)

    #1/2 Laplace金字塔进行拼接
    LS=[]
    for apple_l,orange_l in zip(apple_lp,orange_lp):
        rows,cols,dpt=apple_l.shape
        ls = np.hstack((apple_l[:,0:cols/2], orange_l[:,cols/2:]))
        LS.append(ls)

    #对拼接后的laplace金字塔重建,取得融合后的图像
    ls_=LS[0]
    for i in range(1,6):
        ls_=cv2.pyrUp(ls_)
        ls_=cv2.add(sameSize(ls_,LS[i]),LS[i])

    real=np.hstack((apple[:,:cols/2],orange[:,cols/2:]))

    #保存图像
    #cv2.imwrite('Pyramid_blending2.jpg',ls)
    #cv2.imwrite('Direct_blending.jpg',real)

    #显示图像
    plt.subplot(121),plt.imshow(ls_,'gray')
    plt.title('ls_')

    plt.subplot(122),plt.imshow(real,'gray')
    plt.title('real')

    plt.show()

  • 相关阅读:
    Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
    IOC的优点是什么?
    《精益软件开发管理之道》阅读笔记02
    每日日报18
    每日日报17
    ecplise中没有Java Application的解决办法
    HTML+CSS+div 制作简单的登录界面
    HTML+CSS:通过li标签制作导航条
    每日日报16
    用Python爬取最新疫情数据(使用PyCharm)
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194159.html
Copyright © 2011-2022 走看看