所以我正在做一些与高动态范围成像(HDRI)相关的研究。我已经在OpenCV中做了一些与对齐和重影去除相关的工作(还没有实际的HDR操作或创建),现在我希望能够开始使用HDR图像。
任何人都可以推荐一个优秀的开源HDR库,理想情况下我可以执行以下操作:
读取/写入HDR格式(我还没有提交给特定格式,所以我愿意接受建议)
将曝光 - 包围曝光的图像组合起来以获取HDR图像,但是这样可以让我访问创建的相机功能,以便我以后可以使用它来执行诸如使用不同数量的EB图像来做贡献到HDR图像的不同部分。
使用OpenCV相对容易接口(详见下文)。
如果它是一个允许与OpenCV轻松连接的库,那将是理想的。我不认为OpenCV中目前有任何HDR功能,但有人能告诉我是否有办法将HDR图像转换为OpenCV算法(如修复)可以使用的格式?例如,我知道OpenCV可以使用64位浮点图像;我可以将HDR图像转换为其中一种格式并与之一起运行吗?
感谢。
答案 0 :(得分:3)
我用Magick ++尝试了Image Magick。经过一段时间的工作,我设法让它与OpenEXR格式一起工作,但是从来没有能够让Radiance(.hdr)工作,这是一种耻辱,因为我在MATLAB中做了很多工作,只读取/写入Radiance for HDR 。
接下来,我尝试了FreeImage。我能够读取/写入hdr以及PFM格式,但我发现Fibitmap格式非常封闭,即难以将数据从fibitmap获取到OpenCV Mat中,并且几乎无法将其恢复到Fibitmap中。
最后,我刚开始使用Portable Float Maps(PFM),并使用我自己的代码读取和写入它们,因为格式非常简单。同样,这是在研究环境中,因此虽然PFM是一种非常笨拙的长期存储或商业用途格式,但它对于研究来说非常好。
答案 1 :(得分:1)
我正在使用FreeImage库加载HDR图像(此库支持大多数原始相机格式,浮点图像类型和48bpp,64bpp图像)。
然后我在C ++中做了一个转换器类,它能够从FreeImage类型的图像转换为OpenCV,反之亦然。 FreeImage还具有色调映射转换功能,可将HDR图像更改为32bpp图像。
答案 2 :(得分:0)
我想说转换可能只是最容易的。我会查看imagemagick(http://www.imagemagick.org)库进行转换。