diff options
-rw-r--r-- | src/ipa/rpi/controller/rpi/ccm.cpp | 18 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/ccm.h | 20 |
2 files changed, 19 insertions, 19 deletions
diff --git a/src/ipa/rpi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp index aefa580c..7f63f3fd 100644 --- a/src/ipa/rpi/controller/rpi/ccm.cpp +++ b/src/ipa/rpi/controller/rpi/ccm.cpp @@ -29,17 +29,17 @@ LOG_DEFINE_CATEGORY(RPiCcm) #define NAME "rpi.ccm" -Matrix::Matrix() +Matrix3x3::Matrix3x3() { memset(m, 0, sizeof(m)); } -Matrix::Matrix(double m0, double m1, double m2, double m3, double m4, double m5, +Matrix3x3::Matrix3x3(double m0, double m1, double m2, double m3, double m4, double m5, double m6, double m7, double m8) { m[0][0] = m0, m[0][1] = m1, m[0][2] = m2, m[1][0] = m3, m[1][1] = m4, m[1][2] = m5, m[2][0] = m6, m[2][1] = m7, m[2][2] = m8; } -int Matrix::read(const libcamera::YamlObject ¶ms) +int Matrix3x3::read(const libcamera::YamlObject ¶ms) { double *ptr = (double *)m; @@ -125,7 +125,7 @@ bool getLocked(Metadata *metadata, std::string const &tag, T &value) return true; } -Matrix calculateCcm(std::vector<CtCcm> const &ccms, double ct) +Matrix3x3 calculateCcm(std::vector<CtCcm> const &ccms, double ct) { if (ct <= ccms.front().ct) return ccms.front().ccm; @@ -141,13 +141,13 @@ Matrix calculateCcm(std::vector<CtCcm> const &ccms, double ct) } } -Matrix applySaturation(Matrix const &ccm, double saturation) +Matrix3x3 applySaturation(Matrix3x3 const &ccm, double saturation) { - Matrix RGB2Y(0.299, 0.587, 0.114, -0.169, -0.331, 0.500, 0.500, -0.419, + Matrix3x3 RGB2Y(0.299, 0.587, 0.114, -0.169, -0.331, 0.500, 0.500, -0.419, -0.081); - Matrix Y2RGB(1.000, 0.000, 1.402, 1.000, -0.345, -0.714, 1.000, 1.771, + Matrix3x3 Y2RGB(1.000, 0.000, 1.402, 1.000, -0.345, -0.714, 1.000, 1.771, 0.000); - Matrix S(1, 0, 0, 0, saturation, 0, 0, 0, saturation); + Matrix3x3 S(1, 0, 0, 0, saturation, 0, 0, 0, saturation); return Y2RGB * S * RGB2Y * ccm; } @@ -170,7 +170,7 @@ void Ccm::prepare(Metadata *imageMetadata) LOG(RPiCcm, Warning) << "no colour temperature found"; if (!luxOk) LOG(RPiCcm, Warning) << "no lux value found"; - Matrix ccm = calculateCcm(config_.ccms, awb.temperatureK); + Matrix3x3 ccm = calculateCcm(config_.ccms, awb.temperatureK); double saturation = saturation_; struct CcmStatus ccmStatus; ccmStatus.saturation = saturation; diff --git a/src/ipa/rpi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h index 4e5b33fe..8e7f9616 100644 --- a/src/ipa/rpi/controller/rpi/ccm.h +++ b/src/ipa/rpi/controller/rpi/ccm.h @@ -16,22 +16,22 @@ namespace RPiController { /* Algorithm to calculate colour matrix. Should be placed after AWB. */ -struct Matrix { - Matrix(double m0, double m1, double m2, double m3, double m4, double m5, +struct Matrix3x3 { + Matrix3x3(double m0, double m1, double m2, double m3, double m4, double m5, double m6, double m7, double m8); - Matrix(); + Matrix3x3(); double m[3][3]; int read(const libcamera::YamlObject ¶ms); }; -static inline Matrix operator*(double d, Matrix const &m) +static inline Matrix3x3 operator*(double d, Matrix3x3 const &m) { - return Matrix(m.m[0][0] * d, m.m[0][1] * d, m.m[0][2] * d, + return Matrix3x3(m.m[0][0] * d, m.m[0][1] * d, m.m[0][2] * d, m.m[1][0] * d, m.m[1][1] * d, m.m[1][2] * d, m.m[2][0] * d, m.m[2][1] * d, m.m[2][2] * d); } -static inline Matrix operator*(Matrix const &m1, Matrix const &m2) +static inline Matrix3x3 operator*(Matrix3x3 const &m1, Matrix3x3 const &m2) { - Matrix m; + Matrix3x3 m; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) m.m[i][j] = m1.m[i][0] * m2.m[0][j] + @@ -39,9 +39,9 @@ static inline Matrix operator*(Matrix const &m1, Matrix const &m2) m1.m[i][2] * m2.m[2][j]; return m; } -static inline Matrix operator+(Matrix const &m1, Matrix const &m2) +static inline Matrix3x3 operator+(Matrix3x3 const &m1, Matrix3x3 const &m2) { - Matrix m; + Matrix3x3 m; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) m.m[i][j] = m1.m[i][j] + m2.m[i][j]; @@ -50,7 +50,7 @@ static inline Matrix operator+(Matrix const &m1, Matrix const &m2) struct CtCcm { double ct; - Matrix ccm; + Matrix3x3 ccm; }; struct CcmConfig { |