小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【OpenCV學(xué)習(xí)筆記】之圖像金字塔(Image Pyramid)

 waston 2020-03-24

一、尺度調(diào)整

      顧名思義,即對(duì)源圖像的尺寸進(jìn)行放大或者縮小變換。在opencv里面可以用resize函數(shù),將源圖像精準(zhǔn)地轉(zhuǎn)化為指定尺寸的目標(biāo)圖像。要縮小圖像,一般推薦使用CV_INETR_AREA(區(qū)域插值)來插值;若要放大圖像,推薦使用CV_INTER_LINEAR(線性插值)。這個(gè)函數(shù)可以用來做簡單的圖像尺度變換。而下面要說的圖像金字塔的用處很大,在特征檢測中都是基礎(chǔ)理論和技術(shù);

Opencv里面的API介紹:

  1. void resize(src,dst,size,int interpolation)
  2. //src:源圖像;dst:目標(biāo)圖像,
  3. //size目標(biāo)圖像大小,可以是指定的尺寸或者放大縮小的比例
  4. //指定插值方式,一般有四種插值方式可供選擇,默認(rèn)為線性插值法

二、圖像金字塔(Image Pyramid)

       圖像金字塔是圖像中多尺度表達(dá)的一種,最主要用于圖像的分割,是一種以多分辨率來解釋圖像的有效但概念簡單的結(jié)構(gòu)。圖像金字塔最初用于機(jī)器視覺和圖像壓縮,一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,且來源于同一張?jiān)紙D的圖像集合。其通過梯次向下采樣獲得,直到達(dá)到某個(gè)終止條件才停止采樣。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。我們將一層一層的圖像比喻成金字塔,層級(jí)越高,則圖像越小,分辨率越低。

常見兩類圖像金字塔

  • 高斯金字塔 ( Gaussian pyramid): 用來向下/降采樣,主要的圖像金字塔

  • 拉普拉斯金字塔(Laplacian pyramid): 用來從金字塔低層圖像重建上層未采樣圖像,在數(shù)字圖像處理中也即是預(yù)測殘差,可以對(duì)圖像進(jìn)行最大程度的還原,配合高斯金字塔一起使用。                                                                                                                          

兩者的簡要區(qū)別:高斯金字塔用來向下降采樣圖像,注意降采樣其實(shí)是由金字塔底部向上采樣,分辨率降低,它和我們理解的金字塔概念相反(注意);而拉普拉斯金字塔則用來從金字塔底層圖像中向上采樣重建一個(gè)圖像。

       要從金字塔第i層生成第i+1層(我們表示第i+1層為G_i+1),我們先要用高斯核對(duì)G_1進(jìn)行卷積,然后刪除所有偶數(shù)行和偶數(shù)列。新得到圖像面積會(huì)變?yōu)樵磮D像的四分之一。按上述過程對(duì)輸入圖像G_0執(zhí)行操作就可產(chǎn)生出整個(gè)金字塔。

     當(dāng)圖像向金字塔的上層移動(dòng)時(shí),尺寸和分辨率就降低。OpenCV中,從金字塔中上一級(jí)圖像生成下一級(jí)圖像的可以用PryDown。而通過PryUp將現(xiàn)有的圖像在每個(gè)維度都放大兩遍。

圖像金字塔中的向上和向下采樣分別通過OpenCV函數(shù) pyrUp pyrDown 實(shí)現(xiàn)。概括起來就是:

  • 對(duì)圖像向上采樣:pyrUp函數(shù)

  • 對(duì)圖像向下采樣:pyrDown函數(shù)

       這里的向下與向上采樣,是對(duì)圖像的尺寸而言的(和金字塔的方向相反),向上就是圖像尺寸加倍,向下就是圖像尺寸減半。而如果我們按上圖中演示的金字塔方向來理解,金字塔向上圖像其實(shí)在縮小,這樣剛好是反過來了。

       但需要注意的是,PryUpPryDown不是互逆的,即PryUp不是降采樣的逆操作。這種情況下,圖像首先在每個(gè)維度上擴(kuò)大為原來的兩倍,新增的行(偶數(shù)行)以0填充。然后給指定的濾波器進(jìn)行卷積(實(shí)際上是一個(gè)在每個(gè)維度都擴(kuò)大為原來兩倍的過濾器)去估計(jì)丟失像素的近似值。PryDown( )是一個(gè)會(huì)丟失信息的函數(shù)。為了恢復(fù)原來更高的分辨率的圖像,我們要獲得由降采樣操作丟失的信息,這些數(shù)據(jù)就和拉普拉斯金字塔有關(guān)系了。

2.1 高斯金字塔(Gaussian pyramid)

         高斯金字塔是通過高斯平滑和亞采樣獲得一系列下采樣圖像,也就是說第K層高斯金字塔通過平滑、亞采樣就可以獲得K+1層高斯圖像,高斯金字塔包含了一系列低通濾波器,其截至頻率從上一層到下一層是以因子2逐漸增加,所以高斯金字塔可以跨越很大的頻率范圍。金字塔的圖像如下:

             

另外,每一層都按從下到上的次序編號(hào), 層級(jí) G_i+1 (表示為 G_i+1尺寸小于第iG_i)。

  • 對(duì)圖像的向下取樣操作,即縮小圖像。

為了獲取層級(jí)為 G_i+1 的金字塔圖像,方法步驟如下:

<1> 對(duì)圖像G_i進(jìn)行高斯內(nèi)核卷積,進(jìn)行高斯模糊;

<2> 將所有偶數(shù)行和列去除。

       得到的圖像即為G_i+1的圖像,顯而易見,結(jié)果圖像只有原圖的四分之一。通過對(duì)輸入圖像G_i(原始圖像)不停迭代以上步驟就會(huì)得到整個(gè)金字塔。同時(shí)我們也可以看到,向下取樣會(huì)逐漸丟失圖像的信息。以上就是對(duì)圖像的向下取樣操作,即縮小圖像。

  • 對(duì)圖像的向上取樣,即放大圖像

方法步驟如下:

<1> 將圖像在每個(gè)方向擴(kuò)大為原來的兩倍,新增的行和列以0填充

<2> 使用先前同樣的內(nèi)核(乘以4)與放大后的圖像卷積,獲得 “新增像素”的近似值

       得到的圖像即為放大后的圖像,但是與原來的圖像相比會(huì)發(fā)覺比較模糊,因?yàn)樵诳s放的過程中已經(jīng)丟失了一些信息,如果想在縮小和放大整個(gè)過程中減少信息的丟失,這些數(shù)據(jù)形成了拉普拉斯金字塔。

2.2 拉普拉斯金字塔(Laplacian pyramid)

拉普拉斯金字塔第i層的數(shù)學(xué)定義:

       式中的表示第i層的圖像。而UP()操作是將源圖像中位置為(x,y)的像素映射到目標(biāo)圖像的(2x+1,2y+1)位置,即在進(jìn)行向上取樣。符號(hào)表示卷積,為5x5的高斯內(nèi)核。

pryUp,就是在進(jìn)行上面這個(gè)式子的運(yùn)算。因此,可以直接用OpenCV進(jìn)行拉普拉斯運(yùn)算:

 

將降采樣之后的圖像再進(jìn)行上采樣操作,然后與之前還沒降采樣的原圖進(jìn)行做差得到殘差圖!為還原圖像做信息的準(zhǔn)備!

也就是說,拉普拉斯金字塔是通過源圖像減去先縮小后再放大的圖像的一系列圖像構(gòu)成的。保留的是殘差!為圖像還原做準(zhǔn)備!

整個(gè)拉普拉斯金字塔運(yùn)算過程可以通過下圖來概括:

                    

所以,我們可以將拉普拉斯金字塔理解為高斯金字塔的逆形式。

另外再提一點(diǎn),關(guān)于圖像金字塔非常重要的一個(gè)應(yīng)用就是實(shí)現(xiàn)圖像分割。圖像分割的話,先要建立一個(gè)圖像金字塔,然后在G_iG_i+1的像素直接依照對(duì)應(yīng)的關(guān)系,建立起父與子關(guān)系。而快速初始分割可以先在金字塔高層的低分辨率圖像上完成,然后逐層對(duì)分割加以優(yōu)化。

注意:上采樣和下采樣是非線性處理,不可逆,有損的處理!

2.3 DOG金字塔(Difference of Gaussian-DOG)

 通俗描述:就是把同一張圖像在不同的參數(shù)下做高斯模糊之后的結(jié)果相減,得到的輸出圖像。稱為高斯不同(DOG)。高斯不同是圖像的內(nèi)在特征,在灰度圖像增強(qiáng)、角點(diǎn)檢測中經(jīng)常用到

理論描述:差分金字塔,DOG(Difference of Gaussian)金字塔是在高斯金字塔的基礎(chǔ)上構(gòu)建起來的,其實(shí)生成高斯金字塔的目的就是為了構(gòu)建DOG金字塔。DOG金字塔的第1組第1層是由高斯金字塔的第1組第2層減第1組第1層得到的。以此類推,逐組逐層生成每一個(gè)差分圖像,所有差分圖像構(gòu)成差分金字塔。概括為DOG金字塔的第0組第l層圖像是由高斯金字塔的第0組第i+1層減第0組第i層得到的。

DOG金字塔的構(gòu)建可以用下圖描述:

        

每一組在層數(shù)上,DOG金字塔比高斯金字塔少一層。后續(xù)Sift特征點(diǎn)的提取都是在DOG金字塔上進(jìn)行的。

//金字塔(圖像的上采樣和降采樣)
//圖像金字塔:圖像金字塔是一種以多分辨率來解釋圖像的有效但概念簡單的結(jié)構(gòu)。應(yīng)用于圖像分割,機(jī)器視覺和圖像壓縮。一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,
//且來源于同一張?jiān)紙D的圖像集合。其通過梯次向下采樣獲得,直到達(dá)到某個(gè)終止條件才停止采樣。金字塔的底部是待處理圖像的高分辨率表示,而頂部是低分辨率的近似。
//我們將一層一層的圖像比喻成金字塔,層級(jí)越高,則圖像越小,分辨率越低。
 
#include "stdafx.h"
#include<opencv2/opencv.hpp>
#include<iostream>
 
using namespace cv;
 
int main(int argc, int argv)
{
    Mat src, dst, dst1;
    src = imread("C:\\Users\\59235\\Desktop\\imag\\girl1.jpg");
    if (!src.data)
    {
        printf("could not load image...\n");
    }
    namedWindow("input", CV_WINDOW_AUTOSIZE);
    imshow("input", src);
 
    //上采樣(zoom in 放大)
    pyrUp(src, dst, Size(src.cols * 2, src.rows * 2));
    imshow("zoom in", dst);
    //降采樣(zoom out 縮?。?br>    pyrDown(src, dst1, Size(src.cols / 2, src.rows / 2));
    imshow("zoom out", dst1);
 
    /*
    dst = src;
    dst1 = dst;
    /// 循環(huán)
    while (true)
    {
    int c;
    c = waitKey(50);
    if ((char)c == 27)
    {
    break;
    }
    if ((char)c == 'u')
    {
    pyrUp(dst, dst1, Size(dst.cols * 2, dst.rows * 2));
    printf("** Zoom In: Image x 2 \n");
    //imshow("Zoom In", dst1);
    }
    else if ((char)c == 'd')
    {
    pyrDown(dst, dst1, Size(dst.cols / 2, dst.rows / 2));
    printf("** Zoom Out: Image / 2 \n");
    //imshow("Zoom Out", dst1);
    }
    imshow("Zoom Out", dst1);
    dst = dst1;
    }
    return 0;
    */
 
 
    //高斯不同DOG(different of gaussian)
    //就是把同一張圖像在不同的參數(shù)下做高斯模糊之后的結(jié)果相減,得到的輸出圖像;高斯不同是圖像的內(nèi)在特征,在灰度圖像增強(qiáng)、角點(diǎn)檢測中經(jīng)常用到。
    Mat gray_src, dst2, dst3, dog_Image;
    cvtColor(src, gray_src, CV_BGR2GRAY);
    GaussianBlur(gray_src, dst2, Size(3, 3), 0, 0);
    imshow("dst2..", dst2);
    GaussianBlur(dst2, dst3, Size(3, 3), 0, 0);
    imshow("dst3..", dst3);
    subtract(dst2, dst3, dog_Image);
 
    //歸一化顯示
    normalize(dog_Image, dog_Image, 255, 0, NORM_MINMAX);
    //src輸入;dst輸出,支持原地運(yùn)算;alpha:range normalization模式的最小值;beta:range normalization模式的最大值,不用于norm normalization(范數(shù)歸一化)模式。
    //normType
    //歸一化的類型,可以有以下的取值:
    //NORM_MINMAX : 數(shù)組的數(shù)值被平移或縮放到一個(gè)指定的范圍,線性歸一化,一般較常用。
    //NORM_INF : 此類型的定義沒有查到,根據(jù)OpenCV 1的對(duì)應(yīng)項(xiàng),可能是歸一化數(shù)組的C - 范數(shù)(絕對(duì)值的最大值)
    //NORM_L1 : 歸一化數(shù)組的L1 - 范數(shù)(絕對(duì)值的和)
    //NORM_L2 : 歸一化數(shù)組的(歐幾里德)L2 - 范數(shù)
 
    namedWindow("result", CV_WINDOW_AUTOSIZE);
    imshow("result", dog_Image);
    waitKey(0);
    return 0;
}

效果圖:

1降采樣:

2上采樣

分析: 圖像經(jīng)過一次下采樣后尺寸變?yōu)樵瓉淼?/4,由高分辨率變?yōu)榈头直媛实膱D像;而且由于下采樣過程會(huì)丟失信息,所以對(duì)降采樣后的圖像進(jìn)行上采樣重建時(shí)會(huì)發(fā)現(xiàn),重建后的圖像變得模糊。

3 拉普拉斯金字塔

分析:拉普拉斯金字塔代表著高斯金字塔進(jìn)行下采樣時(shí)丟失的信息。

4 高斯不同                                                     (差分金字塔第一組第一層)

                                                                  (差分金字塔第一組第二層)

分析:同一張圖像在不同的參數(shù)下做高斯模糊之后的結(jié)果相減,得到的輸出圖像,即高斯不同圖像。SIFT特征點(diǎn)的提取都是在DOG金字塔上進(jìn)行的。     

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多