图像尺寸调整cvResize( )

一、介绍

我们经常会将某种尺寸的图像转换为其他尺寸的图像,如放大或者缩小图像。我们可以用cvReSiZe()函数来放大或缩小图像。该函数可以将源图像精确转换为目标图像的尺寸。如果源图像中设置了ROI,那么cvReSize()将会对ROI区域调整尺寸,以匹配目标图像,同样,如果目标图像中已设置R0I的值,那么cvResize()将会将源图像进行尺寸调整并填充到目标图像的R0I中。

二、函数cvResize( )

void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );
src  输入图像.
dst  输出图像.
interpolation   插值方法:
   CV_INTER_NN - 最近邻插值,
   CV_INTER_LINEAR - 双线性插值 (缺省使用)
   CV_INTER_AREA - 区域插值。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于
CV_INTER_NN 方法
   CV_INTER_CUBIC - 立方插值,即三次样条插值
函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支持 ROI.

三、几种插值的介绍

—般情况下,我们期望源图像和重采样后的目标图像之间的映射尽可能地平滑。参数interpolation控制如何进行映射。当缩小图像时,目标图像的像素会映射为源图像中的多个像素,这时需要进行插值。当放大图像时,目标图像上的像素可能无法在源图像中找到精确对应的像素,也需要进行插值。在任何一种情况下,都有很多种计算像素值的方法。

CV_INTER_NN 是将目标图像各点的像素值设为源图像中与其距离最近的点的像素值

CV_INTER_LINEAR将根据源图像附近的4 个(2X2范围)邻近像素的线性加权计算得出,权重由这4个像素到精确目标点的距离决定。

CV_INTER_AREA用新的像素点覆盖原来的像素点,然后求取覆盖区域的平均值,这种插值算法称为区域插值。

CV_INTER_CUBIC:首先对源图像附近的4x4个邻近像素进行三次样条拟合,然后将目标像素对应的三次样条值作为目标图像对应像素点的值。

 


 

 

 

 

 

 

 

 

你可能感兴趣的:(图像尺寸调整cvResize( ))