问题标签 [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 回答
687 浏览

c++ - OpenGL HDR 值被钳位

我正在尝试在 OpenGL 中实现 HDR。

这是我制作 HDR 帧缓冲区的方式:



第一步,我使用这个像素着色器来渲染我的场景并测试 HDR 帧缓冲区:



最后我用这个像素着色器渲染到屏幕上:



根据我的第二个着色器,如果 HDR 工作,我应该获得绿色全屏。但似乎我的值在第一步被限制了,我得到了一个红屏( if(color<1.1)gl_FragColor = vec4(1.0,0.0,0.0,0.0); )

0 投票
0 回答
2318 浏览

opengl - 色调映射着色器 OpenGL

我正在尝试在 OpenGL 中实现到 HDR 图像的色调映射。

以前,我对 HDR 图像进行手动 mip 映射,以获得具有RGBA32F亮度平均值的 1x1 纹理(格式)。

我找到了一个色调映射函数的示例并将其放在我的片段着色器中。

在我的渲染代码中,我在GL_TEXTURE0HDR 图像(格式GL_RGBA32F)上GL_TEXTURE1具有平均值的 1x1 纹理。

我要渲染的 LDR 纹理(RGBA8格式)分配在GL_COLOR_ATTACHMENT0.

我使用 FreeImage 库上传 HDR 图像(OpenEXR 格式)。

这是代码:

我的输出几乎是黑屏(我可以猜到我画的四边形)。 texShad着色器非常简单;只是在屏幕上绘制纹理。

我将展示色调映射着色器:

这是顶点着色器(简单):

和片段:

如果我放类似color.a = X输出的东西不会改变。

一个重要的疑问:这个 ( texture(downSampler,vec2(0.0,0.0)).a) 得到平均值是否正确?我不知道是否0,0是正确的值坐标,因为它是纹理大小的 1x1。

我花了很多时间在这上面,但我看不出有什么问题。

这是输出:

输出

0 投票
1 回答
2663 浏览

opengl-es - 如何转换为 HDR 渲染器?

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

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

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

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

照明系统是否有任何其他基本变化(除了浮动纹理和更高范围)?

在此之后,我们现在有一个浮动渲染目标,它累加了所有的光照值(如所描述的在较高范围内)。在这一点上,我可能会对渲染目标进行一些后期处理,比如绽放。完成后,现在需要对其进行色调映射,然后才能将其发送到屏幕上。这是因为光线范围必须转换回我们显示器的范围。

所以对于色调映射阶段,我大概会使用后期处理,然后使用色调映射公式将 HDR 照明转换为低动态范围。我选择的技术是来自 Uncharted 2 的 John Hables:

色调映射文章

我的第二个问题与这个色调映射阶段有关。除了这种技术之外,还有更多的东西吗?只是简单地使用更高的光强度并调整曝光所有这些都需要被视为 HDR - 还是还有更多?我知道有些游戏有自动曝光功能来计算平均发光量,但最基本的需要这个吗?大概你可以使用手动调整曝光?

许多文档中讨论的其他内容是伽马校正。伽马校正似乎在两个方面进行。首先是在读取纹理时,然后在将它们发送到屏幕时再次。当读取纹理时,它们必须简单地更改为如下内容:

然后在上述色调映射技术中,输出校正通过以下方式完成:

从 John Hables 的介绍中,他说并非所有纹理都必须像这样进行校正。漫反射纹理必须如此,但法线贴图之类的东西不一定必须如此。

我的第三个问题是关于这个伽马校正。为了让它工作,这是必要的吗?这是否意味着我必须在所有读取漫反射贴图的地方更换引擎?

这就是我目前对这种转换所涉及的内容的理解。它是否正确,我有什么误解或错误吗?

0 投票
1 回答
1534 浏览

ios - 如何将 HDR 与基于 AVFoundation 的自定义相机应用程序一起使用?

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

是否可以为自定义相机应用程序捕获带有 HDR 的照片,即 HDR 是否暴露在相机 api 中?

0 投票
1 回答
2539 浏览

ffmpeg - ffmpeg:来自正常速度视频的流畅、稳定的延时视频

对于正常速度的一小时行车记录仪视频,是否可以从中创建流畅的延时摄影视频?

我发现的大多数关于“timelapse + ffmpeg”的在线教程都是将静态 jpeg 文件组合成一个 timelapse 视频。这些通常会导致帧之间的抖动,是否有任何特定参数可以使视频看起来非常流畅和稳定?

我应该只是setpts=0.5*PTS为了诡计吗?有什么必备或鲜为人知的技巧吗?

更新:这个问题要求特定的可编程 ffmpeg 参数。

0 投票
1 回答
2387 浏览

java - imageIO 打开 .HDR 文件

我需要打开一个 .hdr 文件并对其进行处理,但 imageIO 不支持该格式。

问题是我需要尽可能少地丢失信息:32bpc 是完美的,16 很好,少了 16 就不行了。

我想出了3种可能的解决方案:

  1. 找到一个允许我打开 .HDR 文件的插件。我一直在寻找它,但没有运气;
  2. 找到一种将 .HDR 文件转换为我可以找到插件的格式的方法。蒂夫也许?也试过了,但还是没有运气;
  3. 将动态范围从 32bpc 降低到 16bpc,然后将其转换为 png。这很棘手,因为一旦我有一个 png 文件,我就赢了,但是要在不杀死图像的情况下削减范围并不是那么容易..

你会推荐我做什么?您知道使这三个选项中的一个起作用的方法吗?还是你有更好的主意?

0 投票
2 回答
2306 浏览

android - Nexus 5 不支持 Android 相机 API SCENE_MODE_HDR?

我的 Nexus 5 不支持 camera api(以及 camera2 api)的 HDR 场景模式。这是由于制造商的支持吗?如果是这样,我想在自定义相机应用程序中实现 HDR 场景模式,就像在股票相机中一样?

我尝试使用这两个相机 API,但没有一个支持 SCENE_MODE_HDR 参数。

使用android.hardware.cameraapi:(不支持记录 HDR 模式)

并使用android.hardware.camera2api:(不支持记录 HDR 模式)

我在这里遗漏了一些明显的东西吗?

0 投票
0 回答
743 浏览

java - Exposure Fusion 在 Android 上使用 OpenCV 返回蓝色图像

我正在尝试使用 MergeMertens 类在 Android 上使用 OpenCV 3.0.0 实现 Exposure Fusion。问题是图像以蓝色返回。这是它的截图:http: //take.ms/agYSD

我想问题出在文件的 RGB/BGR 表示上。我尝试在应用合并之前和之后从 RGB 转换为 BGR,反之亦然,无论如何都遇到了颜色问题。

如果我使用灰度图像,那么一切都很好。

这是我正在使用的代码:

0 投票
1 回答
1791 浏览

ios - 在 iOS 上使用 openCV 进行高动态范围成像会产生乱码输出

我正在尝试在 iOS 上使用 openCV 3 从多次曝光中生成 HDR 图像,最终将输出为 EXR 文件。当我尝试创建 HDR 图像时,我注意到输出出现乱码。认为尝试创建相机响应是一个错误,我从头开始并将 openCV 上的 HDR 成像教程材料改编为 iOS,但它产生了类似的结果。以下 C++ 代码返回乱码图像:

这是图像的样子:

图像输出不良

我分析了图像,尝试了各种色彩空间转换,但数据似乎是垃圾。

openCV 框架是来自 openCV.org 网站的最新编译的 3.0.0 版本。RC 和 alpha 产生相同的结果,并且当前版本不会构建(对于 iOS 或 OSX)。我在想我的下一步是尝试让框架从头开始编译,或者让示例在另一个平台下工作,看看问题是特定于平台的还是与 openCV HDR 函数本身有关。但在我这样做之前,我想我会把这个问题放在堆栈溢出上,看看是否有人遇到过同样的问题,或者我是否遗漏了一些非常明显的东西。

我已将示例 xcode 项目上传到此处:

https://github.com/artandmath/openCVHDRSwiftExample

让 openCV 与 swift 一起工作是在 Github 上用户代工厂的帮助下

0 投票
1 回答
1522 浏览

python - OpenCV MergeMertens 在 Python Vs 中给出了不同的结果。C++

当我在 Python 中运行 HDR Mertens 曝光融合时,我得到了奇怪的颜色伪影,当我在 c++ 中运行完全相同的函数时,我没有得到。(我只是运行HDR 教程

在我看来,数据类型存在一些问题,但我尝试了所有选项,但没有任何效果。难道我做错了什么?

我正在使用 OpenCV 3.0.0 运行 Python 3.5 64 位。

曝光图像取自维基百科: 1/30 秒1/4 秒2.5 秒15 秒

Python代码:

我在 Python 中得到的结果:

在此处输入图像描述

我在 C++ 中得到的结果:

在此处输入图像描述