如何在图像之间执行线性插值

时间:2010-08-13 17:25:46

标签: image-processing linear-interpolation

我正在阅读一篇关于在图像合成中使用lerp函数的paper。究竟什么是lerp?如果给你两个图像作为输入,你将如何使用一个合成图像?

3 个答案:

答案 0 :(得分:2)

'lerp'ing只是一种猜测中间价值的方法。例如,如果一个值为10,而下一个值为8,则'lerp'函数可能返回9.有几种方法可以进行估计 - 线性,三角等等。最简单的线性,你只需要{ {1}}距离范围为0到1。

在图像处理中,这是通过像素之间的颜色值来完成的。例如,如果您要放大100%,则可以使用lerp函数来确定在代表部分像素的区域中绘制的内容。

我应该补充一下,我看了那篇文章,它引用了Perlin的噪音。在这种类型的算法中,lerp'ing函数被广泛用于计算存在数据的点之间的值,这些点可以传递到perlin或fractal算法中以生成该中间点的值。

答案 1 :(得分:1)

  

究竟什么是lerp和

lerp(factor,a,b)= factor * a +(1.0 - factor)* b

其中因子在[0,1.0]

范围内

请参阅wikipedia

  

如果给出两个图像作为输入,如何使用一个合成图像?

您需要两个大小相等的源图像(src1,src2)和目标图像(dst)。加上插值因子。

然后对每个像素做(RGB颜色):

dst[x][y].r = lerp(factor, src1[x][y].r, src2[x][y].r)
dst[x][y].g = lerp(factor, src1[x][y].g, src2[x][y].g)
dst[x][y].b = lerp(factor, src1[x][y].b, src2[x][y].b)

答案 2 :(得分:0)

你会如何合成它?通过使用该功能。该函数将为您提供任何像素的给定输入的输出。插值两个图像没有任何意义,你可能有兴趣使用插值来调整大小。它也有一些有趣的属性。 sinc插值器相当于通过频率空间中的砖墙低通滤波器运行图像。

对于两个图像,无论您感兴趣,您的函数都会执行某种加法或平均。如果您正在合成某些内容,则插值等同于通过低通滤波器运行它。例如,如果以不同的速率对两个图像进行采样,并且您希望将一个图像放在另一个图像的顶部,则需要在较高速率的采样图像上插入较低的速率。