相关文章推荐
朝气蓬勃的火腿肠  ·  保罗中国行想念妻女CP4 ...·  5 月前    · 
伤情的肉夹馍  ·  语言支持- 翻译器- Azure AI ...·  10 月前    · 
善良的番茄  ·  《第五人格》是什么意思什么意思_第五人格_九 ...·  1 年前    · 
豪爽的香烟  ·  乐而不淫,哀而不伤- 知乎·  1 年前    · 
知识渊博的橡皮擦  ·  美妆集合店“供应链”之渴:管理模式须补课- ...·  1 年前    · 
小百科  ›  【OpenCV-Python】:图像金字塔之高斯金字塔与拉普拉斯金字塔_实现你自己的程序来构建高斯金字塔和拉普拉斯金字塔。python
下采样 拉普拉斯 金字塔 高斯
温文尔雅的茴香
5 月前
  • 😺一、前言
  • 😺二、高斯金字塔
    • 🐶2.1 原理
    • 🐶2.2 程序设计及结果可视化
      • 🦄2.2.1 程序设计
      • 🦄2.2.2 结果可视化
    • 😺三、拉普拉斯金字塔
      • 🐶3.1 原理
      • 🐶3.2 拉普拉斯金字塔程序设计及结果可视化
        • 🦄3.2.1 程序设计
        • 🦄3.2.2 结果可视化
      • 🐶3.3 残差融合程序设计及结果可视化
        • 🦄3.3.1 程序设计
        • 🦄3.3.2 结果可视化

        😺一、前言

        以多个分辨率来表示图像的一种有效且概念简单的结构就是 图像金字塔 。

        图像金字塔最初用于机器视觉和图像压缩,一个图像金字塔是一系列以金字塔形状排列的、多分辨率逐步降低的图像集合。

        金字塔的底部是待处理图像的高分辨率表示,而顶部则包含一个低分辨率近似,当向金字塔的上层移动时,尺寸和分辨率降低。

        (美)拉斐尔·C.冈萨雷斯(Rafael C.Gonzalez)著;阮秋琦译.国外电子与通信教材系列 数字图像处理 第3版[M].北京:电子工业出版社.2017.

        高斯金字塔与拉普拉斯金字塔是常见的两种图像金字塔。

        • 高斯金字塔 :用作下采样;
        • 拉普拉斯金字塔 :用来从金字塔低层图像重建上层未採样图像,在数字图像处理中也即是预測残差。能够对图像进行最大程度的还原,配合高斯金字塔一起使用。

        😺二、高斯金字塔

        🐶2.1 原理

        由图可知,高斯金字塔用于下采样操作。首先将原图像作为最底层图像G0(高斯金字塔的第0层),利用高斯核进行卷积,然后对卷积后的图像进行下采样(去除偶数行和列),得到上层图像G1(高斯金字塔第1层),再将G1作为输入,重复进行高斯卷积和下采样操作得到G2、G3等,迭代多次最终形成一个金字塔形状的图像结构。
        在这里插入图片描述

        🐶2.2 程序设计及结果可视化

        🦄2.2.1 程序设计

        函数: cv2.pyrDown()

        import cv2
        import numpy as np
        original = cv2.imread(r"C:\Users\Lenovo\Desktop\lena1.jpg", 0)     # 灰度图
        G0 = original
        G1 = cv2.pyrDown(original)
        G2 = cv2.pyrDown(G1)
        G3 = cv2.pyrDown(G2)
        print("original.shape=", G0.shape)
        print("G1.shape=", G1.shape)
        print("G2.shape=", G2.shape)
        print("G3.shape=", G3.shape)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\G0.jpg", G0)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\G1.jpg", G1)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\G2.jpg", G2)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\G3.jpg", G3)
        cv2.imshow("original", G0)
        cv2.imshow("G1", G1)
        cv2.imshow("G2", G2)
        cv2.imshow("G3", G3)
        cv2.waitKey()
        

        🦄2.2.2 结果可视化

        😺三、拉普拉斯金字塔

        🐶3.1 原理

        拉普拉斯金字塔的作用是预测残差,那么什么是图像的残差?

        如果高斯金字塔中的一张图 import numpy as np original = cv2.imread(r"C:\Users\Lenovo\Desktop\lena1.jpg", 0) # 灰度图 G0 = original G1 = cv2.pyrDown(original) # 下采样 G2 = cv2.pyrDown(G1) G3 = cv2.pyrDown(G2) U2 = cv2.pyrUp(G3) # 上采样 U1 = cv2.pyrUp(G2) U0 = cv2.pyrUp(G1) L0 = G0 - U0 # 拉普拉斯金字塔 L1 = G1 - U1 L2 = G2 - U2 print("original.shape=", G0.shape) print("G1.shape=", G1.shape) print("G2.shape=", G2.shape) print("G3.shape=", G3.shape) print("UO.shape=", U0.shape) print("U1.shape=", U1.shape) print("U2.shape=", U2.shape) cv2.imwrite(r"C:\Users\Lenovo\Desktop\L0.jpg", L0) cv2.imwrite(r"C:\Users\Lenovo\Desktop\L1.jpg", L1) cv2.imwrite(r"C:\Users\Lenovo\Desktop\L2.jpg", L2) cv2.imshow("L0", L0) cv2.imshow("L1", L1) cv2.imshow("L2", L2) cv2.waitKey()

        🦄3.2.2 结果可视化

        🐶3.3 残差融合程序设计及结果可视化

        🦄3.3.1 程序设计

        import cv2
        import numpy as np
        original = cv2.imread(r"C:\Users\Lenovo\Desktop\lena1.jpg", 0)     # 灰度图
        G0 = original
        G1 = cv2.pyrDown(original)      # 下采样
        G2 = cv2.pyrDown(G1)
        G3 = cv2.pyrDown(G2)
        U2 = cv2.pyrUp(G3)      # 上采样
        U1 = cv2.pyrUp(G2)
        U0 = cv2.pyrUp(G1)
        L0 = G0 - U0        # 拉普拉斯金字塔
        L1 = G1 - U1
        L2 = G2 - U2
        RESTORE0 = L0 + U0      # 将残差结果与上采样结果相加
        RESTORE1 = L1 + U1
        RESTORE2 = L2 + U2
        print(G0 == RESTORE0)
        print(G1 == RESTORE1)
        print(G2 == RESTORE2)
        h0 = np.hstack([G0, RESTORE0])
        h1 = np.hstack([G1, RESTORE1])
        h2 = np.hstack([G2, RESTORE2])
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\h0.jpg", h0)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\h1.jpg", h1)
        cv2.imwrite(r"C:\Users\Lenovo\Desktop\h2.jpg", h2)
        cv2.imshow("h0", h0)
        cv2.imshow("h1", h1)
        cv2.imshow("h2", h2)
        cv2.waitKey()
        

        程序打印结果可以看到经过残差融合后的上采样图像与下采样后的图像是一致的

        🦄3.3.2 结果可视化

        def BGR2GRAY(img): # Grayscale gray = 0.2126 * img[..., 2] + 0.7152 * img[..., 1] + 0.0722 * img[..., 0] return g...
        一、高斯金字塔: 高斯金子塔的思路非常简单,就是讲原始图像当作金子塔的最底层,然后进行按图像长宽各减少二分之一,面积减少四分之一,进行下采样。在进行下采样之前需要进行高斯滤波。 import numpy as np import cv2 import matplotlib.pyplot as plt def gaussian(original_image,down_times=5): temp = original_image.copy() gaussian_pyramid = [temp]
        1、从opencv函数的金字塔函数和尺度缩放函数说起 Opencv里面金字塔和resize函数都是有关图像分辨率的问题。我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果放大或者缩小图片的尺寸,笼统来说的话,可以使用OpenCV为我们提供的如下两种方式:1> resize函数。这是最直接的方式,2> pyrUp( )、pyrDown( )函数。即图像金字塔相关的两个函数,对图像进行
        高斯金字塔 ( Gaussianpyramid):向下采样,层级越高,则图像越小,分辨率越低。要从金字塔第i层生成第i+1层,我们先要用高斯核对第i层进行卷积,然后进行下采样,即删除所有偶数行和列。 拉普拉斯金字塔:拉普拉斯金字塔的第i层为高斯金字塔的第i层减去先经过上采样(每个方向扩大两倍,即新增的行和列用0填充)再经过卷积操作的第i+1层高斯金字塔。从而获得由降采样操作丢失的信息
        图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。这个图像集合是由原图像不断下采样;产生的,最底层是原图像,该层的上层图像是该层图像下采样产生,因此,图像的大小就是 : NN —N/2N/2----…一直到顶点1*1。 根据下采样前使用的卷积核操作的不同,图像金字塔可以分为高斯金字塔、拉普拉斯金字塔等等。下采样的一般步骤为:先将图片滤波,然后将滤波后的图像去掉其偶数行和偶数列,在滤波器的选择上我们有多种方式,cv包中使用的默认滤波器为高斯滤波器。 由于采样后的图像将越来越小,因此可以
        图像金字塔介绍 图像金字塔是多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐渐降低并且来源于同一张原始图像的集合。通过梯次向下采样获得,直到某个终止条件才停止采样。 图像金字塔说白了就是披着金字塔外衣的图像缩放。一般有高斯图像金字塔、拉普拉斯图像金字塔。 两种金字塔介绍 高斯金字塔(低通) 高斯金字塔:用于下采样。高斯金字...
        import cv2 as cv import numpy as np # 高斯金字塔和拉普拉斯金字塔的原理和python构建:https://zhuanlan.zhihu.com/p/94014493 # 高斯金字塔 def pyramid_image(image): level = 3 # 金字塔的层数 temp = image.copy() # 拷贝图像 pyramid_images =
        前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理」 「Python 图像处理 OpenCV (4):图像算数运算以及修改颜色空间」 「Python 图像处理 OpenCV (5):图像的几何变换」 「Python 图像处理 OpenCV (6):图像的阈值处理」 「Python .
        高斯金字塔是一种图像金字塔,用于图像的降采样和高斯模糊。在Python中,可以使用OpenCV库来实现高斯金字塔。具体实现方法是通过cv2.pyrDown()函数进行降采样,通过cv2.GaussianBlur()函数进行高斯模糊。下面是一个简单的Python代码示例,用于生成高斯金字塔图像: import cv2 # 读取图像 img = cv2.imread('image.jpg') # 生成高斯金字塔 gaussian_pyramid = [img] for i in range(3): img = cv2.pyrDown(img) gaussian_pyramid.append(img) # 显示金字塔图像 for i in range(4): cv2.imshow('Gaussian Pyramid {}'.format(i), gaussian_pyramid[i]) cv2.waitKey(0) cv2.destroyAllWindows() 在这个示例中,我们首先读取了一张图像,然后使用cv2.pyrDown()函数生成了一个高斯金字塔。最后,我们使用cv2.imshow()函数显示了金字塔图像。
 
推荐文章
朝气蓬勃的火腿肠  ·  保罗中国行想念妻女CP4 发家人合影表思家心切-搜狐体育!!!
5 月前
伤情的肉夹馍  ·  语言支持- 翻译器- Azure AI services | Microsoft Learn
10 月前
善良的番茄  ·  《第五人格》是什么意思什么意思_第五人格_九游手机游戏
1 年前
豪爽的香烟  ·  乐而不淫,哀而不伤- 知乎
1 年前
知识渊博的橡皮擦  ·  美妆集合店“供应链”之渴:管理模式须补课- 21财经
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号