OpenCV(iOS)影象金字塔(13)

一個蘿蔔壹個坑發表於2017-12-27

影象金字塔

影象金字塔是影象中多尺寸表達的一種,最主要的是用於影象的分割。是一種以多解析度來解釋影象的有效但概念簡單的結構。

一幅影象的金字塔式一系列以金字塔形狀排列的,解析度逐步降低且來源於統一張原始圖的影象集合,其通過梯次向下取樣獲得,直到達到某個終止條件才停止取樣。

金字塔的底部是待處理影象的高解析度表示,而頂部是低解析度的近似。

我們將一層一層的影象比喻成金字塔,層級越高,則影象越小,解析度越低。如圖

OpenCV(iOS)影象金字塔(13)

一般有兩種型別的影象金字塔,分別為

(1)高斯金字塔——用來向下取樣,主要的影象金字塔

(2)拉普拉斯金字塔——用來從金字塔底層影象重建上層未取樣的影象,在數字影象處理中即是預測殘差,可以對影象進行最大程度的還原,配合高斯金字塔一起使用。

兩者的主要區別是高斯金字塔是用向下降取樣影象,而拉普拉斯金字塔式用金字塔底層影象中取樣,重建一個影象。

當影象金字塔的上層移動時,尺寸和解析度會降低。

OpenCV 中

對影象向上取樣——pyrUp()

對影象向下取樣 ——pyrDown()

這兩個函式操作是不可逆的,pryUp()不是降低取樣的你操作,這種情況,影象首先在每個維度上擴大為原來的兩倍,新增加的行(偶數行)以0填充,然後給指定的濾波器進行卷積(實際上是一個在每一個維度都擴大為原來兩倍的過濾器)去估計“丟失”畫素的近似值。

pyrDown()是一個會丟失資訊的函式,為了恢復原來更高的解析度的影象,我們要獲得由降低操作丟失的資訊,這些資料和拉普拉斯金字塔就有關了。

高斯金字塔

高斯金字塔是通過高斯平滑和亞取樣獲得一些列下采樣影象,也就是說第K層高斯金字塔通過平滑,亞取樣就可以獲得K+1層高斯影象

OpenCV(iOS)影象金字塔(13)

另外,每一層都按從下到上的次序編號,層級i+1尺寸小於i層

1.對影象的向下取樣

為了獲取層級i+1的金字塔影象,我們採用如下方法

(1)對影象進行高斯核心卷積

(2)將所有的偶數行和列去掉

得到的影象為i+1的影象,影象為原來影象的四分之一,縮小了影象

2.對影象的向上取樣

如果想放大影象,我們需要向上取樣,具體的操作

(1)將影象在每個方向擴大為原來的兩倍,新增的行和列以0填充

(2)使用先前同樣的核心(乘以4)與放大後的影象卷積,獲得‘新增畫素‘的近似值

得到的影象即為放大後的影象,與原來相比會比較模糊

拉普拉斯金字塔

下式是拉普拉斯金字塔第i層的數學定義

OpenCV(iOS)影象金字塔(13)

式中的Gi表示第i層的影象。而UP()操作是將源影象中位置(x,y)的畫素對映到目標影象的(2x+1,2y+1)位置

因此可以直接用OpenCV進行拉普拉斯運算

OpenCV(iOS)影象金字塔(13)

整個拉普拉斯金字塔是通過源影象減去先縮小後再放大的影象的一系列構成。整個拉普拉斯金字塔運算如圖

OpenCV(iOS)影象金字塔(13)

另一個,影象金字塔非常重要的一個應用是影象分割

相關文章