2023-02-24 10:07:24 +00:00
|
|
|
|
/*
|
|
|
|
|
* ====================================================
|
|
|
|
|
|
2023-06-16 01:52:24 +00:00
|
|
|
|
* 功能:色偏校正
|
|
|
|
|
* 作者:刘丁维
|
|
|
|
|
* 生成时间:2022/12/01
|
|
|
|
|
* 最近修改时间:v1.0 2022/12/01
|
|
|
|
|
* v1.1 2022/12/01 增加从文件中读取查值表数据接口;增加导出查值表数据接口
|
|
|
|
|
* v1.1.1 2023/03/24 增加预设方案
|
|
|
|
|
* v1.2 2023/04/04 提高曲线拐点数,增加预设方案CIS_DN_PATCH3
|
|
|
|
|
* v1.3 2023/04/17 增加新查值表导入方式。
|
|
|
|
|
* v2.0 2023/05/15 重构查值表算法。
|
2023-10-11 03:55:21 +00:00
|
|
|
|
* v2.1 2023/10/07 添加饱和度、亮度调节,当前暂不开放参数设置接口。
|
|
|
|
|
* 版本号:v2.1
|
2023-02-24 10:07:24 +00:00
|
|
|
|
* ====================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef IMAGE_APPLY_COLOR_CAST_CORRECT_H
|
|
|
|
|
#define IMAGE_APPLY_COLOR_CAST_CORRECT_H
|
|
|
|
|
|
|
|
|
|
#include "ImageApply.h"
|
|
|
|
|
|
|
|
|
|
class GIMGPROC_LIBRARY_API CImageApplyColorCastCorrect : public CImageApply
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
2023-11-13 03:45:34 +00:00
|
|
|
|
CImageApplyColorCastCorrect(int pid);
|
|
|
|
|
|
|
|
|
|
CImageApplyColorCastCorrect(const std::vector<double>& h_x, const std::vector<double>& h_y,
|
|
|
|
|
const std::vector<double>& l_x, const std::vector<double>& l_y,
|
|
|
|
|
const std::vector<double>& s_x, const std::vector<double>& s_y);
|
2023-10-11 03:55:21 +00:00
|
|
|
|
|
2023-02-24 10:07:24 +00:00
|
|
|
|
/// <summary>
|
2023-06-16 01:52:24 +00:00
|
|
|
|
/// 用户自定义查值表
|
2023-02-24 10:07:24 +00:00
|
|
|
|
/// </summary>
|
2023-06-16 01:52:24 +00:00
|
|
|
|
/// <param name="points_x">HSV色彩空间H通道曲线变换节点坐标X轴</param>
|
|
|
|
|
/// <param name="points_y">HSV色彩空间H通道曲线变换节点坐标Y轴</param>
|
2023-02-24 10:07:24 +00:00
|
|
|
|
CImageApplyColorCastCorrect(const std::vector<double>& points_x, const std::vector<double>& points_y);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2023-06-16 01:52:24 +00:00
|
|
|
|
/// 从文件中加载现有查值表数据
|
2023-02-24 10:07:24 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="fileName"></param>
|
|
|
|
|
CImageApplyColorCastCorrect(const std::string& fileName);
|
|
|
|
|
|
2023-06-16 01:52:24 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 针对HSV中H通道的LUT校正数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="table_h"></param>
|
|
|
|
|
CImageApplyColorCastCorrect(const uchar* table_h);
|
|
|
|
|
|
2023-02-24 10:07:24 +00:00
|
|
|
|
virtual ~CImageApplyColorCastCorrect(void);
|
|
|
|
|
|
|
|
|
|
virtual void apply(cv::Mat& pDib, int side);
|
|
|
|
|
|
|
|
|
|
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2023-06-16 01:52:24 +00:00
|
|
|
|
/// 导出当前查值表数据
|
2023-02-24 10:07:24 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="fileName"></param>
|
|
|
|
|
void exportTableData(const std::string& fileName);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2023-11-13 03:45:34 +00:00
|
|
|
|
void createTable_h(const std::vector<double>& points_x, const std::vector<double>& points_y);
|
|
|
|
|
void createTable_l(const std::vector<double>& points_x, const std::vector<double>& points_y);
|
|
|
|
|
void createTable_s(const std::vector<double>& points_x, const std::vector<double>& points_y);
|
2023-02-24 10:07:24 +00:00
|
|
|
|
private:
|
2023-11-13 03:45:34 +00:00
|
|
|
|
uchar* m_table_h, *m_table_l, *m_table_s;
|
2023-02-24 10:07:24 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|