圖像金字塔概念 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; }