求双立方插值(非spline)的实例代码,多谢!

robust2009 2009-01-15 07:20:56
偶是图像处理的新手,最近用二次线性插值实现动态图像放大,静态时感觉还可以了。

只是在视频播放时如果突然停下就会导致暂停的画面锯齿严重。

所以试图通过用双立方插值来实现放大,期望能改善这个锯齿。其他方法由于种种限制暂不考虑。

在网上搜索了很久,包括这里,但是还是觉得没有什么头绪。还恳请哪位有源码,只是参考一下实现原理。因为最终实现不是用软件,是逻辑语言来做的。多谢!

发到邮箱也可以,呵呵。tianyee@qq.com
...全文
548 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
海涵德 2010-05-19
  • 打赏
  • 举报
回复
现在我明白了,这是我本科时在计算数学中学到的计算方法,我的专业就是数学系计算数学,多年不用了快忘光了。
Normandie007 2010-05-19
  • 打赏
  • 举报
回复
双三次插值是二维空间中最常用的插值方法。在这种方法中,函数 f 在点 (x, y) 的值可以通过矩形网格中最近的十六个采样点的加权平均得到,在这里需要使用两个多项式插值三次函数,每个方向使用一个。

通过双三次插值可以得到一个连续的插值函数,它的一阶偏导数连续,并且交叉导数处处连续。
双三次插值通过下式进行计算:
a00 + a10x + a01y + a20x2 + a11xy + a02y2 + a21x2y + a12xy2 + a22x2y2 + a30x3 + a03y3 + a31x3y + a13xy3 + a32x3y2 + a23x2y3 + a33x3y3

计算系数 aij 的过程依赖于插值数据的特性。如果已知插值函数的导数,常用的方法就是使用四个顶点的高度以及每个顶点的三个导数。一阶导数 h'x 与 h'y 表示 x 与 y 方向的表面斜率,二阶相互导数 h''xy 表示同时在 x 与 y 方向的斜率。这些值可以通过分别连续对 x 与 y 向量取微分得到。对于网格单元的每个顶点,将局部坐标(0,0, 1,0, 0,1 和 1,1) 带入这些方程,再解这 16 个方程。

PS:
如果你实现了双线性差值算法,相信你实现这个双三次插值也不会很困难。我以前因为考虑到双三次插值的系统开销太大也就放弃了,转而求其次用了双线性插值。
呵呵,考验你高等数学水平的时候了~~
海涵德 2010-05-16
  • 打赏
  • 举报
回复
我想在视频播放时出现的混淆(马赛克)现象应该和插值无关,如果你的插值算法与视频播放有关,也就是说是跟着视频播放动态产生的,那么还会有点关系,但是这已经很复杂了。另外你说的双立方插值算法,我有些搞不懂,在图形学中我只知道spline、bspline或cubic曲线拟合算法等。
iamshuai 2010-05-16
  • 打赏
  • 举报
回复
我也在弄这方面的内容,希望能得到交流
robust2009 2009-01-18
  • 打赏
  • 举报
回复
呵呵,是的。昨天在网上搜索到了matlab的程序,还搜索到了一些论文。但是对于楼上说的工具箱我还真不太了解,有时间会研究一下。

通过这几天的研究,对双立方有了一点认识。但是因为是用硬件来实现,没有软件实现起来那么方便。看了几篇论文,在用硬件实现时基本上是采用一种简

化的算法,简单的说就是采用4个采样点而不是16个采样点。现在对双立方的插值系数还有疑惑,论文里说都是查表方式来完成的。我现在还没有想清楚,

插值系数是如何确定的,跟二次插值一样的吗?明天继续研究一下。

多谢楼上的热心!
Show_Mike 2009-01-17
  • 打赏
  • 举报
回复
双立方算法,建议到matlab工具箱去找,可以很容易地转化为VC.

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧