问题标签 [hdr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1093 浏览

c++ - 从 HDRi LatLong 贴图直接渲染到浮点立方体贴图 - 不是 HDR

我有一个 HDR 辐射环境贴图作为 LatLong 2D 纹理图像,我想将其转换为立方体贴图。为此,我将 HDR 贴图加载为 2D 浮动纹理,将其投影到立方体上,然后从 6 个不同方向渲染该立方体内的场景,直接用glFramebufferTexture2D相应的立方体贴图面作为函数的纹理目标填充立方体贴图。

生成的立方体贴图是一个浮点立方体贴图,生成如下:

请注意,类型参数GL_FLOAT应该正确地接受 HDR 值。使用以下方式加载 HDR 图像stb_image.h

我还尝试遍历这个数组并检索最大浮点值以查看 HDR 是否正确加载,并且我当前 HDR 贴图的最高浮点值 288远高于1.0我的预期。

这是事情变得棘手的地方,根据输入纹理(HDR 浮点贴图)和输出立方体贴图(作为浮点数),我希望立方体贴图面被正确地视为浮点纹理并直接复制 HDR 值。但是,当我添加色调映射(带有可变曝光)时,立方体贴图显示为 LDR,我得到了很多条带,并且我显然缺少 HDR 的精度,如下图所示(曝光约为 7.5)

应该是 HDR 的 LDR 图像

我不确定我是否遗漏了一些东西,而且我在 OpenGL 的文档中找不到太多关于直接渲染到浮点帧缓冲区的信息;我认为这是可能的,因为如果不是这样就没有意义。

为了完整起见,这里是从 LatLong 图像生成立方体贴图的相关代码(renderCustomCommand使用适当的采样器设置渲染立方体):

这是对 LatLong 2D 图像进行采样的代码 -> 立方体:

请注意,LatLong 到 Cubemap 的转换进行得很好,因为 2D 环境在立方体贴图上正确渲染,但在渲染为天空盒的那一刻被简单地限制在 [0,1] 范围内,就好像在过程中的某个地方它失去了浮动点数据。

我已经被这个问题困住了一段时间,并希望你们中的任何人都可以有所了解(甚至可以像这样直接渲染到浮动立方体贴图吗?)。谢谢你。


编辑:这是来自 Photoshop 的具有高曝光设置的同一张图片,因为您可以看到出现了很多我在渲染器中丢失的细节。

来自 Photoshop 的高曝光 HDR 图像

0 投票
1 回答
999 浏览

c# - Convert Texture2D to EXR (HDRI)

I am looking for a way to convert Texture2D directly to EXR format in byte array. I've done few research and this seems to be complicated than I thought.

Not really looking for a code since I don't have one. Just a suggestion on how to do this.

0 投票
1 回答
573 浏览

preview - 视频 HDR 是否仅影响预览或捕获的图像?

AVCaptureDevice 有一个名为isVideoHDREnabled的属性。它只影响预览,还是影响捕获的图像?文档没有说。

如果 iOS 确定对正在拍摄的场景有保证,我希望我的应用程序自动拍摄 HDR 图像。在支持时启用它有什么缺点吗?

我了解并非所有设备/相机组合都支持此功能。问题是当它存在时它会做什么。

0 投票
0 回答
214 浏览

javascript - 将帧缓冲区下载为 HDR

在 HTML5 画布 2d 上下文中,该方法toDataURL允许将画布的内容下载为图像,颜色值从 0 到 255。

为了在 webgl 上下文中做同样的事情,我想一个简单的方法是readPixels在 2d 画布中使用和复制生成的缓冲区值,然后使用前面的方法下载结果,颜色值仍然从 0 到 255。这意味着,具有更大范围的值将被限制。

那么,如果我们希望图像是浮点格式的 HDR 怎么办?

这个 SO question详细说明了如何从渲染目标读取浮点值,但是我们可以如何处理结果Float32Array将其转换为 HDR 并下载它?

0 投票
1 回答
1262 浏览

c# - 32位浮点图像格式getpixel?

如何在 C# 中使用 32 位浮点图像?

我更喜欢使用 openExr 但是,tiff 或类似的也可以,基本上我只想从磁盘加载一个 32 位浮点(每像素/通道 32 位)图像并获取单个通道的像素值并将其放入数组,最好是尽可能简单的解决方案。

这是我制作的一个简单的测试示例,适用于 png: 在此处输入图像描述

下载视觉工作室项目

代码:C#

下载 16 和 32 位测试 tiff 图像:(19KB)

0 投票
0 回答
445 浏览

three.js - 如何在 MeshStandardMaterial 中使用各向异性?

我使用这个例子在场景中添加球体,我只设置了 EnvMap 到球体并删除了所有其他贴图(贴图、法线贴图、粗糙度、金属度)。我看到了各向异性问题。所有网格都带有矩形。

我试图为 envMap 设置各向异性。但现在我看到一些白色的坏像素。

我的问题是:-“如何为 HDR envMap 设置各向异性”?

更新

为了解决这个问题,我将四个空的 32x32 图像设置为 Map、NormalMap、RougnessMap 和 MetalnessMap 纹理。

0 投票
1 回答
684 浏览

python - 以时间单位查找网络摄像头的曝光持续时间?

我目前正在试验 HDR 捕捉,并通过 Python 通过 OpenCV 使用 Logitech C920。迄今为止,我遇到的所有相机校准算法都需要图像曝光的实际持续时间,或者至少需要知道不同曝光时间之间的比率。不幸的是,当我在 OpenCV (CAM_PROP_EXPOSURE) 中为 C920 设置曝光时间时,我所拥有的只是一个整数范围 [-11 到 -2],没有单位指示。

是否有一个低级别的 API 或实用程序可以用来探测相机以找到相应的持续时间(以秒为单位)?

0 投票
1 回答
2757 浏览

python - 如何使用 numpy 快速迭代和修改像素数组?

首先,我对 Python 及其库比较陌生。

以下代码的目的是将 HDR 图像转换为 RGBM,详见WebGL Insights 第 16 章

该代码工作并产生正确的结果,但它的速度非常慢。这当然是由在 python 中分别迭代每个像素引起的,对于较大的图像可能需要很长时间(对于 3200x1600 大小的图像大约需要 4:30 分钟)。

我的问题是:有没有更有效的方法来实现我所追求的?我简要研究了 numpy 中的矢量化和广播,但还没有找到一种方法将它们应用于我的问题。

编辑:

感谢Mateen Ulhaq,我找到了一个解决方案:

这只需几秒钟即可完成。

0 投票
0 回答
255 浏览

camera - 如何基于 HAL3 进行 HDR 捕捉?

我想基于 HAL3 进行 HDR 捕捉,但我现在有两个问题。问题 1:我们知道 HDR 需要对三张图像进行快照。它可以通过发送三个捕获请求来实现,但我认为这不是一个好主意。那么你知道如何解决这个问题吗?问题2:HDR对三张图的曝光时间要求不同,一张要短曝光,一张要中曝光,最后一张要长曝光。我想知道如何达到这个效果。

如果你对 HAL3 中的 android camera 有一些经验,或者你有一些示例代码,你能告诉我吗?我在这方面困扰了很长时间。非常感谢!

0 投票
0 回答
72 浏览

hdr - 无法使用 OpenEXR 写入 Z 通道

我正在尝试以下官方文档中的读/写示例:

ReadingAndWritingImageFiles.pdf

但我无法写入 Z 通道。在 exrdisplay(官方 EXR 查看器)中,即使曝光最大,图像也是全黑的。

如果我用“R”替换“Z”,那么我可以使用 exrdisplay 看到带红色的图像。