获取和设置像素亮度的通用算法?

4

我一直在寻找一个简单的算法来获取和设置像素的亮度,但是找不到什么 - 只有研究论文和复杂的库。

那么,有人知道计算像素亮度的公式吗?我应该使用哪个公式来改变亮度?

编辑:澄清问题。我正在使用Qt和C ++,但我主要是寻找一个通用的数学公式 - 我将根据语言进行调整。我谈论的是内存中图像的RGB像素。通过“亮度”,我的意思与Photoshop相同 - 改变亮度会使图像更加“白色”(亮度值为1.0时完全为白色),降低它会使其更加“黑色”(值为0.0)。


1
你是指表面亮度吗?就像灰度图一样? - El Ronnoco
2
你指的是屏幕上的像素吗?还是存储器中的?或者是打印机上的?你是指绝对亮度还是相对亮度?你所操作的颜色空间的伽马值是多少?你的目标操作系统是什么?你使用的编程语言是什么? - Jonathan Grynspan
抱歉表述不够准确,我已经更新了问题。 - laurent
如果您不提供更具体的信息,问题很可能会被关闭。我猜您有RGB值,并且想要调整亮度?如果是这样,请按照答案中所述转换为/从HSV。 - Ed Staub
2个回答

5
将颜色表示方式更改为HSV。"V"组件代表亮度,表示亮度!
  • 这里 是PHP中实现该算法的详细说明。
  • 这里 介绍了如何在C语言中进行此操作的说明。

将每个像素从RGB转换为HSV,然后再转回RGB可能会很慢。有没有直接改变RGB像素亮度的方法? - laurent
在 RGB 中,每个组件代表每种颜色的强度,因此可以使用 (r+g+b)/3。在这种情况下,将所有组件除以 2 应该会减半亮度。 - aioobe
1
@aioobe:这没有考虑到伽马校正。这不是RGB的工作方式。 - Svante

-1

什么是像素?

你可以使用“=”来设置图像中像素的亮度,只需要知道图像的内存布局即可。

在屏幕上设置像素会稍微复杂一些。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接