gpt4 book ai didi

python - numpy 将 RGB 图像转换为 YIQ 颜色空间

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:44 24 4
gpt4 key购买 nike

对于一个类,我需要将 RGB 图像转换为 YIQ。我们被告知可以通过以下方式进行转换:

transforming rgb to yiq

我开始写一个带有循环的困惑代码来进行矩阵乘法,然后我找到了一个函数

 skimage.color.yiq2rgb(imYIQ)

当我查看内部查看他们在做什么时,我看到了以下内容(我正在复制内容以便更清楚):

yiq_from_rgb = yiq_from_rgb = np.array([[0.299,      0.587,        0.114],
[0.59590059, -0.27455667, -0.32134392],
[0.21153661, -0.52273617, 0.31119955]])
return np.dot(arr, yiq_from_rgb.T.copy())

arr 只是作为矩阵的 RGB pic

我想了解为什么会这样?他们为什么采用转置矩阵? (.T)当 arr 形状与 yiq_from_rgb 不同时,点积究竟如何工作?

最佳答案

在包含转换矩阵的引用图中,转换矩阵位于 RGB channel 的左侧。所以,对于RGB图像中的第一个像素,我们称它为(p1r, p1g, p1b),分别对应R、G、B channel ,我们需要乘以变换矩阵并将结果相加喜欢:

y1y = (0.299*p1r + 0.587*p1g + 0.114*p1b)
y1i = (0.596*p1r - 0.275*p1g - 0.321*p1b)
y1q = (0.212*p1r - 0.523*p1g + 0.311*p1b)

其中 (y1y,y1i,y1q) 是生成的 YIQ 图像中第一个像素的值,在舍入/采用 int 之后。我们对整张RGB图像中的所有像素进行同种乘法,得到想要的YIQ图像。

现在,由于他们使用 np.dot(arr, yiq_from_rgb.T) 完成整个实现,因此要正确计算权重,需要转置变换矩阵。而copy就是专门为了这个转换而转置的变换矩阵。

另外,请注意,与您的图相反,在 np.dot() 中,RGB 数组位于转换矩阵的左侧。

关于python - numpy 将 RGB 图像转换为 YIQ 颜色空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46990838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com