/*
* ====================================================
* 功能:空白页识别。
* 作者:刘丁维
* 生成时间:2020/4/21
* 最近修改时间:2020/4/21 v1.0
2020/8/12 v1.1 开放setIntensity和setMinArea;取消isNormal标识位;扩大setIntensity的设置范围,从[2, 20]扩大到[1, 100]
2020/8/25 v1.1.1 纸张检测缩进,从100像素调整到20像素
2020/10/16 v1.2 添加新接口,能够高效便捷判断图片是否为空白页
2020/10/19 v1.2.1 修复静态空白页判断识别误判的BUG
2021/04/13 v1.3.0 增加标准/票据标识位
2021/08/12 v1.3.1 添加防止不同opencv版本导致计算结果存在差异的代码。
2021/12/14 v1.3.2 重构算法。
2021/12/15 v1.3.3 微调参数。
2021/12/17 v1.3.4 增加背景色接口,实现对纯色纸张的空白页判定
2022/09/07 v1.3.5 修复部分参数传递的BUG
2022/09/19 v1.4 增加模糊处理,提高空白页的过滤能力
2022/09/19 v1.4.1 调整模糊处理步骤
2022/11/18 v1.4.2 调整默认参数
* 版本号:v1.4.2
* ====================================================
*/
#ifndef IMAGE_APPLY_DISCARD_BLANK_H
#define IMAGE_APPLY_DISCARD_BLANK_H
#include "ImageApply.h"
class GIMGPROC_LIBRARY_API CImageApplyDiscardBlank : public CImageApply
{
public:
///
/// 空白页识别
///
/// 原图
/// 轮廓阈值
/// 边缘缩进
/// 笔迹判定阈值。该阈值越低,越容易判定存在笔迹。
/// 文稿底色阈值。低于该阈值的文稿底色,直接视为非空白页。
///
CImageApplyDiscardBlank(double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 200);
virtual ~CImageApplyDiscardBlank(void);
virtual void apply(cv::Mat& pDib, int side);
virtual void apply(std::vector& mats, bool isTwoSide);
///
/// 空白页识别
///
/// 原图
/// 轮廓阈值
/// 边缘缩进
/// 笔迹判定阈值。该阈值越低,越容易判定存在笔迹。
/// 文稿底色阈值。低于该阈值的文稿底色,直接视为非空白页。
///
static bool apply(const cv::Mat& pDib, double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 200);
private:
double m_threshold;
int m_edge;
double m_devTh;
double m_meanTh;
};
#endif // !IMAGE_APPLY_DISCARD_BLANK_H