Opencv中对于图像的放大与缩小主要有两种类型,一种是图像金字塔pyrUp和pyrDown函数,另外一种是更通用的resize函数允许你指定目标图像的尺寸。
一:图像金字塔
对于函数pyrDown和pyrUp在没有指定缩放的大小时,默认大小为源图像的一半或2倍。
PyrDown的原理是先将图像进行高斯平滑,然后去除偶数行。
PyrUp的原理是图像新插入的偶数行全部为0,然后进行高斯平滑。
二:resize插值
插值的方法目前有三种:最邻近元法、双线性内插法﹑三次内插法,我不想介绍,想了解的可以见这篇blog:http://blog.csdn.net/coy_wang/article/details/5027872.我主要想介绍插值的原理
例如:现在有副图像,三行三列,想将其放大为原来的4/3倍,即四行四列。
然后我们就是往这个空的矩阵中填值,要填的值从哪来的呢?是从源图中来,好,先填写目标图像最左上角的像素,坐标为(0,0),那么该坐标对应源图中的坐标可以由如下公式得到:srcX =dstX*(srcWidth/dstWidth), srcY = dstY*(srcHeight/dstHeight),好了,套用公式(1*0.75, 0*0.75)=(0.75,0)
然后通过以上三种方法求得所对应点(0.75,0)处的像素值即可。
参考blog:
<1>http://www.360doc.com/content/10/0907/17/474846_51910436.shtml