问题标签 [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.

0 投票
4 回答
2417 浏览

html - 如何使 Internet Explorer 不更改我的 PNG 图像中的颜色

在我的网站上使用 PNG 文件(使用 Paint.NET 制作)作为背景图像时,IE7 正在更改颜色并实际上显示我的图像的较暗版本,如此处所示。在此图像中,深色背景和背景图像都应为#001122,中等背景和背景图像应为#004466。但是IE7将图像分别更改为#000C1A和#003A5B。FF3没问题。

0 投票
2 回答
7669 浏览

opengl - 在 OpenGL 中调整整个场景的亮度/伽玛

有谁知道我如何在OpenGL中实现以下效果:

  • 更改渲染场景的亮度
  • 或者在 OpenGL 中实现 Gamma 设置

我尝试通过更改灯光的环境参数和灯光类型(定向和全向),但结果并不统一。TIA。

感谢您的帮助,一些附加信息: * 我不能使用任何 Windows 特定 API。* 伽玛设置不应影响整个窗口,因为我必须为不同的视图设置不同的伽玛。

0 投票
1 回答
3680 浏览

image-processing - 如何缩放图像中的像素以调整亮度?

我有一张照片的灰度图像。我已经确定图像的某些部分照明不足,并且亮度 Y = 0.8 的像素实际上应该调整为 90% 灰度,即,该像素的亮度应为 0.9。我的问题是如何缩放附近的其他像素? 我很确定将所有亮度乘以 9/8 是错误的,因为我隐约记得听说为了看起来均匀,缩放必须是非线性的。但是我很难找到一个能让我取得进步的方程式。(当然,我实际上正在编写一个程序来对大量照片进行这种调整。)

我的像素来源是 pbmplus PGM 格式,手册页上说:

每个灰度值都是一个与像素强度成比例的数字,由 CIE Rec. 调整。709 伽玛传递函数。(该传递函数指定 2.2 的伽马数,并且具有小强度的线性部分)。因此,零值是黑色的。Maxval 的值表示 CIE D65 白色和图像中最强烈的值以及该图像可能与之比较的任何其他图像。

如果我能更好地理解这一点,我可能会更好地了解如何进行。

我发现了一个有关制作亮度均匀图像的相关问题。


感谢 Shmoopty 让我走上正轨。我接受了你的回答,然后添加了一些信息。

0 投票
1 回答
1333 浏览

quicktime - 在 Snow Leopard 中,如何在没有颜色或伽马校正的情况下从 QTKit 获取图像数据?

自 Snow Leopard 以来,QTKit 现在从 QTMovies frameImageAtTime:withAttributes:error: 等函数返回颜色校正图像数据。给定一个未压缩的 AVI 文件,相同的图像数据在 Snow Leopard 与 Leopard 中以更大的像素值显示。

目前我正在使用 frameImageAtTime 来获取 NSImage,然后询问该图像的 tiffRepresentation。这样做之后,Snow Leopard 中的像素值会稍高一些。

例如,Leopard 中具有以下像素值的文件:

现在有一个像素值,如:

有没有办法向 QTMovie 询问未经颜色校正的视频帧?我应该要求 CGImageRef、CIImage 或 CVPixelBufferRef 吗?有没有办法在读取视频文件之前完全禁用颜色校正?

我试图通过使用 NSCalibratedColroSpace 绘制到 NSBitmapImageRep 来解决这个问题,但这只是我的一部分:

这确实会转换回“非颜色校正”颜色空间,但颜色值与我们正在测试的未压缩 AVI 文件中存储的颜色值不完全相同。这也效率低得多,因为它是从 RGB -> "Device RGB" -> RGB 转换的。

此外,我正在使用 64 位应用程序,因此不能选择使用 Quicktime-C API。

谢谢你的帮助。

0 投票
4 回答
987 浏览

graphics - 抗锯齿和伽马补偿

计算机屏幕上像素的亮度通常与像素的数字 RGB 三元组值不是线性相关的。早期 CRT 的非线性响应需要补偿非线性编码,我们今天继续使用这种编码。

通常我们在计算机屏幕上生成图像并在那里消费它们,所以一切正常。但是,当我们进行抗锯齿处理时,称为 gamma 的非线性意味着我们不能只将 0.5 的 alpha 值添加到 50% 覆盖的像素并期望它看起来正确。0.5 的 alpha 值只有 0.5^2.2=22% 的亮度与 1.0 的 alpha 和 2.2 的典型 gamma 一样亮。

抗锯齿伽玛补偿是否有任何广泛确立的最佳实践?你有日常使用的宠物方法吗?有没有人看到任何关于使用不同技术对图形输出质量的结果和人类感知的研究?

我曾想过做标准的 X^(1/2.2) 补偿,但这在计算上是相当密集的。不过,也许我可以使用包含 256 个条目的查找表来加快速度。

0 投票
1 回答
705 浏览

c++ - GetDeviceGammaRamp 调整颜色

我覆盖了一个 OpenGL 应用程序(c++),这个 openGL 应用程序使用 SetDeviceGammaRamp 将桌面的亮度设置为非常高(不知道为什么)。这个应用程序是全屏的,看起来不错,但我的叠加层非常亮。由于高伽马,我得到黄色而不是具有正常亮度的橙色。

我想要做什么:获取当前设置的伽玛(使用GetDeviceGammaRamp),然后使用它来调整我设置的颜色。

喜欢; glColor4f(r, g, b, a) 变为 glColor4f(r / gamma, g / gamma, b / gamma, a);

因此,如果桌面的亮度非常高,则 rg 和 b 值会更低(更暗)并且看起来应该如此。

我怎样才能做到这一点?GetDeviceGammaRamp 填充表格,如何使用它来修改我的颜色?

谢谢

0 投票
2 回答
981 浏览

iphone - 如何为 iPhone 开发校准 Mac 显示器

如何校准 Mac 显示器以匹配 iPhone 的颜色?

iPhone的伽玛值是多少?

谢谢你。

0 投票
2 回答
5546 浏览

php - PHP GD2:如何保持 alpha 通道透明度和正确的 gamma

我对这个关于图像缩放的讨论很感兴趣,随后发现我用来从上传的图像创建缩略图的 PHP 代码也遇到了同样的问题。我决定尝试贴在底部附近的 PHP 修复(将 gamma 从 2.2 转换为 1.0,调整图像大小,将 gamma 从 1.0 转换回 2.2)。这可以解决文章中提到的问题,但是对代码的这种修改具有敲除 PNG alpha 通道透明度的不幸副作用。

这是我使用伽玛校正的代码。

任何人都知道如何调整图像大小,采用伽玛校正技巧,同时保持原始图像的 alpha 通道透明度?

编辑

示例图片:

  1. 原始文件 - 具有 Alpha 通道透明度的 PNG
  2. 使用两个 imagegammacorrect() 函数调用调整大小的文件已注释掉
  3. 使用两个 imagegammacorrect() 函数调用调整大小的文件

在您尝试校正 Gamma 之前,您可以看到透明度很好。(查看透明度的最简单方法是检查包裹在图像周围的段落标签,并通过 FireBug 或类似方法将背景添加到其样式属性中。)

原始图像 http://ender.hosting.emarketsouth.com/images/test-image.png 没有伽玛校正 http://ender.hosting.emarketsouth.com/images/test-image-resized-no-gamma.png 伽玛更正 - 没有透明度 http://ender.hosting.emarketsouth.com/images/test-image-resized.png

0 投票
1 回答
549 浏览

image - 为什么这个 PNG 在 Linux 上颜色错误?

我的网站使用 PNG 作为过渡背景。是 Mac 上 Firefox 上的站点,是 Linux 上 Firefox 上的相同站点。

如您所见,PNG 背景在 Linux 上显示为较暗的绿色。这是由于这里描述的伽马校正问题?我怎么解决这个问题?我尝试过使用 JPG 和 BMP,但图像在所有平台上总是以暗绿色显示。我想始终像 Mac 屏幕截图那样显示充满活力的绿色。这是不可能的吗?

0 投票
2 回答
68 浏览

graphics - 在将线性强度图像显示在 DICOM 校准显示器上之前,是否需要对它们进行特殊处理?

我有一些代码可以从物理模拟中渲染 RGB 图像。这些图像具有线性强度标度,因此必须在普通 PC 显示器上显示之前进行伽马校正,并且我的应用程序很容易在其显示管道中的某个点应用必要的幂律(通常我使用从 1.6 到 2.2 的值)一个相当临时的基础;我认为最好的)。

现在很可能将来该应用程序可能由具有 DICOM 校准显示器的用户运行。我完全不清楚这些与普通 PC 显示器有什么不同(除了在某种程度上“更准确”)。是否应该使用特定的伽马值,或者需要一些完全不同的响应函数,以便在显示器上合理准确地再现原始线性强度图像?