0

我使用“cvtColor”函数将RGB色彩空间中的HDR图像转换为CIE-XYZ色彩空间,然后使用“imwrite”函数将图像写入Radiance HDR文件。但是,Radiance HDR 文件的标题仍然显示“FORMAT=32-bit_rle_rgbe”。我应该将什么传递给“imwrite”以确保它正确指定颜色空间?

我遵循本示例中的代码:https ://docs.opencv.org/3.4/d3/db7/tutorial_hdr_imaging.html (色调映射部分除外,这与我的问题无关)。我需要相对亮度信息,所以我尝试使用下面显示的代码将默认位于 BGR 空间中的 HDR 图像转换为 CIE-XYZ 空间。

/* Codes to read in images and construct the camera response function 
can be found from the link above, though I am happy to post the whole 
if needed.*/
//! [Make HDR image]
std::cout << "Now make HDR file" << endl;
Mat hdr;
Ptr<MergeDebevec> merge_debevec = createMergeDebevec();
merge_debevec->process(images, hdr, times, response);

/* The hdr is in BGR color space by default. 
Therefore, convert it to XYZ space by the following two lines. */
Mat hdr_xyz;
cv::cvtColor(hdr, hdr_xyz, CV_BGR2XYZ);

//! [Write results]
std::cout << "Now write to files" << endl;
cv::imwrite("hdr.hdr", hdr);
cv::imwrite("hdr_xyz.hdr", hdr_xyz);

大多数代码似乎都在工作,并且生成的 HDR 图像似乎已正确转换(从矩阵“hdr_xyz”中的数字判断)。

但是,生成的 HDR 文件“hdr_xyz.hdr”仍然具有以下标题:“#?RGBE FORMAT=32-bit_rle_rgbe”因此,无法使用“imshow”或 Photoshop 等程序正确显示图像。我还尝试过 Greg Ward ( http://www.anyhere.com/ ) 的“hdrgen”程序。它创建的 HDR 文件具有标题“FORMAT=32-bit_rle_xyze”,并且在 Photoshop 中正确显示。我想这是一个简单的修复(但我是 OpenCV 的新手)。非常感谢任何建议。

4

0 回答 0