f0r*_*fun 7 c++ interpolation cuda image-processing image-resizing
我是一名学生,我的任务是通过调用CUDA的并行性来优化图像的双线性插值.
图像以24位.bmp格式给出.我已经有一个.bmp的阅读器,并已将像素存储在一个数组中.
现在我需要在阵列上执行双线性插值.我不明白它背后的数学(即使在浏览了wiki文章和其他Google结果之后).因此,我无法提出算法.
是否有人可以帮助我链接到一维阵列上现有的双线性插值算法?或者也许链接到一个开源图像处理库,利用双线性和双三次插值来缩放图像?
nsa*_*ers 37
理解双线性插值的最简单方法是理解1D中的线性插值.
这第一个数字应该给你回忆中学数学.鉴于一些位置一个在我们想知道F(一),我们采取了邻近的"已知"值,并在两者之间装线.

所以我们只使用旧的中学方程式y = mx + b和y-y1 = m(x-x1).没有什么花哨.
我们基本上将这个概念延伸到2-D以获得双线性插值.我们可以通过三次插值来解决为任何a,b找到f(a,b)的问题.仔细研究下一个数字.不要被所有标签吓倒.它实际上非常简单.

对于双线性插值,我们再次使用相邻点.现在有四个,因为我们是二维的.诀窍是一次一维地攻击问题.
我们将(a,b)投射到两侧并首先计算两个(一维!)插值线.
现在只有最后一步.取你计算的两个点,f(a,y j)和f(a,y j + 1),并在它们之间插入一条线.那是蓝色的,在图中从左到右,经过f(a,b).沿着最后一行插值可以得到最终答案.
我将为你留下2-D案例的数学.如果你从图表中工作并不难.自己完成它将帮助你真正了解正在发生的事情.
最后一点注意事项,前两个插值选择哪一侧并不重要.您可以选择顶部和底部,然后在这两者之间完成第三条插补线.答案是一样的.