从普通图像创建鱼眼效果的算法

Posted

技术标签:

【中文标题】从普通图像创建鱼眼效果的算法【英文标题】:Algorithm for creating fisheye effect from a normal image 【发布时间】:2010-11-25 18:25:16 【问题描述】:

我正在尝试创建一个 OpenGL 片段着色器,它将普通图像转换为包含鱼眼效果的图像。这就是我所说的鱼眼效果 (http://www.marcofolio.net/photoshop/create_a_fish_eye_lens_effect_in_photoshop.html)。

我所说的普通图像是指在 3D 交互式环境中从虚拟相机拍摄的渲染图像,而不是从真实相机拍摄的图像,但我想这在这个问题上并没有太大的区别。

有谁知道 Photoshop 是如何做到的,或者我在哪里可以找到解释算法的材料?

谢谢

【问题讨论】:

【参考方案1】:

在这种情况下,您甚至不需要着色器。从事物的声音来看,您将原始图像作为某种位图。如果是这样,只需将其用作纹理,并将其附加到球体上。

当然,您可以使用一个着色器(或一对着色器,真的),但除非您打算做的比您描述的更多,否则这样做不会给您带来太多好处(如果有的话)。

【讨论】:

源图像不是位图,而是帧缓冲区(FBO)的输出。这有什么不同吗? @Adham:它简化了一些事情。使用 FBO 渲染到纹理,因此不必将位图加载到纹理中,您只需使用 FBO 中的纹理。 (从技术上讲,您也可以使用 FBO 渲染到 renderBuffer,但在这种情况下您可能不想这样做)。 好的,现在我想让图像填满屏幕,而不仅仅是圆形,例如(idea.hosting.lv/a/gfx/quakeshots.html) @Adham:同样的基本想法——只是你的球体比视口大,所以它在边缘被剪裁了。

以上是关于从普通图像创建鱼眼效果的算法的主要内容,如果未能解决你的问题,请参考以下文章

android如何在jpeg上创建鱼眼效果

8.图像视觉 --鱼眼摄像头标定和图像畸变矫正

鱼眼摄像机的技术参数

opencv AKAZE 局部特征匹配算法

IOS – OpenGL ES 图像鱼眼扩散效果 GPUImageBulgeDistortionFilter

鱼眼失真校正