【发布时间】:2012-09-16 03:00:06
【问题描述】:
我已经实现了一种使用纯 C++ 进行无缝混合的图像混合方法。现在我想将此代码转换为 GPU(使用移动设备的 OpenGL ES 2 着色器)。基本上,该方法为每个图像创建高斯和拉普拉斯金字塔,然后从低分辨率到顶部组合(另请参见 Burt 等人 1983 年的论文“拉普拉斯金字塔作为紧凑图像代码”)。
我的问题是拉普拉斯金字塔等级可以有负值,但我的设备不支持浮点或整数类型纹理(例如使用 ORB_texture_float 扩展)。
我已经在寻找有关基于 GPU 的金字塔的论文,但没有找到真正有用的东西。
- 如何为 GPU 高效地实现这样的金字塔?
- 是否可以计算高斯/拉普拉斯金字塔级别而不遍历前面的级别?
问候,
编辑 似乎没有“好”的方法可以在 GPU 上完全计算拉普拉斯金字塔,除了使用不支持有符号类型(例如 ARB_texture_float)或大于字节的类型的两个通道(一个用于符号,一个用于值)当图像的数据范围在 [0..255] 之间时。我的拉普拉斯金字塔在带有 ARB_texture_float 扩展的 GPU 上完美运行,但没有扩展(以及一些压缩范围的调整),由于范围压缩,金字塔会“出错”。
【问题讨论】:
标签: image-processing shader opengl-es-2.0 gaussian laplacian