【发布时间】:2018-04-09 23:48:02
【问题描述】:
对于一个类,我需要将 RGB 图像转换为 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 图片时
我想了解为什么会这样?他们为什么要使用转置矩阵? (.T)
当arr 形状与 yiq_from_rgb 不同时,点积究竟是如何工作的?
【问题讨论】:
-
来自the docs -
For 2-D arrays it is equivalent to matrix multiplication,。 -
可能需要转置,因为图像数组是从所需的转换规范转置?
-
Coordinate Conventions - 图像数组维度为(行、列、通道)。所以一个 5x10 的图像将具有 (10, 5, 3) 的形状;红色通道是
arr[:,:,0],蓝色是arr[:,:,1]...
标签: python numpy image-processing matrix multidimensional-array