使用PIL进行RGB到HSV的转换

tzo*_*zot 8 python color-space python-imaging-library

我正在尝试自动增强一些要转移到数字帧的图像.我有适当的代码调整大小,为图像的最不重要(最少细节)角添加日期/时间,并将成对的肖像图像粘贴在一起,以避免在帧的41:20低分辨率屏幕中显示单个肖像.

我已经为那些光线不太好的照片实现了亮度拉伸滤镜,使用colorsys.rgb_to_hsv函数计算H,S,V波段,在V 1上运行,然后在保存JPEG之前转换回RGB.数码相框.显然,即使使用itertools技巧,转换也需要很长时间; 我设法改善使用的东西psyco.

但是,我注意到PIL的一个例子,Image.convert其中RGB可以使用4×4矩阵转换为XYZ颜色空间作为方法的第二个参数convert,我想知道:

如何在convert方法调用中使用自定义矩阵将RGB转换为HSV(然后将HSV转换回RGB)?(在这种情况下,小的舍入误差并不重要,所以我不介意每个波段将表示为一系列0 ... 255整数)

先感谢您.

mar*_*eau 1

尽管我已经看到参考文献[1]声称 HSV 颜色空间是 RGB 的线性变换,这似乎意味着它可以用矩阵来完成,但我自己无法找到或确定这样的变换是什么。矩阵看起来像。在某种程度上,基于我也见过的所有[类似]非矩阵程序实现,这并没有让我感到惊讶——它们的处理方式看起来不是线性的。

\n\n

无论如何,在研究这个问题时,我在前 SGI 研究员Paul Haeberli的在线计算机图形笔记本中发现了一篇[有点过时的]文章,题为“图像处理的矩阵运算”,其中描述了如何使用 4x4 矩阵进行多种不同的颜色变换,可能对你有帮助。给出的所有示例都直接对 RGB 彩色图像进行操作,并且与几何矩阵变换一样,它们的任何序列都可以使用串联组合成单个矩阵。

\n\n

希望这有帮助。\n


\n[1]:色彩空间转换< http://www.poynton.com/PDFs/coloureq.pdf >:

\n\n

\n

2.7.3 HSL(色相饱和度和亮度)

\n\n

这代表了大量相似的色彩空间,替代名称包括 HSI(强度)、HSV(值)、HCI(色度/色彩)、HVC、TSD(色相饱和度和暗度)等。\n这些颜色空间中的大多数都是 RGB 的线性变换,因此与设备相关且非 xe2x80x93 线性。它们的优点在于指定颜色的极其直观的方式。选择所需的色调,然后通过调整其饱和度和强度来稍微修改它是非常容易的。

\n
\n