繁体   English   中英

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

[英]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

DHL只是常量“偏移量”

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

在此处输入图片说明

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

在此处输入图片说明


现在进入您的特定矩阵...矩阵中FK的值接近1因此,您的矩阵对绿色和蓝色通道执行最小的更改。 然而,它从现有的绿色通道中大量推导出新的红色通道,因为B=0.57969594并且第一行的其他条目很低。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM