快樂蝦
http://blog.csdn.net/lights_joy/
歡迎轉載,但請保留作者信息
圖像金字塔是圖像中多尺度表達的一種,最初用於機器視覺和圖像壓縮。一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步減少。且來源於同一張原始圖的圖像集合。其通過梯次向下採樣獲得。直到達到某個終止條件才停止採樣。
金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。層級越高,則圖像越小。分辨率越低。
普通情況下有兩種類型的圖像金字塔經常出如今文獻和以及實際運用中。
他們各自是:
高斯金字塔 ( Gaussianpyramid): 用來向下採樣,基本的圖像金字塔
拉普拉斯金字塔 (Laplacianpyramid): 用來從金字塔低層圖像重建上層未採樣圖像,在數字圖像處理中也即是預測殘差。能夠對圖像進行最大程度的還原,配合高斯金字塔一起使用。
兩者的簡要差別:高斯金字塔用來向下降採樣圖像,而拉普拉斯金字塔則用來從金字塔底層圖像中向上採樣重建一個圖像。
圖像金字塔中的向上和向下採樣分別通過OpenCV函數 pyrUp 和 pyrDown 實現。
這里的向下與向上採樣。是對圖像的尺寸而言的(和金字塔的方向相反)。向上就是圖像尺寸加倍,向下就是圖像尺寸減半。
而假設我們按上圖中演示的金字塔方向來理解,金字塔向上圖像事實上在縮小。這樣剛好是反過來了。
但須要注意的是。PryUp和PryDown不是互逆的。即PryUp不是降採樣的逆操作。這樣的情況下,圖像首先在每一個維度上擴大為原來的兩倍,新增的行(偶數行)以0填充。
然后給指定的濾波器進行卷積(實際上是一個在每一個維度都擴大為原來兩倍的過濾器)去預計“丟失”像素的近似值。
用Python試試:
# 圖像金字塔 src = cv2.imread('f:\\tmp\\cotton.jpg') cv2.imshow('src', src) # 下採樣 dst = cv2.pyrDown(src) cv2.imshow('dst', dst) # 上採樣 src1 = cv2.pyrUp(dst) cv2.imshow('src1', src1) cv2.waitKey()
我們的原始圖像:
下採樣后的圖像:
還原后的圖像:
圖像明顯的模糊化。