如何使用颜色矩阵在 C# 中使用参考颜色校准图像 (jpg/png)
How color Calibrate image (jpg/png) with Reference Color in C# using colormatrix
我有一张图片供参考。
例如特定位置的矩形。
对于 (Rectnangle) 我们已经有了它的 ideal/reference 颜色值,例如R=255, G=255, B=255.
Reactangle 的平均 RGB 有所不同,例如R=200,G=200,B=200.
所以与 ideal/reference 颜色有 R=55,G=55,B=55 偏差。
如何使用 color-matrix 来填充这个颜色空白,以便我得到校准图像?
如果有比这个更好的方法,请提出建议。
您将计算两种颜色的商,即 255 / 200,并将其输入颜色矩阵的对角线值中。即
var cr = referenceRed/ actualRed;
...
float[][] colorMatrixElements = {
new float[] {cr, 0, 0, 0, 0}, // red scaling factor
new float[] {0, cg, 0, 0, 0}, // green scaling factor
new float[] {0, 0, cb, 0, 0}, // blue scaling factor
new float[] {0, 0, 0, 1, 0}, // alpha scaling factor of 1
new float[] {0, 0, 0, 0, 1}};
我有一张图片供参考。 例如特定位置的矩形。
对于 (Rectnangle) 我们已经有了它的 ideal/reference 颜色值,例如R=255, G=255, B=255.
Reactangle 的平均 RGB 有所不同,例如R=200,G=200,B=200.
所以与 ideal/reference 颜色有 R=55,G=55,B=55 偏差。
如何使用 color-matrix 来填充这个颜色空白,以便我得到校准图像?
如果有比这个更好的方法,请提出建议。
您将计算两种颜色的商,即 255 / 200,并将其输入颜色矩阵的对角线值中。即
var cr = referenceRed/ actualRed;
...
float[][] colorMatrixElements = {
new float[] {cr, 0, 0, 0, 0}, // red scaling factor
new float[] {0, cg, 0, 0, 0}, // green scaling factor
new float[] {0, 0, cb, 0, 0}, // blue scaling factor
new float[] {0, 0, 0, 1, 0}, // alpha scaling factor of 1
new float[] {0, 0, 0, 0, 1}};