gpt4 book ai didi

python - RawPy 对象中的颜色矩阵是什么?

转载 作者:行者123 更新时间:2023-12-04 10:21:03 26 4
gpt4 key购买 nike

我正在通过 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 document :

Color matrix, read from file for some cameras, calculated for others. Return type: ndarray of shape (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 , HL只是恒定的“偏移量”。

让我们用这张图片做一个例子:

enter image description here

所以,如果你想交换红色和蓝色 channel 并使绿色 channel 变成实心 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')

enter image description here

现在进入您的特定矩阵... F 的值和 K在你的矩阵中几乎是 1因此,您的矩阵对绿色和蓝色 channel 进行了最小的更改。然而,它从现有的绿色 channel 中大量派生出新的红色 channel ,因为 B=0.57969594第一行的其他条目很低。

关键词 :Python,图像处理,颜色矩阵,颜色矩阵,交换 channel 。

关于python - RawPy 对象中的颜色矩阵是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60845772/

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