标签: hdr

从HDR图像中选择亮度(曝光)

我目前卡在图片上的视频节目中.

问题:

我正在从UE4中提取图片,由于存在错误,在渲染截图期间并未考虑所有灯光.输出是HDR图像.我希望得到更好的亮度,因为导出的图像非常暗,就像第一次曝光一样.

在此输入图像描述

使用UE4中的"曝光偏差"参数,我能够真实地获得场景的亮度,但不能将此参数应用于屏幕截图渲染: 在此输入图像描述

尝试:

使用Tonemapper算法(特定cv::TonemapDrago)我能够获得更好的图像结果: 在此输入图像描述

对于我的情况,Tonemap算法的主要问题是因为全局亮度根据区域的亮度而改变:在第二个图像中,窗口增加了大量的光,因此算法降低了所有亮度以调整平均值.在渲染的视频中,光线变化非常残酷.

我试图改变亮度和饱和度而没有成功.我已经修改了TonemapDrago尝试使用常量的代码来执行算法的某些步骤.

题 :

我想从HDR图像中"选择曝光时间".Tonemap基于同一图像的几个曝光时间,在我的情况下并不有趣.

欢迎任何其他想法.

编辑:

CV :: Mat深度为5,类型为CV_32FC3

cout << mat.step 给我19200

以下是我用来尝试解决问题的2个示例:

第一张图片

与光窗口的图像

编辑2:

无法用gimp打开.HDR图片,带有"explosure blend"插件的事件.我可以使用Photoshop获得足够的结果.那背后的算法有什么想法吗?OpenCV的6个Tonemap算法中的任何一个允许选择曝光校正. 在此输入图像描述

编辑3:

我已经按照这个tuto中的算法解释了openGL,它给了我这个C +代码:

cv::Mat exposureTonemap (cv::Mat m, float gamma = 2.2, float exposure = 1)
{
  // Exposure tone mapping
  cv::Mat exp;
  cv::exp( (-m) * exposure, exp );

  cv::Mat mapped = cv::Vec3f(1.0) - exp;
  // Gamma correction 
  cv::pow(exp, 1.0f / gamma, exp);

  cv::imshow("exposure …
Run Code Online (Sandbox Code Playgroud)

c++ opencv hdr unreal-engine4 opencv3.0

8
推荐指数
1
解决办法
1248
查看次数

如何在网络浏览器中创建和显示 HDR 图像?

是否存在完全支持 HDR 图像的网络图像格式?10/12位通道、DCI-P3/Rec.2020色彩空间等

似乎没有一种传统格式支持它,也没有人在谈论它,即使 YouTube 接受 HDR 上传并且 HDR 显示器的采用率正在增加。

web-standards hdrimages hdr

7
推荐指数
1
解决办法
5662
查看次数

在 Windows 11 中以编程方式控制 SDR 内容亮度

在 Windows 11 中使用启用 HDR 的显示器时,我们可以使用“设置”>“系统”>“显示”>“HDR”中的“SDR 内容亮度”滑块来控制屏幕上常规非 HDR 元素的亮度。

例如,如果显示器的最大亮度为 400nit,并且滑块设置为 60%,则 SDR 内容将以 240nit 的亮度显示。

Windows 10 也有类似的东西。

我希望能够以编程方式更改滑块的值,这样我就可以在白天拥有更亮的桌面,在晚上拥有更暗的桌面。

通过 WMI 或 DDC/CI 更改亮度的“旧”方法不适用于启用 HDR 的显示器。

我使用 ProcessMonitor 来查看滑块的作用,但它生成了太多条目,而且我能看到的唯一相关位是它更改了注册表项Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\MonitorDataStore\DELA1E4#G7IYMxgwAAgX_10_07E6_A1\SDRWhiteLevel

在我的显示屏上,该值以 12 月形式从 1000 (0%) 到 3500 (50%) 到 6000 (100%),其中 1000 等于 80nit。

一旦 SystemSettings.exe 更改了注册表值,它就会调用 D3D12 中的某些内容来实际应用更改。

翻阅微软关于Win32 API的文档,我找不到任何相关信息。

有人知道如何让它工作吗?任何语言都可以,PowerShell、C#、C++、Python...

谢谢。

windows brightness hdr

7
推荐指数
1
解决办法
1983
查看次数

HDR与AVFoundation

我想用AVFoundation和/或CoreImage同时获得实时和后处理的HDR效果.我假设一旦捕获全帧静止图像,使用CoreImage相对容易,但有人知道如何使用AVCaptureVideoPreviewLayer实现类似HDR的效果吗?

core-image ios hdr ios5

6
推荐指数
1
解决办法
1547
查看次数

如何转换为 HDR 渲染器?

我正在将我的 webgl 延迟渲染器转换为使用高动态范围的渲染器。我从网上的各种来源阅读了很多有关该主题的内容,并且有一些问题希望能够得到澄清。我完成的大部分阅读内容都涉及 HDR 图像渲染,但我的问题与渲染器可能需要如何更改才能支持 HDR 相关。

据我了解,HDR 本质上是试图捕捉更高的光线范围,以便我们可以在极亮或黑暗的场景中看到细节。通常在游戏中,我们使用强度 1 表示白光,使用强度 0 表示黑色。但在 HDR/现实世界中,范围要多样化得多。也就是说,引擎中的太阳可能比灯泡亮 10000 倍。

为了应对这些更大的范围,您必须将渲染器转换为使用浮点渲染目标(或者理想情况下是半浮点,因为它们使用更少的内存)进行光通道。

我的第一个问题是关于照明。除了浮点渲染目标之外,这是否仅仅意味着如果以前我有一个代表太阳的光,其强度为 1,那么它现在可以/应该表示为 10000?IE

float spec = calcSpec();
vec4 diff = texture2D( sampler, uv );
vec4 color = diff * max(0.0, dot( N, L )) * lightIntensity + spec; //Where lightIntensity  is now 10000?
return color;
Run Code Online (Sandbox Code Playgroud)

照明系统是否还有其他根本性变化(除了浮动纹理和更高的范围)?

接下来,我们现在有了一个浮动渲染目标,它已经累加了所有灯光值(在如上所述的较高范围内)。此时,我可能会使用诸如Bloom之类的东西对渲染目标进行一些后期处理。完成后,现在需要对其进行色调映射,然后才能将其发送到屏幕。这是因为光线范围必须转换回我们显示器的范围。

因此,对于色调映射阶段,我可能会使用后期处理,然后使用色调映射公式将 HDR 光照转换为低动态范围。我选择的技术是《神秘海域 2》中的 John Hables:

const float A = 0.15;
const float B = 0.50;
const float C = 0.10;
const float D = 0.20; …
Run Code Online (Sandbox Code Playgroud)

opengl-es glsl game-engine webgl hdr

6
推荐指数
1
解决办法
3334
查看次数

使用 OpenCV 4.0 对 HDR 图像进行色调映射

我想创建一个脚本,它接受一个.HDR文件并将其色调映射到.JPG. 我看过一些OpenCV 教程,似乎应该能够做到这一点。

我写了这个脚本:

import cv2
import numpy as np

filename = "image/gg.hdr"
im = cv2.imread(filename)

cv2.imshow('', im.astype(np.uint8))
cv2.waitKey(0)

tonemapDurand = cv2.createTonemapDurand(2.2)
ldrDurand = tonemapDurand.process(im.copy())

new_filename = filename + ".jpg"
im2_8bit = np.clip(ldrDurand * 255, 0, 255).astype('uint8')
cv2.imwrite(new_filename, ldrDurand)

cv2.imshow('', ldrDurand.astype(np.uint8))
Run Code Online (Sandbox Code Playgroud)

根据教程应该可以工作。不过,我最终得到了一个黑色图像。我已经验证它保存的结果是.JPG,以及输入图像(1.6 兆像素 HDR 环境图)是一个有效的.HDR.

OpenCV 应该能够.HDR根据文档加载s 。

我试过复制链接的教程并且工作正常,所以问题出在.HDR图像上,有人知道该怎么做吗?

谢谢

编辑:我使用了这个 HDR 图像。由于版权等原因,提供链接而不是直接下载。

python opencv hdr

6
推荐指数
1
解决办法
5047
查看次数

如何在Android中显示HDR图片?

我正在做一个 android 应用程序来解压缩、解码和显示 HDR 图片。
这些 HDR 图片的每个组件(A、R、G、B)使用 2 个字节,因此一个像素由 8 个字节的值表示,该值只能适合 long 类型。

我正在使用 android 的 Bitmap 来显示图片,因为它们有一个构造函数,允许使用Bitmap.Config.RGBA_F16以下方法进行 HDR :

int width = 1;
int height = 1;
Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.RGBA_F16);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到任何方法来填充位图的像素。我使用了推荐的公式,但它不能用在 Bitmap 的 setPixel(x,y,color) 方法中,因为颜色必须是一个整数:

long color = (A & 0xffff) << 48 | (B & 0xffff) << 32 | (G & 0xffff) << 16 | (R & 0xffff);
image.setPixel(0,0,color); //Argument type error
Run Code Online (Sandbox Code Playgroud)

.
我也尝试过使用 Color(它具有 HDR 兼容方法)、Paint 和 Canvas,但没有 Bitmap …

java android colors bitmap hdr

6
推荐指数
1
解决办法
765
查看次数

使用 ffmpeg 和 vaapi 转码 HEVC 4K HDR

我正在尝试使用我的 LG OLED 电视的 ffmpeg 和 VAAPI 硬件加速将 4K HEVC HDR 视频转码为较低的比特率。

我使用以下文件: 视频

使用以下命令:

ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device va -filter_hw_device va -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -map 0:0 -t 00:00:20 -c:v hevc_vaapi -sei hdr -qp:v 21 lg_vaapi.mkv
Run Code Online (Sandbox Code Playgroud)

但是这个文件在我的电视上没有被识别为 HDR。

使用 libx265 编码器(当然慢得多)时,它工作正常:

ffmpeg -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -t 00:00:20 -map 0:0 -c:v libx265 -preset medium -crf 18 -x265-params "colorprim=bt2020:colormatrix=bt2020nc:transfer=smpte2084:colormatrix=bt2020nc:hdr=1:info=1:repeat-headers=1:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(11000000,40)" lg_libx265.mkv
Run Code Online (Sandbox Code Playgroud)

比较两个文件上 mediainfo 的输出时,我可以看到没有为视频轨道设置以下属性:

  • 颜色范围
  • 原色
  • 传输特性

vaapi 编码的媒体信息:

General
Unique …
Run Code Online (Sandbox Code Playgroud)

ffmpeg hdr vaapi libx265

6
推荐指数
1
解决办法
2601
查看次数

如何使用HDR与自定义基于AVFoundation的相机应用程序?

我使用AVFoundation框架来创建自定义相机应用程序.

是否有可能使用HDR拍摄自定义相机应用程序的照片,即HDR在相机API中暴露的某处?

iphone objective-c ios hdr

5
推荐指数
1
解决办法
1219
查看次数

检查显示是否支持 JavaScript 中的 HDR(高动态范围)颜色?

是否可以在 JavaScript 中检测浏览器的显示器是否支持 HDR?

当访问者使用 HDR 显示器时,我需要在网页上显示 HDR 证书,但我已向客户表示这可能是不可能的。我们已经能够嵌入支持 HDR 的视频,并且可以在 Windows 版 Chrome 上正确播放。

到目前为止,在我的研究中,我没有发现检测这种能力的方法。

我发现的最接近的是Screen.colorDepth API

javascript screen hdr

5
推荐指数
1
解决办法
954
查看次数