天天看點

"大腦"生長系列(六)

上一講是如何改變圖像的分辨率和對比度,這一講介紹一個聽起來高大上的功能,圖像金字塔,個人了解圖像金字塔本質上也是圖像大小的改變,隻是改變的方式和算法有所不同。OpenCV實作了兩種圖像金字塔的功能,一種高斯金字塔,一種拉普拉斯金字塔。

高斯金字塔:一種用來向下縮小的圖像金字塔。

拉普拉斯金字塔:一種向上來放大的圖像金字塔。

OpenCV提供的圖像金字塔的接口如下:

高斯金字塔:

void pyrDown( InputArray src,

OutputArray dst,

const Size& dstsize = Size(),

int borderType = BORDER_DEFAULT );

參數說明:

src: 源圖像

dst: 目标圖像

dstsize: 調整後的目标大小,預設成倍縮放

borderType: 邊緣像素處理方式

拉普拉斯金字塔

void pyrUp( InputArray src,

OutputArray dst,

const Size& dstsize = Size(),

int borderType = BORDER_DEFAULT );

參數說明:

src: 源圖像

dst: 目标圖像

dstsize: 調整後的目标大小,預設成倍縮放

borderType: 邊緣像素處理方式

試試這段代碼,了解會更深刻

int main(int argc, char *argv[])
{
 Mat src = imread("2.jpg");
 Mat gsrc;
 Mat gsrc1;
 Mat lsrc;
 Mat lsrc1;
 pyrDown(src, gsrc);
 pyrDown(gsrc, gsrc1);
 pyrUp(src, lsrc);
 pyrUp(lsrc, lsrc1);
 namedWindow("src");
 moveWindow("src", 0, 0);
 namedWindow("gsrc");
 moveWindow("gsrc", 512, 0);
 namedWindow("gsrc1");
 moveWindow("gsrc1", 768, 0);
 namedWindow("lsrc");
 moveWindow("lsrc", 0, 512);
 namedWindow("lsrc1");
 moveWindow("lsrc1", 512, 512);
 imshow("src", src);
 imshow("gsrc", gsrc);
 imshow("gsrc1", gsrc1);
 imshow("lsrc", lsrc);
 imshow("lsrc1", lsrc1);
 waitKey(0);
 return 0;
}           

複制

實際效果圖

"大腦"生長系列(六)

拉普拉斯放大後太大,此處放不下。