1. 程式人生 > >opencv中的影象金字塔介紹

opencv中的影象金字塔介紹

測試程式將在下篇部落格中給出: 先大體介紹下影象金字塔
主要是瞭解圖片的的縮放:
1.學習使用opencv的pyrUp和pyrDown,對影象進行向上向下取樣,
2.瞭解專用於縮放影象尺寸的resize()函式的用法,兩者的用法君一樣,就是對影象進行縮放的操作。
影象金字塔是影象中多尺度表達的一種,最主要的是用於影象的分割,是一種以多解析度來解釋影象的有效但概念簡單的結構,影象金字塔最初用於機器視覺和影象壓縮,一幅影象的金字塔是一系列以金字塔形狀排列的,解析度逐步降低,但來源於一幅圖片,其通過梯度向下取樣獲得直到到達某個終止條件才停止取樣。層級越高則影象越小,解析度越低,
1.高斯金字塔:用來向下取樣,主要的影象金字塔。
2.拉普拉斯金字塔:從底層向上取樣,重建一個影象,對影象進行最大程度的還原,
對影象進行向上取樣-pyrUp函式
對影象進行向下取樣-pyrDown均是針對影象的尺寸來說的,向下就是尺寸減半,向上就是尺寸加倍注意不是互逆的,
pryUp影象首先在每個維度上擴大為原來的2倍,新增加的行(偶數行)用0來填充,然後給指定的濾波器進行卷積,(實際上是一個在每個維度上都擴大為原來的兩倍的濾波器)去估計丟失畫素的近似值

高斯金字塔:
1.對影象的向下取樣:
為了獲得層級為Gi+1的金字塔影象:1.對影象Gi進行高斯核心卷積
2.將所有的偶數的行和列都去除 就是縮小影象會丟失影象的資訊 縮小影象變成原來影象的4分之1
2.對影象的向上取樣:
1.將影象在每個方向上都擴大為原來的兩倍新增加的行和列以0來填充
2.使用先前的核心(乘以4)與放大後的影象進行卷積獲得新增畫素的近似值
得到的影象就是放大後的影象,但是與原來的影象相比會比較模糊
影象金字塔非常重要的應用就是影象分割,影象分割的話先要建立一個影象金字塔,然後對層級關係建立起父與子的關係 分割–優化
3.尺寸調整:resize()函式是專門用來調整影象大小的函式

函式的原型:C++: void resize(InputArray src,OutputArray dst,size dsize,double fx=0,double fy=0,int interpolation=INTER_LINEAR)
第一個引數是輸入影象
第二個引數是輸出影象,其大小由dsize 或者用src.size()計算出來
第三個引數,Size型別的dsize,輸出影象的大小為dsize=Size(round(fxsrc.cols),round(fxsrc.rows));其中dsize fx fy都不能為0
第四個引數:沿水平軸方向縮放的係數
第五個引數:沿垂直方向上縮放的係數
第六個引數用於指定插值得方式可選用的插值方式有:
1.INTER_NEAREST-最鄰近插值
2.INTER_LINEAR-線性插值
3.INTER_AREA-區域插值
4.INTER_CUBIC-三次樣條插值
5.INTER_LANCZOS4-Lanczos插值
縮小影象一般用INTER_AREA插值 放大影象一般用INTER_LINEAR線性插值的用法:
其中的縮放係數有時候可以不用列出來,系統會自動計算出來