#pragma once
#include "mregression.h"

#define LINEARIZE_DIM		(3+1)	// 線形化は3次式でフィッティング
#define NUM_PATCH_LINEARIZE	6		// 線形化に用いるパッチ数
#define REFLECTANCE_LIST	{1.5, 1.05, 0.7, 0.44, 0.23, 0.05}	// 無彩色パッチの反射率
#define REFLECTANCE_LIST3	{1.5, 1.5, 1.5, 1.05, 1.05, 1.05, \
	0.7, 0.7, 0.7, 0.44, 0.44, 0.44, 0.23, 0.23, 0.23, 0.05, 0.05, 0.05}

class CMRegressionLinear :
	public CMRegression
{
private:
	virtual CvMat    *GenConvertEachCh(const CvMat *data);
	virtual CvMat    *GenConvertNoGetX(const CvMat *data);

public:
	CMRegressionLinear(void);
	~CMRegressionLinear(void);
	bool CalcCoef(const CvMat *rgbX);
	double GetX(const CvMat *mat, const int sample, const int index);
	bool CalcCurve();
	virtual CvMat    *GenConvert(const CvMat    *data);
	virtual IplImage *GenConvert(const IplImage *data);
};
