如何使用 OpenCV 和 Python 查詢影像的拉普拉斯金字塔?


我們可以從高斯金字塔中形成拉普拉斯金字塔。OpenCV 沒有提供任何構建拉普拉斯金字塔的特定函式。

在拉普拉斯金字塔中,影像看起來只像邊緣影像。拉普拉斯金字塔用於影像壓縮以及影像增強。

拉普拉斯金字塔中的一層是由高斯金字塔中該層與其上一層在高斯金字塔中擴充套件版本之間的差異形成的。

要建立高斯金字塔中的一層,我們應用cv2.pyrDown()cv2.pyrUp() 函式。

步驟

要構建一個三層拉普拉斯金字塔,請按照以下步驟操作:

  • 匯入所需的庫。

  • 載入輸入影像。

  • 然後構建具有三層的高斯金字塔。

  • 對於拉普拉斯金字塔,一層是由高斯金字塔中的一層與其上一層在高斯金字塔中擴充套件版本之間的差異形成的。高斯金字塔中的最後一層在拉普拉斯金字塔中保持不變。

  • 重複步驟 4 以構建拉普拉斯金字塔的所有層。

  • 建立視窗以顯示所有圖層並顯示它們。

在下面的示例中,我們將使用以下影像作為輸入檔案

示例

在下面的 Python3 程式中,我們建立了輸入影像 car.jpg 的三層拉普拉斯金字塔。

import cv2 # Load the image img = cv2.imread('car.jpg') lower = img.copy() # Create a Gaussian Pyramid gaussian_pyr = [lower] for i in range(3): lower = cv2.pyrDown(lower) gaussian_pyr.append(lower) # Last level of Gaussian remains same in Laplacian laplacian_top = gaussian_pyr[-1] # Create a Laplacian Pyramid laplacian_pyr = [laplacian_top] for i in range(3,0,-1): size = (gaussian_pyr[i - 1].shape[1], gaussian_pyr[i - 1].shape[0]) gaussian_expanded = cv2.pyrUp(gaussian_pyr[i], dstsize=size) laplacian = cv2.subtract(gaussian_pyr[i-1], gaussian_expanded) laplacian_pyr.append(laplacian) # create three windows to display three layers of images cv2.namedWindow('Layer 1', cv2.WINDOW_AUTOSIZE) cv2.namedWindow('Layer 2', cv2.WINDOW_AUTOSIZE) cv2.namedWindow('Layer 3', cv2.WINDOW_AUTOSIZE) # display all three layers cv2.imshow('Layer 1',laplacian_pyr[3]) cv2.imshow('Layer 2',laplacian_pyr[2]) cv2.imshow('Layer 3',laplacian_pyr[1]) cv2.waitKey(0) cv2.destroyAllWindows()

輸出

執行上述程式碼後,它將開啟三個輸出視窗,每個視窗顯示拉普拉斯金字塔中的特定層。

請注意,Layer 2 影像是 Layer 1 影像的四分之一。同樣,Layer 3 影像是 Layer 2 影像的四分之一。

更新於: 2022-09-28

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告