1.什么是圖像金字塔
圖像金字塔是一種多尺度圖像表示方法,通過對原始圖像進行下采樣(縮小)和上采樣(放大),生成一系列不同分辨率的圖像集合,形似 “金字塔”(底部是高分辨率原始圖像,向上逐漸變為低分辨率圖像)。
2.核心作用
多尺度分析:不同分辨率的圖像適用于檢測不同大小的目標(如大目標在低分辨率圖像中更易識別,小目標需要高分辨率)。
圖像融合:結合不同尺度的圖像信息(如拉普拉斯金字塔可無縫融合兩張圖像的細節)。
降維與壓縮:低分辨率圖像數據量小,便于快速處理和存儲。
特征提取:在多個尺度上提取特征(如 SIFT 特征依賴金字塔實現尺度不變性)。
3.常見的2種操作方法
高斯金字塔,拉普拉斯金字塔
(1)高斯金字塔
是最常見的類型,通過下采樣和上采樣操作生成,核心是高斯模糊(平滑)和降采樣。
下采樣(縮小圖像):cv2.pyrDown()
上采樣(放大圖像):cv2.pyrUp()
如代碼示例:
img=cv2.imread('aiye.jpg')
def cv_show(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()
cv_show('aiye',img)
print(img.shape)
#高斯金字塔(向下采樣(圖像縮小),向上采樣(圖像放大,矩陣添0))up1=cv2.pyrUp(img)
cv_show('up1',up1)
print(up1.shape)down1=cv2.pyrDown(img)
cv_show('down1',down1)
print(down1.shape)'''
先執行上采樣再執行下采樣,或者先下后上都是無法恢復到原圖的
'''
(2)拉普拉斯金字塔
基于高斯金字塔構建,用于保留圖像下采樣過程中丟失的細節,核心是 “原始圖像與上采樣后的下采樣圖像的差值”。
計算方式:
公式:Li?=Gi??pyrUp(pyrDown(Gi)?)
如代碼示例:
up2=cv2.pyrUp(down1)
'''
img 和 up2 的尺寸不同(一個是 (299,299,3),另一個是 (300,300,3)),無法進行減法運算(lap=img-up2),
則先讓兩個圖像的尺寸大小一致了再進行減法。要么改img要么改up2
'''
up2_rs=cv2.resize(up2,(img.shape[1],img.shape[0]))
lap=img-up2_rs
cv_show('lap',lap)
print(lap.shape)