目录
一,图像缩放
图像的缩放可以使用图像金字塔,也可以使用图像插值,每一种算法都既可以用于放大,也可以用于缩小。
二,图像金字塔(pyrUp、pyrDown)
1,缩放
用pyrUp实现放大2倍,pyrDown实现缩小2倍
string path = "D:\im.jpg";
Mat image = imread(path, IMREAD_COLOR);
namedWindow("1", WINDOW_GUI_NORMAL);
Mat image2, image3;
pyrUp(image, image2);
pyrDown(image, image3);
imshow("1", image);
imshow("2", image2);
imshow("3", image3);
waitKey(0);
结果:
如果进行多次的放大缩小:
Mat image2, image3;
pyrUp(image, image2);
pyrDown(image2, image3);
pyrUp(image3, image2);
pyrDown(image2, image3);
pyrUp(image3, image2);
pyrDown(image2, image3);
imshow("1", image);
imshow("3", image3);
结果:
很明显,多次放大缩小之后会越来越模糊。
2,高斯缩放
缩小:
首先进行高斯模糊卷积(Convolution)_nameofcsdn的博客-CSDN博客
然后把所有的偶数行和偶数列都删掉,就得到了缩小2倍的图片。
放大:
首先隔行隔列插入新的行列,值为0,然后进行高斯模糊,最后所有像素乘以4倍。
pyrUp、pyrDown的实现就是高斯缩放。
3,高斯金字塔
利用高斯缩小,不断的缩小2倍,直到变成满足条件的尺寸,中间过程组织起来共同构成一个金字塔: