问题标签 [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.
c++ - OpenGL HDR 值被钳位
我正在尝试在 OpenGL 中实现 HDR。
这是我制作 HDR 帧缓冲区的方式:
第一步,我使用这个像素着色器来渲染我的场景并测试 HDR 帧缓冲区:
最后我用这个像素着色器渲染到屏幕上:
根据我的第二个着色器,如果 HDR 工作,我应该获得绿色全屏。但似乎我的值在第一步被限制了,我得到了一个红屏( if(color<1.1)gl_FragColor = vec4(1.0,0.0,0.0,0.0); )
opengl - 色调映射着色器 OpenGL
我正在尝试在 OpenGL 中实现到 HDR 图像的色调映射。
以前,我对 HDR 图像进行手动 mip 映射,以获得具有RGBA32F
亮度平均值的 1x1 纹理(格式)。
我找到了一个色调映射函数的示例并将其放在我的片段着色器中。
在我的渲染代码中,我在GL_TEXTURE0
HDR 图像(格式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。
我花了很多时间在这上面,但我看不出有什么问题。
这是输出:
opengl-es - 如何转换为 HDR 渲染器?
我正在将我的 webgl 延迟渲染器转换为使用高动态范围的渲染器。我从网上的各种来源阅读了很多关于这个主题的内容,我有一些问题希望能得到澄清。我阅读的大部分内容都涉及 HDR 图像渲染,但我的问题与渲染器可能必须如何更改以支持 HDR 有关。
据我了解,HDR 本质上是在尝试捕捉更高的光照范围,以便我们可以在极亮或极暗的场景中看到细节。通常在游戏中,我们使用强度 1 表示白光,使用 0 表示黑光。但在 HDR / 现实世界中,范围要多样化得多。即引擎中的太阳可能比 10 的灯泡亮 10000 倍。
为了应对这些更大的范围,您必须将渲染器转换为使用浮点渲染目标(或者理想情况下是半浮点,因为它们使用较少的内存)进行光通道。
我的第一个问题是关于照明的。除了浮点渲染目标之外,这是否仅仅意味着如果以前我有一个代表太阳的光,它的强度为 1,它现在可以/应该表示为 10000?IE
照明系统是否有任何其他基本变化(除了浮动纹理和更高范围)?
在此之后,我们现在有一个浮动渲染目标,它累加了所有的光照值(如所描述的在较高范围内)。在这一点上,我可能会对渲染目标进行一些后期处理,比如绽放。完成后,现在需要对其进行色调映射,然后才能将其发送到屏幕上。这是因为光线范围必须转换回我们显示器的范围。
所以对于色调映射阶段,我大概会使用后期处理,然后使用色调映射公式将 HDR 照明转换为低动态范围。我选择的技术是来自 Uncharted 2 的 John Hables:
我的第二个问题与这个色调映射阶段有关。除了这种技术之外,还有更多的东西吗?只是简单地使用更高的光强度并调整曝光所有这些都需要被视为 HDR - 还是还有更多?我知道有些游戏有自动曝光功能来计算平均发光量,但最基本的需要这个吗?大概你可以使用手动调整曝光?
许多文档中讨论的其他内容是伽马校正。伽马校正似乎在两个方面进行。首先是在读取纹理时,然后在将它们发送到屏幕时再次。当读取纹理时,它们必须简单地更改为如下内容:
然后在上述色调映射技术中,输出校正通过以下方式完成:
从 John Hables 的介绍中,他说并非所有纹理都必须像这样进行校正。漫反射纹理必须如此,但法线贴图之类的东西不一定必须如此。
我的第三个问题是关于这个伽马校正。为了让它工作,这是必要的吗?这是否意味着我必须在所有读取漫反射贴图的地方更换引擎?
这就是我目前对这种转换所涉及的内容的理解。它是否正确,我有什么误解或错误吗?
ios - 如何将 HDR 与基于 AVFoundation 的自定义相机应用程序一起使用?
我使用该AVFoundation
框架来创建自定义相机应用程序。
是否可以为自定义相机应用程序捕获带有 HDR 的照片,即 HDR 是否暴露在相机 api 中?
ffmpeg - ffmpeg:来自正常速度视频的流畅、稳定的延时视频
对于正常速度的一小时行车记录仪视频,是否可以从中创建流畅的延时摄影视频?
我发现的大多数关于“timelapse + ffmpeg”的在线教程都是将静态 jpeg 文件组合成一个 timelapse 视频。这些通常会导致帧之间的抖动,是否有任何特定参数可以使视频看起来非常流畅和稳定?
我应该只是setpts=0.5*PTS
为了诡计吗?有什么必备或鲜为人知的技巧吗?
更新:这个问题要求特定的可编程 ffmpeg 参数。
java - imageIO 打开 .HDR 文件
我需要打开一个 .hdr 文件并对其进行处理,但 imageIO 不支持该格式。
问题是我需要尽可能少地丢失信息:32bpc 是完美的,16 很好,少了 16 就不行了。
我想出了3种可能的解决方案:
- 找到一个允许我打开 .HDR 文件的插件。我一直在寻找它,但没有运气;
- 找到一种将 .HDR 文件转换为我可以找到插件的格式的方法。蒂夫也许?也试过了,但还是没有运气;
- 将动态范围从 32bpc 降低到 16bpc,然后将其转换为 png。这很棘手,因为一旦我有一个 png 文件,我就赢了,但是要在不杀死图像的情况下削减范围并不是那么容易..
你会推荐我做什么?您知道使这三个选项中的一个起作用的方法吗?还是你有更好的主意?
android - Nexus 5 不支持 Android 相机 API SCENE_MODE_HDR?
我的 Nexus 5 不支持 camera api(以及 camera2 api)的 HDR 场景模式。这是由于制造商的支持吗?如果是这样,我想在自定义相机应用程序中实现 HDR 场景模式,就像在股票相机中一样?
我尝试使用这两个相机 API,但没有一个支持 SCENE_MODE_HDR 参数。
使用android.hardware.camera
api:(不支持记录 HDR 模式)
并使用android.hardware.camera2
api:(不支持记录 HDR 模式)
我在这里遗漏了一些明显的东西吗?
java - Exposure Fusion 在 Android 上使用 OpenCV 返回蓝色图像
我正在尝试使用 MergeMertens 类在 Android 上使用 OpenCV 3.0.0 实现 Exposure Fusion。问题是图像以蓝色返回。这是它的截图:http: //take.ms/agYSD
我想问题出在文件的 RGB/BGR 表示上。我尝试在应用合并之前和之后从 RGB 转换为 BGR,反之亦然,无论如何都遇到了颜色问题。
如果我使用灰度图像,那么一切都很好。
这是我正在使用的代码:
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 上用户代工厂的帮助下