[英]What is color matrix in RawPy object?
我正在阅读RawPy
尺寸为 3120 x 4208 的 DNG 图像。
dng = rawpy.imread("TestImages/IMG_20200108_161323.dng")
在调试时,我看到dng
有一个名为color_matrix
的字段 - 一个形状为 3x4 的 numpy 数组,它看起来像这样:
[[ 0.24399559 0.57969594 0.1763085 0. ]
[-0.00469256 0.96858126 0.03611127 0. ]
[-0.00366105 -0.06751718 1.0711782 0. ]]
. 根据RawPy 文件:
颜色矩阵,从某些相机的文件中读取,为其他相机计算。 返回类型:形状的
ndarray
(3,4)
搜索后我仍然不了解该字段。 请你给我解释一下好吗? 感谢您的阅读。
像这样的颜色矩阵:
A B C D
E F G H
I J K L
通常意味着您从旧红色 (Ro)、旧绿色 (Go) 和旧蓝色 (Bo) 计算新红色值 (Rn)、新绿色值 (Gn) 和新蓝色值 (Bn),如下所示:
Rn = A*Ro + B*Go + C*Bo + D
Gn = E*Ro + F*Go + G*Bo + H
Bn = I*Ro + J*Go + K*Bo + L
D
, H
和L
只是常量“偏移量” 。
让我们用这张图片做一个例子:
所以,如果你想交换红色和蓝色通道并使绿色通道变成实心 64,你可以这样做:
#!/usr/bin/env python3
from PIL import Image
# Open image
im = Image.open('start.jpg')
# Define color matrix to swap the red and blue channels and set green to absolute 64
# This says:
# New red = 0*old red + 0*old green + 1*old blue + 0offset
# New green = 0*old red + 0*old green + 0*old blue + 64offset
# New blue = 1*old red + 0*old green + 0*old blue + 0offset
Matrix = ( 0, 0, 1, 0,
0, 0, 0, 64,
1, 0, 0, 0)
# Apply matrix and save
result = im.convert("RGB", Matrix).save('result.png')
现在进入您的特定矩阵...矩阵中F
和K
的值接近1
因此,您的矩阵对绿色和蓝色通道执行最小的更改。 然而,它从现有的绿色通道中大量推导出新的红色通道,因为B=0.57969594
并且第一行的其他条目很低。
关键词:Python,图像处理,颜色矩阵,颜色矩阵,交换通道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.