opencv::圖像上采樣和降采樣


 

圖像金字塔概念
    1. 我們在圖像處理中常常會調整圖像大小,最常見的就是放大(zoom in)和縮小(zoom out),盡管幾何變換也可以實現圖像放大和縮小,但是這里我們介紹圖像金字塔
    2. 一個圖像金字塔式一系列的圖像組成,最底下一張是圖像尺寸最大,最上方的圖像尺寸最小,從空間上從上向下看就想一個古代的金字塔。


圖像金字塔概念
    1、高斯金子塔 – 用來對圖像進行降采樣
    2、拉普拉斯金字塔 – 用來重建一張圖片根據它的上層降采樣圖片
    
圖像金字塔概念 – 高斯金字塔
    1、高斯金子塔是從底向上,逐層降采樣得到。
    2、降采樣之后圖像大小是原圖像MxN的M/2 x N/2 ,就是對原圖像刪除偶數行與列,即得到降采樣之后上一層的圖片。
    3、高斯金子塔的生成過程分為兩步:
        - 對當前層進行高斯模糊
        - 刪除當前層的偶數行與列
        即可得到上一層的圖像,這樣上一層跟下一層相比,都只有它的1/4大小。

 

//上采樣(cv::pyrUp) – zoom in 放大
//生成的圖像是原圖在寬與高各放大兩倍
pyrUp(Mat src, Mat dst, Size(src.cols*2, src.rows*2)) 


//降采樣 (cv::pyrDown) – zoom out 縮小
//生成的圖像是原圖在寬與高各縮小1/2
pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2))


高斯不同(Difference of Gaussian-DOG)
    定義:就是把同一張圖像在不同的參數下做高斯模糊之后的結果相減,得到的輸出圖像。稱為高斯不同(DOG)
    高斯不同是圖像的內在特征,在灰度圖像增強、角點檢測中經常用到。

 

 

int main(int argc, char** argv) {

    Mat src, dst;
    src = imread(STRPAHT2);
    if (!src.data) {
        printf("could not load image...");
        return -1;
    }

    // 上采樣/放大2倍
    //pyrUp(src, dst, Size(src.cols * 2, src.rows * 2));
    //imshow("OUTPUT_WIN", dst);
    
    // 降采樣/縮小1/2
    //pyrDown(src, dst, Size(src.cols / 2, src.rows / 2));
    //imshow("sample down", dst);


    // 高斯不同(Difference of Gaussian-DOG)
    // 高斯不同是圖像的內在特征,在灰度圖像增強、角點檢測中經常用到
    Mat gray_src, g1, g2, dogImg;
    cvtColor(src, gray_src, CV_BGR2GRAY);
    GaussianBlur(gray_src, g1, Size(5, 5), 0, 0);
    GaussianBlur(g1, g2, Size(5, 5), 0, 0);
    subtract(g1, g2, dogImg, Mat());
    // 歸一化顯示
    normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);
    imshow("DOG Image", dogImg);
    
    waitKey(0);
    return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM