高斯金字塔與拉普拉斯金字塔(python實現)

2021-10-09 22:53:14 字數 3208 閱讀 7121

一、高斯金字塔:

高斯金子塔的思路非常簡單,就是將原始影象當作金子塔的最底層,然後進行按影象長寬各減少二分之一,面積減少四分之一,進行下取樣。在進行下取樣之前需要進行高斯濾波。

import numpy as np

import cv2

import matplotlib.pyplot as plt

defgaussian

(original_image,down_times=5)

: temp = original_image.copy(

) gaussian_pyramid =

[temp]

for i in

range

(down_times)

: temp = cv2.pyrdown(temp)

return gaussian_pyramid

if __name__ ==

"__main__"

: a = cv2.imread(

"dr_ck_0001.tiff",-

1)gaussian_pyramid = gaussian(a, down_times=5)

plt.subplot(2,

3,1)

, plt.imshow(a, cmap=

'gray'

) plt.subplot(2,

3,2)

, plt.imshow(gaussian_pyramid[2]

, cmap=

'gray'

) plt.subplot(2,

3,3)

, plt.imshow(gaussian_pyramid[4]

, cmap=

'gray'

) plt.show(

)print

(gaussian_pyramid[0]

.shape, gaussian_pyramid[1]

.shape, gaussian_pyramid[5]

.shape)

二、拉普拉斯金字塔

拉普拉斯金子塔可以理解殘差金子塔,它是用來儲存下取樣後的影象於原始影象的差異的。這裡需要進行一下介紹,假如原始影象為 g0,金字塔中任意一層影象為 gi,下取樣後得到 gi+1 = down(gi), 由於影象下取樣之後尺寸發生了變化,若將下取樣後的圖進行上採用得到 up(down(gi)), 但是下取樣後的變化是不可逆的即不可能恢復成原始影象。因此,有部分資訊丟失不能完全恢復成原始影象。

拉普拉斯金字塔就是記錄金字塔每一層下取樣後再上採用回來與該層之間的差異的。

可以記為:li = gi - up(down(gi))

這裡還需要做一些敘述:

下面是拉普拉斯金子塔第i層額數學定義:

拉普拉斯金字塔融合

影象金字塔方法的原理是 將參加融合的的每幅影象分解為多尺度的金字塔影象序列,將低解析度的影象在上層,高解析度的影象在下層,上層影象的大小為前一層影象大小的1 4。層數為0,1,2 n。將所有影象的金字塔在相應層上以一定的規則融合,就可得到合成金字塔,再將該合成金字塔按照金字塔生成的逆過程進行重構,得...

OpenCV 38 拉普拉斯金字塔

對輸入影象實現金字塔的reduce操作就會生成不同解析度的影象 對這些影象進行金字塔expand操作,然後使用reduce減去expand之後的結果就會得到影象拉普拉斯金字塔影象。舉例如下 輸入影象g 0 金字塔reduce操作生成 g 1 g 2 g 3 拉普拉斯金字塔 l0 g 0 expand...

python 金字塔 Python金字塔

托倫,函式中有幾個小錯誤和乙個邏輯問題print y to a 請注意,此函式生成乙個以z開頭的字串,但您希望將字串以相反的方向連線,而您的另乙個函式print a to y 確實停止了 1位置 例如 還要注意,您需要新增新行字元 n 以獲得一些不錯的輸出。在 我的解決方案是 def print a...