问题标签 [gamma]
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.
opengl - OpenGL 自动 sRGB 转换与手动 sRGB 转换
我最近一直在阅读有关 sRGB 转换及其带来的一些好处的信息。我在 GPU Gems 3 中阅读了一篇非常有用的文章,该文章现在免费提供,其中涵盖了一些自动方法与手动着色器编写的方法。这是这篇文章:
https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch24.html
在什么情况下使用手动转换而不是自动转换是有益的?在我看来,使用传递给 glTexImage2D 的 GL_SRGB_EXT 和使用 GL_EXT_framebuffer_sRGB 不需要任何手动转换?
image-processing - 如何在 HSI 颜色空间中获取图像的伽玛
我需要使用 HSI 色彩空间更改照片的 Gamma。我将 RGB 更改为 HSI 颜色空间,并且知道我需要使用 Gamma 值更改强度。但我不知道如何找到图像的伽马值,因为 HSI 只是色调、饱和度和强度。有谁知道我怎么能找到伽玛值?我在网上几乎找不到任何东西。
android - android中图像的伽玛校正
我正在构建一个 android 应用程序,它为用户提供一些图像处理功能。但在应用任何图像转换功能之前,我想进行伽马校正以改善图像。我知道如何执行伽玛校正,但我不知道要使用什么伽玛值,因为图像本身没有创建图像的伽玛值。有关如何为特定图像选择伽马值的任何信息都将非常有帮助。
image-processing - 伽马校正到底需要什么?
我无法完全理解伽玛校正的必要性。我希望你们能帮助我。
假设我们要显示 256 个相邻像素。这些像素应该是从黑色到白色的平滑渐变。为了表示它们的颜色,我们使用线性灰度值,0..255.
由于人眼的非线性,显示器不能仅仅将这些值转换为线性亮度值。如果相邻像素具有亮度值(1/256)*I_max, (2/256)*I_max, et cetera
,我们会在较暗的区域感觉到两个像素之间的亮度差异过大(渐变将不平滑)。
幸运的是,监视器对人眼具有互为非线性。这意味着,如果我们将线性灰度值0..255
放入帧缓冲区,那么监视器会将它们转换为非线性亮度值 x^gamma。然而,由于我们的眼睛反过来是非线性的,我们会感知到平滑的线性渐变。显示器的非线性和我们的一只眼睛相互抵消。
那么,为什么我们需要伽玛校正呢?我在书中读到我们总是希望显示器产生线性亮度值。根据他们的说法,在将灰度值写入帧缓冲区之前,必须补偿监视器的非线性。这是通过伽马校正完成的。然而,我的问题是——据我所知——当显示器产生线性亮度值时,我们不会感知到线性亮度值(即我们不会感知到平滑、稳定的渐变)。
在我看来,如果我们将线性灰度值放入帧缓冲区,那将是完美的。监视器将这些值转换为非线性亮度值,我们的眼睛再次感知线性亮度值,因为眼睛是互易非线性的。无需对帧缓冲区中的灰度值进行伽玛校正,也无需强制监视器产生线性亮度值。
我看待这些事情的方式有什么问题?谢谢
c++ - C 或 C 中的 gamma 或 log gamma 函数
我正在寻找 C 或 C++ 版本的 gamma 和 log gamma 函数。
有推荐的代码片段或库吗?
如果可能的话,我想知道实现的原理。
谢谢!!!
opengl - GL_FRAMEBUFFER_SRGB_EXT 条带问题(伽马校正)
考虑以下代码。imageDataf 是一个浮点数*。事实上,正如代码所示,它由光线追踪器创建的 float4 值组成。当然,颜色值在线性空间中,我需要对它们进行伽玛校正以在屏幕上输出。所以我能做的是一个简单的 for 循环,伽马校正为 2.2(参见 for 循环)。此外,我可以使用 GL_FRAMEBUFFER_SRGB_EXT,它几乎可以正常工作,但存在“条带”问题。
左边是使用 GL_FRAMEBUFFER_SRGB_EXT,右边是手动伽玛校正。右图看起来很完美。在某些显示器上发现它可能会有一些困难。有谁知道如何解决这个问题?我想“免费”进行伽玛校正,因为 CPU 版本使 GUI 有点滞后。请注意,实际的光线追踪是在另一个线程中使用 GPU(optix) 完成的,因此实际上它的渲染性能几乎一样快。
c++11 - 如果没有定义 tgamma() 函数怎么办?
我正在尝试tgamma()
从标准库中使用。当我尝试编译时,我收到错误消息:
调用未定义的函数 tgamma
我有指令#include <cmath>
。我使用 Embarcadero C++ Builder XE3,它声称支持 C++11 标准。什么可能是我的问题,以及如何解决它?
matlab - 在 matlab 中不使用 imnoise 函数向图像添加 Gamma 噪声?
我在没有使用 imnoise 的情况下向图像添加了 6 种不同类型的噪声,但仍然有一种我在任何地方都找不到,伽玛噪声!!!
如何在没有噪声的情况下将伽玛噪声添加到图像中?
如果你有第一个问题的答案,如果你能给我一些关于如何从直方图中识别图像添加的噪声类型的建议,那将更加感激?
我想出的一种解决方案是减去两个直方图(原始图像和噪声图像)以找到噪声直方图,然后通过其分布函数识别它。这个解决方案有效吗?
image - 伽玛校正公式:.^(gamma) 或 .^(1/gamma)?
我正在为值在 0 到 255 之间的灰度图像寻找一个简单的伽马校正公式。
假设我的屏幕的 gamma 为 2.2(它是 LCD 屏幕,所以我可能需要通过更复杂的程序来估计它,但假设我的屏幕表现良好)。
以下哪个公式是正确的?
Corrected = 255 * (Image/255).^2.2
或者
Corrected = 255 * (Image/255).^(1/2.2)
(这些注定是 MATLAB 代码,但我希望即使是非 MATLAB 人员也能理解它们)
我一直在互联网上四处寻找,但发现这两个公式都在流传。我怀疑(2)是正确的,我的困惑是由于倾向于将“伽马值”称为实际伽马值的倒数,但我非常感谢知道他们在说什么的人的一些反馈。 .
c - 澄清伽玛主题(一般)
我了解 gamma 主题,但可能不是 100%,我想请人回答并澄清我的疑问。我认为
- 有一个自然的线性色彩空间,其中值为 100 的颜色恰好比值为 25 的颜色亮四倍,依此类推(以该格式/空间保存和处理彩色图像会很好
- 当您将这样的线性光图像复制到设备上时,您会得到错误的颜色,因为通常一些中间值看起来很暗,所以您通常需要将这个中间值提高 x <- power(x, 1/2.2) (或某物)
这很清楚,但现在
普通的日常位图或 jotpeg 图像是否经过伽玛预计算?如果他们是我会做一些混合的事情,那么我应该做一些倒置伽马来将它们转换为线性然后添加它们,然后对它们进行伽马校正以获得结果吗?
当超出范围时,最好共同削减颜色或将其线性重新调整为更广泛的范围或其他什么?
tnx 的答案