pyrUp(图像升采样)

概念

图像升采样其实就是对图像进行放大,这里涉及到图像金字塔的概念,高斯金字塔和拉普拉斯金字塔使我们经常遇到的。
●高斯金字塔:向下降采样图像
●拉普拉斯金字塔:从低层图像中向上采样重建图像。
具体过程如下:
●高斯金字塔:金字塔从i层生成第i+1层,我们要先用高斯核对Gi进行卷积,然后,删除所有偶数行和偶数列。这样,新得到的图像面积会变为源图像的四分之一。循环上述过程,即可产生整个金字塔。
●拉普拉斯金字塔:图像首先在每个维度上扩大为原来的两倍,新增的行以0填充,然后给指定的滤波器进行卷积(实际上是一个在每一维上都扩大为2倍的过滤器)去估计“丢失”像素的近似值。得到后的图像与原来的图像相比较会发觉比较模糊,丢失了一些信息。为了恢复出原来的图像,我们需要获得这些丢失的信息,这些信息就构成了拉普拉斯金字塔。

效果图对比

pyrUp(图像升采样)_第1张图片

函数讲解

●函数原型
○c++

void pyrUp( InputArray src, OutputArray dst,
                         const Size& dstsize = Size(), int borderType = BORDER_DEFAULT )

○Android

pyrUp(Mat src, Mat dst, Size dstsize, int borderType)

●参数解释
○src:源图像Mat对象
○dst:目标图像Mat对象
○dstsize :目标图像的大小,经测试只能输入为源图像的2倍,如想继续放大可在放大的基础上进行。
○borderType :边缘类型,默认不填即可。

函数使用

●c++中

#include
using namespace cv;
int main() {

    Mat src = imread("C:/Users/Administrator/Desktop/nezha.png");//引入源图像
    if (src.empty()) {
        return -1;
    }
    imshow("源图像",src);//显示源图像
    Mat upDst;
    pyrUp(src,upDst,Size(src.cols*2,src.rows*2));//进行升采样
    imshow("操作后图像", upDst);//显示操作后的图像
    waitKey(0);
    return 0;
}

●Android中

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_beauty);//获取源图像Bitmap对象
Mat src = new Mat();
Mat dst = new Mat();
Utils.bitmapToMat(bitmap,src);//Bitmap转换为Mat对象
Imgproc.pyrUp(src,dst,new Size(src.cols()*2,src.rows()*2));//图像升采样
Utils.matToBitmap(dst,bitmap);//Mat转换为Bitmap对象
imageView.setImageBitmap(bitmap);

你可能感兴趣的:(pyrUp(图像升采样))