【发布时间】:2012-01-12 14:12:36
【问题描述】:
我正在寻找一些算法来为图像添加凸面镜效果和凹面镜效果。我还想知道如何有效地做到这一点:将算法应用于图像数据或用包含效果的透明图像覆盖它。但我认为第二种选择不适用于这种情况。
【问题讨论】:
标签: c algorithm image-processing effects
我正在寻找一些算法来为图像添加凸面镜效果和凹面镜效果。我还想知道如何有效地做到这一点:将算法应用于图像数据或用包含效果的透明图像覆盖它。但我认为第二种选择不适用于这种情况。
【问题讨论】:
标签: c algorithm image-processing effects
如果您是手动执行而不是使用硬件原语,那么bresenham interpolation algorithm(通常用于画线)是可行的方法:错误传播比其他更复杂的方法更有效。
Bresenham 所做的只是插值。不要错过在其他地方使用其高效设计的机会(线条绘制的斜率计算只是插值的众多应用之一:您可以插值另一个维度:2D、3D、透明度、反射、颜色等)。
25 年前,我记得我曾用它来调整位图大小,甚至在实时 3D 引擎中进行纹理映射!那是在图形加速视频板花费一大笔钱的时候......
【讨论】:
CImg 库有一个鱼眼样本,在 examples\CImg_demo.cpp 中。核心算法看起来非常简单(而且速度很快,就像这个库一样)。我认为它是真实光学效果的近似值,但可以修改以处理凸面镜像。我不知道它是否可以扩展到处理“负”曲率。
【讨论】:
您可以使用pre-calculated sin() table 并插入值以匹配位图的大小。通过使用偏移量或更大的表来实现相反的效果。
让我想起了 80 年代 DOS 演示的(伟大时期)...
【讨论】: