您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“C++ OpenCV圖像上如何實現采樣和降采樣”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C++ OpenCV圖像上如何實現采樣和降采樣”這篇文章吧。
圖像金字塔概念
圖像金字塔是一種以多分辨率來解釋圖像的有效但概念簡單的結構。應用于圖像分割,機器視覺和圖像壓縮。一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,且來源于同一張原始圖的圖像集合。其通過梯次向下采樣獲得,直到達到某個終止條件才停止采樣。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。我們將一層一層的圖像比喻成金字塔,層級越高,則圖像越小,分辨率越低。
常見的兩類圖像金字塔:
高斯金字塔 ( Gaussianpyramid): 用來向下采樣,主要的圖像金字塔
拉普拉斯金字塔 (Laplacianpyramid): 用來從金字塔低層圖像重建上層未采樣圖像,在數字圖像處理中也即是預測殘差,可以對圖像進行最大程度的還原,配合高斯金字塔一起使用。
兩者的簡要區別:高斯金字塔用來向下降采樣圖像,而拉普拉斯金字塔則用來從金字塔底層圖像中向上采樣重建一個圖像。
相關API
上采樣 PyrUp
void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size());
Parameters:
src – Source image.
原圖片
dst – Destination image. It has the specified size and the same type as src .
目標圖片 它有指定的對象和相同的類型和原圖片
dstsize –
Size of the destination image. By default, it is computed as Size(src.cols*2, (src.rows*2) . But in any case, the following conditions should be satisfied:
目標圖像大小。默認情況下,它是計算尺寸((SRC.列+ 1)/ 2、(SRC.行+ 1)/ 2)。但在任何情況下,應滿足以下條件:
The function performs the upsampling step of the Gaussian pyramid construction though it can actually be used to construct the Laplacian pyramid. First, it upsamples the source image by injecting even zero rows and columns and then convolves the result with the same kernel as in pyrDown() multiplied by 4.
該函數執行采樣步驟的高斯金字結構雖然它實際上可以用來構建拉普拉斯金字塔。首先,它下采樣原圖像的行和列,然后用相同的內核卷積的結果作為pyrdown()乘以4。
下采樣 PyrDown
void pyrDown(InputArraysrc, OutputArraydst, const Size&dstsize=Size());
Parameters:
src – Source image.
原圖片
dst – Destination image. It has the specified size and the same type as src .
目標圖片 它有指定的對象和相同的類型和原圖片
dstsize –
Size of the destination image. By default, it is computed as Size((src.cols+1)/2, (src.rows+1)/2) . But in any case, the following conditions should be satisfied:
目標圖像大小。默認情況下,它是計算尺寸((SRC.列+ 1)/ 2、(SRC.行+ 1)/ 2)。但在任何情況下,應滿足以下條件:
The function performs the downsampling step of the Gaussian pyramid construction. First, it convolves the source image with the kernel:
該函數執行高斯金字塔結構下采樣的步驟。首先,它與內核的源圖像進行卷積:
Then, it downsamples the image by rejecting even rows and columns.
然后,它再下采樣圖像的行和列。
先上干貨,演示效果
代碼演示
新建一個項目opencv-0013,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來,這次我們直接顯示兩個相同的圖片,第一個是原圖,第二個是效果圖
代碼里面我們通過了按鍵來控制效果圖采用的上采樣還是下采樣
執行效果
按了U鍵后效果
按了D鍵效果
以上是“C++ OpenCV圖像上如何實現采樣和降采樣”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。