Я преобразовал изображение HDR в цветовом пространстве RGB в цветовое пространство CIE-XYZ с помощью функции "cvtColor", а затем записал изображение в файл Radiance HDR с помощью функции "imwrite". Однако заголовок файла Radiance HDR по-прежнему гласит «FORMAT = 32-bit_rle_rgbe». Что я должен передать «imwrite», чтобы убедиться, что оно правильно определяет цветовое пространство?
Я следую коду, как в этом примере: https://docs.opencv.org/3.4/d3/db7/tutorial_hdr_imaging.html (за исключением части тонального отображения, которая не имеет значенияк моей проблеме). Мне нужна информация об относительной яркости, поэтому я попытался преобразовать изображение HDR, которое по умолчанию находится в пространстве BGR, в пространство 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. Я также попробовал программу "hdrgen" Грега Уорда (http://www.anyhere.com/). Созданный файл HDR имеет заголовок "FORMAT = 32-bit_rle_xyze" и правильно отображается в Photoshop. Думаю, это легко исправить (ноЯ новичок в OpenCV). Любые предложения с благодарностью.