/* * ==================================================== * 功能:空白页识别。 * 作者:刘丁维 * 生成时间: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 调整默认参数 2022/11/29 v1.5 增加纸张杂点忽略功能 2022/12/03 v1.5.1 调整纸张杂点忽略逻辑,避免把细条纹(有效信息)给忽略掉;默认将图像按照灰度图进行识别。 2023/10/12 v1.6 添加新的空白页识别方案。采用JEPG文件大小判断是否为空白页。 2023/10/20 v1.6.1 优化JPEG文件大小判断空白页 2023/10/30 v1.7 调整JPEG文件大小判断空白页的算法接口 2023/11/04 v1.7.1 增加PNG二值化文件大小判断空白页的选项 2023/12/01 v1.8 取消JPEG/PNG文件大小判断空白页方案 2023/12/04 v1.9 提高算法效率。 2023/12/05 v1.9.1 修改错误代码;修改参数注释。 2023/12/08 v1.10 调整空白页判定条件。修复mask精度bug。 * 版本号:v1.10 * ==================================================== */ #ifndef IMAGE_APPLY_DISCARD_BLANK_H #define IMAGE_APPLY_DISCARD_BLANK_H #include "ImageApply.h" class GIMGPROC_LIBRARY_API CImageApplyDiscardBlank : public CImageApply { public: /// /// 空白页识别 /// /// 原图 /// 轮廓阈值。取值范围[0, 255] /// 边缘缩进。取值范围[0, +∞] /// 笔迹判定阈值。该阈值越低,越容易判定存在笔迹。取值范围[0, +∞] /// 文稿底色阈值。低于该阈值的文稿底色,直接视为非空白页(当为0时,纯色文稿底色不作为判定条件;当为255时,纯色文稿均为非空白页)。取值范围[0, 255] /// 忽略纸张杂点。取值3、5、7、9... CImageApplyDiscardBlank(double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 0, int dilate = 3); virtual ~CImageApplyDiscardBlank(void); virtual void apply(cv::Mat& pDib, int side); virtual void apply(std::vector& mats, bool isTwoSide); /// /// 空白页识别。根据图像内容进行识别。 /// /// 原图 /// 轮廓阈值 /// 边缘缩进 /// 笔迹判定阈值。该阈值越低,越容易判定存在笔迹。 /// 文稿底色阈值。低于该阈值的文稿底色,直接视为非空白页。 /// 忽略纸张杂点。≤1时不生效,值越大越容易忽略杂点 /// true为空白页,false为非空白页 static bool apply(const cv::Mat& pDib, double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 200, int dilate = 3); private: double m_threshold; int m_edge; double m_devTh; double m_meanTh; int m_dilate; }; #endif // !IMAGE_APPLY_DISCARD_BLANK_H