opencv-圖像上采樣和降采樣


 

 

 

圖像金字塔

      圖像金字塔是圖像多尺度表達的一種,是一種以多分辨率來解釋圖像的有效但概念簡單的結構。一幅圖像的金字塔是一系列以金字塔形狀排列的分辨率逐步降低,且來源於同一張原始圖的圖像集合。其通過梯次向下采樣獲得,直到達到某個終止條件才停止采樣。我們將一層一層的圖像比喻成金字塔,層級越高,則圖像越小,分辨率越低。

降采樣,即是采樣點數減少。對於一幅N*M的圖像來說,如果降采樣系數為k,則即是在原圖中 每行每列每隔k個點取一個點組成一幅圖像。降采樣很容易實現. 
升采樣,也即插值。對於圖像來說即是二維插值。如果升采樣系數為k,即在原圖n與n+1兩點之間插入k-1個點,使其構成k分。二維插值即在每行插完之后對於每列也進行插值。 
插 值的方法分為很多種,一般主要從時域和頻域兩個角度考慮。對於時域插值,最為簡單的是線性插值。除此之外,Hermite插值,樣條插值等等均可以從有關 數值分析書中找到公式,直接代入運算即可。對於頻域,根據傅里葉變換性質可知,在頻域補零等價於時域插值。所以,可以通過在頻域補零的多少實現插值運 算。

高斯金字塔采樣相關API
(1)上采樣(cv::pyrUp) – 放大(zoom in),向底端發展

pyrUp(Mat src, Mat dst, Size(src.cols*2, src.rows*2)); //生成的圖像是原圖在寬與高各放大兩倍

pyrUp(src, dst, Size(src.cols * 2, src.rows * 2)); //上采樣


(2)降采樣 (cv::pyrDown) – 縮小(zoom out),向頂端發展

pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2)); //生成的圖像是原圖在寬與高各縮小1/2

pyrDown(src, dst2, Size(src.cols / 2, src.rows / 2)); //降采樣

高斯金字塔–降采樣

    • 高斯金字塔從底向上,逐層降采樣取得,不能跨域越層;
    • 對當前層刪除偶數行與列就得到降采樣后上一層的圖片;
    • 降采樣后的圖像大小是之前圖像大小的1414;
    • 高斯金字塔生成步驟: 
      • ①進行高斯模糊;
      • ②刪除偶數行與列。

 

 

 

#include <opencv2/opencv.hpp>
#include <iostream> 
#include <math.h>
using namespace cv;      //使用cv命名空間
int main(int argc, char** argv) {    //argc 表示命令行輸入參數的個數(以空白符分隔),argv中存儲了所有的命令行參數
	Mat src, dst, dst2;
	src = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\091.jpg");
	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);
	/*上采樣*/
	pyrUp(src, dst, Size(src.cols * 2, src.rows * 2)); //上采樣
	imshow("UP image", dst);
	/*降采樣*/
	pyrDown(src, dst2, Size(src.cols / 2, src.rows / 2)); //降采樣
	imshow("DOWN image", dst2);
	/*高斯不同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()); //相減g1-g2(低的-高的),高斯分差得出的灰度值很低,圖像很暗
	normalize(dogImg, dogImg, 255, 0, NORM_MINMAX); //歸一化顯示(標准化小於0就是0,大於255就是255),最大值255,最小值0,最大最小類型
	imshow("DOG image", dogImg);
	waitKey(0);
	return 0;
}  

參考文章:

https://blog.csdn.net/qq_25343557/article/details/78694722

https://zhuanlan.zhihu.com/p/40489916


免責聲明!

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



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