目錄
一、分類及概述
1、概述
2、函式
3、理解
二、高斯金字塔(向下采樣)
1、基礎理論(pyrDown()函式)
2、代碼
3、效果
三、拉普拉斯金字塔(向上采樣)
1、基礎理論(pytUp()函式)
2、代碼
3、效果
總代碼
參考資料
一、分類及概述
1、概述
影像金字塔是影像中多尺度表達的一種,最主要用于影像的分割,是一種以多解析度來解釋影像的有效但概念簡單的結構,影像金字塔最初用于機器視覺和影像壓縮,一幅影像的金字塔是一系列以金字塔形狀排列的解析度逐步降低,且來源于同一張原始圖的影像集合,其通過梯次向下采樣獲得,直到達到某個終止條件才停止采樣,金字塔的底部是待處理影像的高解析度表示,而頂部是低解析度的近似,我們將一層一層的影像比喻成金字塔,層級越高,則影像越小,低解析度越,
常見兩類影像金字塔
高斯金字塔 ( Gaussian pyramid): 用來向下降采樣,主要的影像金字塔,
拉普拉斯金字塔(Laplacian pyramid): 用來從金字塔底層影像重建上層未采樣影像(向上采樣),在數字影像處理中也即是預測殘差,可以對影像進行最大程度的還原,配合高斯金字塔一起使用, 拉普拉斯金字塔,
2、函式
對影像向下采樣:pyrDown函式 (層級越低,則影像越小,解析度越低,)
對影像向上采樣:pyrUp函式 (層級越高,則影像越小,解析度越低,)
3、理解
向下采樣:原影像在下面,新影像在上面,新影像是基于原影像采樣,即向下采樣,
向上采樣:原影像在上面, 新影像在下面,新影像是基于原影像采樣,即向上采樣,
向下采樣:

向下采樣:

二、高斯金字塔(向下采樣)
1、基礎理論(pyrDown()函式)
pyrDown( )函式:向下取樣,縮小影像,上層影像更模糊 ,
在影像向下取樣中,一般分兩步:
(1)對影像Gi進行高斯卷積核(高斯濾波);
(2)洗掉所有的偶數行和列,
向下取樣后,原始影像 具有 M
N 個像素,進行向下取樣之后,所得到的影像
+1 具有 M/2
N/2 個像素,只有原圖的四分之一,通過對輸入的原始影像不停迭代以上步驟就會得到整個金字塔,


(高斯濾波,讓臨近像素具有更高的權重,起到模糊的效果)
函式:
dst = pyrDown(src[, dst[, dstsize[, borderType]]])
pyrDown(src, dst1, Size(src.cols / 2, src.rows / 2));
2、代碼
(兩次取樣)
//向下采樣
void Down()
{
//向下采樣
pyrDown(src, dst1, Size(src.cols / 2, src.rows / 2));
imshow("1", dst1);
pyrDown(dst1, dst2, Size(dst1.cols / 2, dst1.rows / 2));
imshow("2", dst2);
}
3、效果

三、拉普拉斯金字塔(向上采樣)
1、基礎理論(pytUp()函式)
pyrUp( )函式:向上采樣,放大影像,下層影像更模糊 ,
前面提到的均是高斯金字塔(使用高斯核),下面介紹拉普拉斯(Laplacian) 金字塔,拉普拉斯(Laplacian) 金字塔是在高斯金字塔的基礎上新的金字塔,



在影像向上取樣是由小影像不斷放影像的程序,它將影像在每個方向上擴大為原影像的2倍,新增的行和列均用0來填充,并使用與“向下取樣”相同的卷積核乘以4,再與放大后的影像進行卷積運算,以獲得“新增像素”的新值,

函式:
dst = pyrUp(src[, dst[, dstsize[, borderType]]])
pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));
2、代碼
(兩次取樣)
//向上采樣
void Up()
{
//向下采樣
pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));
imshow("1", dst1);
pyrUp(dst1, dst2, Size(dst1.cols * 2, dst1.rows * 2));
imshow("2", dst2);
}
3、效果


總代碼
//高斯金字塔(向下)和拉普拉斯金字塔(向上)
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
Mat src, dst1, dst2;
//影像初始化
void Image_Init()
{
src = imread("Resource/test.jpg"); //讀取
if (src.empty())
{
printf("could not load the picture...");
}
}
//向下采樣
void Down()
{
//向下采樣
pyrDown(src, dst1, Size(src.cols / 2, src.rows / 2));
imshow("向下1", dst1);
pyrDown(dst1, dst2, Size(dst1.cols / 2, dst1.rows / 2));
imshow("向下2", dst2);
}
//向上采樣
void Up()
{
//向下采樣
pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));
imshow("向上1", dst1);
pyrUp(dst1, dst2, Size(dst1.cols * 2, dst1.rows * 2));
imshow("向上2", dst2);
}
int main()
{
Image_Init(); //影像初始化
imshow("原圖", src);
Down(); //向下采樣
Up(); //向上采樣
waitKey(0);
return 0;
}
參考資料
https://blog.csdn.net/zhu_hongji/article/details/81536820
https://blog.csdn.net/zaishuiyifangxym/article/details/90167880?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162882139716780366517466%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162882139716780366517466&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-90167880.ecpm_v1_rank_v29&utm_term=%E5%9B%BE%E5%83%8F%E9%87%91%E5%AD%97%E5%A1%94&spm=1018.2226.3001.4187
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293831.html
標籤:其他
