所以我正在做一些与高动态范围成像(HDRI)相关的研究。我已经在 OpenCV 中完成了一些与对齐和重影去除相关的工作(尚未进行实际的 HDR 操作或创建),现在我希望能够开始处理 HDR 图像。

谁能推荐一个好的开源 HDR 库,理想情况下它可以让我执行以下操作:

  • 读取/写入 HDR 格式(我还没有致力于特定格式,所以我愿意在这里接受建议)

  • 组合曝光包围图像以获得 HDR 图像,但以允许我访问创建的相机功能的方式,以便我稍后可以使用它来做一些事情,例如使用不同数量的 EB 图像来贡献 HDR 的不同部分图像。

  • 与 OpenCV 的接口相对容易(详细信息见下文)。

如果它是一个可以轻松与 OpenCV 连接的库,那就太理想了。我认为 OpenCV 目前没有任何 HDR 功能,但是谁能告诉我是否有办法将 HDR 图像转换为 OpenCV 算法(例如修复)可以使用的格式?例如,我知道 OpenCV 可以处理 64 位浮点图像;我可以将 HDR 图像转换为其中一种格式并使用它运行吗?

谢谢。

有帮助吗?

解决方案

嘿,我很久以前就问过这个问题,只是通过谷歌再次偶然发现了我的问题,所以我想我应该提供一个快速更新。

我用 Magick++ 尝试了 Image Magick。经过相当多的工作后,我设法让它以 OpenEXR 格式工作,但始终无法让 Radiance (.hdr) 工作,这很遗憾,因为我在 MATLAB 中做了很多工作,它只读取/写入 HDR 的 Radiance 。

接下来,我尝试了 FreeImage。我能够用它读取/写入 hdr 以及 PFM 格式,但我发现 Fibitmap 格式确实封闭,即很难将数据从 fibitmap 获取到 OpenCV Mat,并且几乎不可能将其返回到 Fibitmap。

最后,我开始使用便携式浮动地图(PFM),并用自己的代码读取和编写它们,因为格式非常简单。同样,这是在研究环境中,因此虽然 PFM 对于长期存储或商业用途来说是一种相当笨拙的格式,但它对于研究目的来说非常好。

其他提示

我正在使用 FreeImage 库加载 HDR 图像(该库支持大多数原始相机格式、浮点图像类型以及 48bpp、64bpp 图像)。

然后我用 C++ 做了一个转换器类,它能够将 FreeImage 类型图像转换为 OpenCV,反之亦然。FreeImage 还具有色调映射转换功能,可将 HDR 图像更改为 32bpp 图像。

我想说转换可能是最简单的。我会看看 imagemagick (http://www.imagemagick.org)用于转换的库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top