What is color matrix in RawPy object?

◇◆丶佛笑我妖孽 提交于 2020-06-16 05:41:28

问题


I am reading a DNG image having size 3120 x 4208 by RawPy.

dng = rawpy.imread("TestImages/IMG_20200108_161323.dng")

When debug, I saw dng has a field named color_matrix - a numpy array with shape 3x4, it looks like that:

[[ 0.24399559  0.57969594  0.1763085   0.        ]
 [-0.00469256  0.96858126  0.03611127  0.        ]
 [-0.00366105 -0.06751718  1.0711782   0.        ]]

. According to RawPy document:

Color matrix, read from file for some cameras, calculated for others. Return type: ndarray of shape (3,4)

After searching I still do not understand that field. Could you explain it for me, please? Thank you for reading.


回答1:


A color-matrix like this:

A B C D
E F G H
I J K L

normally means you calculate the new Red value (Rn), new Green value (Gn) and new Blue value (Bn) from the old Red (Ro), old Green (Go) and old Blue (Bo) like this:

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 and L are just constant "offsets".

Let's do an example with this image:

So, if you want to swap the Red and Blue channels and make the Green channel into solid 64 you could do this:

#!/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')


Coming to your specific matrix now... The values for F and K in your matrix are nearly 1 so, your matrix is performing minimal changes to the Green and Blue channel. However, it is deriving the new Red channel quite heavily from the existing Green channel because B=0.57969594 and the other entries on that first row are low.

Keywords: Python, image processing, Color-matrix, colour matrix, swap channels.



来源:https://stackoverflow.com/questions/60845772/what-is-color-matrix-in-rawpy-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!