#pragma once
#include "stdafx.h"
#include "DetectCasmatch.h"
#include "DetectMacbeth.h"
#include "MRegressionLinear.h"
#include "MRegressionRGB.h"
#define LIGHTSOURCE_SPECTRAL "Data\\ArtificalSunlightSpectrum.csv"
#define MACBETH_SPECTRAL "Data\\MacbethSpectrum.csv"
#define CMF_SPECTRAL "Data\\ColorMatchFuncSpectrum.csv"
#define MEASURED_MACBETH_XYZ "Data\\MeasuredMacbethXYZ.csv"
#define MONITOR_RGB "Data\\MonitorRGB4913DG.csv"
#define MONITOR_XYZ "Data\\MonitorXYZ4913N.csv"
#define SPECT_DIM 61
//#define XYZ_FROM_SPECTRAL_DATA
#define LIN_XYZ_CONVERT_DIM 4
#define XYZ_DISP_CONVERT_DIM 4
class CReferenceProc
{
private:
CDetectCasmatch *m_Casmatch; // キャスマッチ検出クラス
CDetectMacbeth *m_Macbeth; // マクベス検出クラス
CMRegressionLinear *m_ccmCL; // 線形化クラス
CMRegressionRGB *m_ccmLX; // XYZ変換クラス
CMRegressionRGB *m_ccmXD; // モニタRGB変換クラス
CvMat *m_crgbRC; // キャスマッチ パッチ色
CvMat *m_lrgbRC; // キャスマッチ 線形パッチ色
CvMat *m_crgbRM; // マクベス パッチ色
CvMat *m_lrgbRM; // マクベス 線形パッチ色
CvMat *m_xyzM; // マクベス XYZ
public:
CReferenceProc(void);
~CReferenceProc(void);
bool Init();
bool CalcMatrix(const char *path, const char *file);
CvMat *GenMacbethXYZSpect();
CvMat *GenLinearize (const CvMat *data);
IplImage *GenLinearize (const IplImage *data);
CvMat *GenConvertXYZ(const CvMat *data);
IplImage *GenConvertXYZ(const IplImage *data);
CvMat *GenConvertDisp(const CvMat *data);
IplImage *GenConvertDisp(const IplImage *data);
CvMat *lrgbRC() { return m_lrgbRC; };
CvScalar ScalarLinearize(const CvScalar data);
CvScalar ScalarConvertXYZ(const CvScalar data);
CvScalar ScalarConvertDisp(const CvScalar data);
};