OpenCV for Python之圖像金字塔

Opencv4 官方文檔 : https://docs.opencv.org/4.2.0/
Opencv4 for Python中文文檔點擊下載:OpenCV4 for Python 中文文檔

1 圖像金字塔

兩種圖像金字塔:
1)高斯金字塔
2)拉普拉斯金字塔

2 高斯金字塔

高斯金字塔中的較高級別(低分辨率)是通過刪除較低級別(較高分辨率)圖像中的連續行和列而形成的。然後,較高級別的每個像素由基礎級別的5個像素的貢獻與高斯權重形成。通過這樣做,M×N圖像變成M/2 × N/2圖像。因此面積減少到原始面積的四分之一。它稱爲Octave。當我們在金字塔中越靠上時(即分辨率下降),這種模式就會繼續。同樣,在擴展時,每個級別的面積變爲4倍。我們可以使用cv.pyrDown()和cv.pyrUp()函數找到高斯金字塔
相關api:

cv.pyrDown(src, dst=None, dstsize=None, borderType=None)

參數:

  • src:輸入圖像
  • dst輸出圖像,它與src類型、大小相同
  • dstsize:降採樣之後的目標圖像的大小
  • borderType:圖像邊界的處理方式
    demo:
def pyramid_demo(image):
    level = 4 #自定義lever
    temp = image.copy()
    pyramid_images = []

    for i in range(level):
        dst = cv.pyrDown(temp)
        pyramid_images.append(dst)
        cv.imshow("pyramid_down_"+str(i+1), dst)
        temp = dst.copy()
    return pyramid_images

result:
在這裏插入圖片描述

3 拉普拉斯金字塔

拉普拉斯金字塔由高斯金字塔形成。沒有專用功能。拉普拉斯金字塔圖像僅像邊緣圖像。它的大多數元素爲零。它們用於圖像壓縮。拉普拉斯金字塔的層由高斯金字塔的層與高斯金字塔的高層的擴展版本之間的差形成。拉普拉斯等級的三個等級如下所示(調整對比度以增強內容)
相關api:

cv.pyrUp(src, dst=None, dstsize=None, borderType=None)

參數:

  • src:輸入圖像,圖片必須是滿足2^n這種分辨率
  • dst:輸出圖像,它與src類型、大小相同
  • dstsize:降採樣之後的目標圖像的大小
  • borderType:圖像邊界的處理方式
    demo:
def laplace_demo(image):
    pyramid_images = pyramid_demo(image)
    level = len(pyramid_images)

    for i in range(level-1, -1, -1):
        if i-1 < 0:
            expand  = cv.pyrUp(pyramid_images[i], dstsize=image.shape[:2])
            lpls = cv.subtract(image, expand)
            cv.imshow("laplace_demo"+str(i), lpls)
        else:
            expand = cv.pyrUp(pyramid_images[i], dstsize=pyramid_images[i-1].shape[:2])
            lpls = cv.subtract(pyramid_images[i-1], expand)
            cv.imshow("laplace_demo"+str(i), lpls)

result:
在這裏插入圖片描述

轉載請註明轉自:https://leejason.blog.csdn.net/article/details/106449284

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章