66 lines
2.3 KiB
C++
66 lines
2.3 KiB
C++
/*
|
||
* ====================================================
|
||
|
||
* 功能:消除文稿纸张底色
|
||
* 作者:刘丁维
|
||
* 生成时间:2020/11/30
|
||
* 最近修改时间:2021/04/14 v2.0 改为档位设置
|
||
* 2021/04/14 v2.1 调整方案,与LINUX方案保持一致。
|
||
* 2021/08/03 v2.2 自定义获取饱和度算法,避免不同opencv版本结果存在偏差。
|
||
* 2021/10/12 v2.3 重构算法,去除原来分档设定改为自动识别颜色,并去除底色。
|
||
* 2021/10/23 v3.0 重构算法。避开黑色背景(制作掩模),计算文稿平均底色,并进行增白。
|
||
* 2021/10/26 v3.1 构造函数增加参数,可设置生成掩模时的阈值。
|
||
* 2021/10/28 v3.2 重构算法,改用纯C++代码实现功能,提高处理速度。
|
||
* 2021/10/29 v3.3 优化算法,增加range参数。针对复杂内容的图像,能够有效甄别背景和非背景内容。
|
||
* 2022/03/08 v3.4 修复变量未初始化的BUG。
|
||
* 版本号:v3.4
|
||
|
||
* ====================================================
|
||
*/
|
||
|
||
|
||
#ifndef IMAGE_APPLY_FADE_BACKGROUND_COLOR_H
|
||
#define IMAGE_APPLY_FADE_BACKGROUND_COLOR_H
|
||
|
||
#include "ImageApply.h"
|
||
|
||
class CImageApplyAdjustColors;
|
||
class GIMGPROC_LIBRARY_API CImageApplyFadeBackGroudColor : public CImageApply
|
||
{
|
||
public:
|
||
/// <summary>
|
||
/// 构造函数
|
||
/// </summary>
|
||
/// <param name="offset">在自动识别增白参数的基础上,增加的偏移量。取值范围[-255, 255]</param>
|
||
CImageApplyFadeBackGroudColor(int threshold = 100, int offset = 0, int range = 40);
|
||
|
||
virtual ~CImageApplyFadeBackGroudColor();
|
||
|
||
virtual void apply(cv::Mat& pDib, int side);
|
||
|
||
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
||
|
||
private:
|
||
|
||
/// <summary>
|
||
/// 除文稿底色算法,仅支持24位图像
|
||
/// </summary>
|
||
/// <param name="data">图像数据头指针</param>
|
||
/// <param name="bytesPerLine">每行数据大小</param>
|
||
/// <param name="height">图像高度</param>
|
||
/// <param name="threshold">阈值,参考值为100</param>
|
||
/// <param name="offset">文稿底色增亮偏移量,默认为0。值越大,背景越白,反之越暗</param>
|
||
/// <param name="range">底色误差范围,色彩与识别到的底色误差在[-range, range]范围内,视为底色,否则不会被消除</param>
|
||
void fadeBackground(unsigned char* data, int bytesPerLine, int height, int threshold, int offset, int range);
|
||
|
||
private:
|
||
int m_threshold;
|
||
int m_offset;
|
||
int m_range;
|
||
uchar m_table1[768];
|
||
uchar m_table2[512];
|
||
uchar m_table_rgb[3][256];
|
||
};
|
||
|
||
#endif // !IMAGE_APPLY_FADE_BACKGROUND_COLOR_H
|