更新空白页算法接口,增加跳过空白页(基于文件大小)
This commit is contained in:
parent
96d7466aca
commit
9ea63dd1ec
|
@ -113,9 +113,9 @@ bool CImageApplyDiscardBlank::apply(const cv::Mat& pDib, double threshold, int e
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CImageApplyDiscardBlank::apply(int fileSize, const cv::Size& imageSize, FileType flag)
|
bool CImageApplyDiscardBlank::apply(int fileSize, const cv::Size& imageSize, FileType type, double threshold, const char* data)
|
||||||
{
|
{
|
||||||
switch (flag)
|
switch (type)
|
||||||
{
|
{
|
||||||
case JPEG_COLOR:
|
case JPEG_COLOR:
|
||||||
if (static_cast<double>(fileSize) / static_cast<double>(imageSize.width * imageSize.height) > 0.039)
|
if (static_cast<double>(fileSize) / static_cast<double>(imageSize.width * imageSize.height) > 0.039)
|
||||||
|
|
|
@ -21,8 +21,9 @@
|
||||||
2022/11/29 v1.5 增加纸张杂点忽略功能
|
2022/11/29 v1.5 增加纸张杂点忽略功能
|
||||||
2022/12/03 v1.5.1 调整纸张杂点忽略逻辑,避免把细条纹(有效信息)给忽略掉;默认将图像按照灰度图进行识别。
|
2022/12/03 v1.5.1 调整纸张杂点忽略逻辑,避免把细条纹(有效信息)给忽略掉;默认将图像按照灰度图进行识别。
|
||||||
2023/10/12 v1.6 添加新的空白页识别方案。采用JEPG文件大小判断是否为空白页。
|
2023/10/12 v1.6 添加新的空白页识别方案。采用JEPG文件大小判断是否为空白页。
|
||||||
2023/10/20 v1.6.1 优化JEPG文件大小判断空白页
|
2023/10/20 v1.6.1 优化JPEG文件大小判断空白页
|
||||||
* 版本号:v1.6.1
|
2023/10/30 v1.7 调整JPEG文件大小判断空白页的算法接口
|
||||||
|
* 版本号:v1.7
|
||||||
|
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
@ -74,13 +75,15 @@ public:
|
||||||
static bool apply(const cv::Mat& pDib, double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 200, int dilate = 3);
|
static bool apply(const cv::Mat& pDib, double threshold = 40, int edge = 50, double devTh = 30, double meanTh = 200, int dilate = 3);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 空白页识别。根据jpeg文件大小进行判断。
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fileSize">J文件大小</param>
|
/// <param name="fileSize">JPG文件大小</param>
|
||||||
/// <param name="imageSize">图像大小</param>
|
/// <param name="imageSize">图像大小</param>
|
||||||
/// <param name="flag">0为JPG + 彩色,1为JPG + 灰度,2为PNG + 彩色, 3为PNG + 灰度, 4为PNG + </param>
|
/// <param name="type">0为JPG + 彩色,1为JPG + 灰度,2为PNG + 彩色, 3为PNG + 灰度, 4为PNG + 二值图</param>
|
||||||
/// <returns></returns>
|
/// <param name="threshold">识别灵敏度阈值</param>
|
||||||
static bool apply(int fileSize, const cv::Size& imageSize, FileType type);
|
/// <param name="data">文件数据头指针</param>
|
||||||
|
/// <returns>true为空白页,false为非空白页</returns>
|
||||||
|
static bool apply(int fileSize, const cv::Size& imageSize, FileType type, double threshold, const char* data = nullptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double m_threshold;
|
double m_threshold;
|
||||||
|
|
|
@ -69,6 +69,7 @@ g_page[] =
|
||||||
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_SM), PAGE_DOUBLE},
|
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_SM), PAGE_DOUBLE},
|
||||||
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYTY), PAGE_OMIT_EMPTY},
|
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYTY), PAGE_OMIT_EMPTY},
|
||||||
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYFPZ), PAGE_OMIT_EMPTY_RECEIPT},
|
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYFPZ), PAGE_OMIT_EMPTY_RECEIPT},
|
||||||
|
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_TGKBYJYWJDX), PAGE_OMIT_EMPTY_FILE_SIZE},
|
||||||
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_DZ), PAGE_FOLIO}
|
{MAKE_ID_AND_STR(ID_OPTION_VALUE_SMYM_DZ), PAGE_FOLIO}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -173,12 +173,14 @@ bool is_lateral(int paper);
|
||||||
//#define HUAGAO_SETTING_STR_PAGE_DOUBLE "双面"
|
//#define HUAGAO_SETTING_STR_PAGE_DOUBLE "双面"
|
||||||
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY "跳过空白页(通用)"
|
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY "跳过空白页(通用)"
|
||||||
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY_RECEIPT "跳过空白页(发票纸)"
|
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY_RECEIPT "跳过空白页(发票纸)"
|
||||||
|
//#define HUAGAO_SETTING_STR_PAGE_OMIT_EMPTY_FILE_SIZE "跳过空白页(基于文件大小)"
|
||||||
//#define HUAGAO_SETTING_STR_PAGE_FOLIO "对折"
|
//#define HUAGAO_SETTING_STR_PAGE_FOLIO "对折"
|
||||||
enum {
|
enum {
|
||||||
PAGE_SINGLE = 0,
|
PAGE_SINGLE = 0,
|
||||||
PAGE_DOUBLE,
|
PAGE_DOUBLE,
|
||||||
PAGE_OMIT_EMPTY,
|
PAGE_OMIT_EMPTY,
|
||||||
PAGE_OMIT_EMPTY_RECEIPT,
|
PAGE_OMIT_EMPTY_RECEIPT,
|
||||||
|
PAGE_OMIT_EMPTY_FILE_SIZE,
|
||||||
PAGE_FOLIO,
|
PAGE_FOLIO,
|
||||||
};
|
};
|
||||||
int match_best_page(std::string& val, bool* exact);
|
int match_best_page(std::string& val, bool* exact);
|
||||||
|
@ -619,9 +621,7 @@ typedef struct _scan_conf
|
||||||
int discare_dilate; /**< 调过空白页纸张杂点阈值>*/
|
int discare_dilate; /**< 调过空白页纸张杂点阈值>*/
|
||||||
double discare_meanth; /**< 调过空白页文稿底色阈值>*/
|
double discare_meanth; /**< 调过空白页文稿底色阈值>*/
|
||||||
bool en_contaminationdetection; /**< 脏污检测使能>*/
|
bool en_contaminationdetection; /**< 脏污检测使能>*/
|
||||||
uint8_t contaminationdetection_threshold_1; /**< 脏污检测第一阈值,超过该阈值视为存在脏污>*/
|
bool detect_size_diascard_blank; /**< 基于压缩图像大小跳过空白页使能*/
|
||||||
uint8_t contaminationdetection_threshold_2; /**< 脏污检测第二阈值,配合width使用,超过该阈值且连续宽度达到width视为存在脏污>*/
|
|
||||||
uint32_t contaminationdetection_width; /**< 脏污检测宽度,配合threshold2使用>*/
|
|
||||||
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
|
uint32_t reserve[1024]; /**< 预留4096字节做协议扩展*/
|
||||||
}SCANCONF ,*LPSCANCONF;
|
}SCANCONF ,*LPSCANCONF;
|
||||||
//图像参数设置 -OVER
|
//图像参数设置 -OVER
|
||||||
|
|
|
@ -5409,6 +5409,7 @@ int hg_scanner::image_configuration(SCANCONF& ic)
|
||||||
ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE
|
ic.is_duplex = (image_prc_param_.bits.page == PAGE_DOUBLE
|
||||||
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY
|
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY
|
||||||
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT
|
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT
|
||||||
|
|| image_prc_param_.bits.page == PAGE_OMIT_EMPTY_FILE_SIZE
|
||||||
|| image_prc_param_.bits.page == PAGE_FOLIO);
|
|| image_prc_param_.bits.page == PAGE_FOLIO);
|
||||||
|
|
||||||
if (is_dpi_color_check)
|
if (is_dpi_color_check)
|
||||||
|
@ -5447,6 +5448,7 @@ int hg_scanner::image_configuration(SCANCONF& ic)
|
||||||
ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY || is_discardblank;
|
ic.is_autodiscradblank_normal = image_prc_param_.bits.page == PAGE_OMIT_EMPTY || is_discardblank;
|
||||||
ic.discardblank_percent = omit_empty_level_;
|
ic.discardblank_percent = omit_empty_level_;
|
||||||
ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT;
|
ic.is_autodiscradblank_vince = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_RECEIPT;
|
||||||
|
ic.detect_size_diascard_blank = image_prc_param_.bits.page == PAGE_OMIT_EMPTY_FILE_SIZE;
|
||||||
ic.is_switchfrontback = image_prc_param_.bits.exchange;
|
ic.is_switchfrontback = image_prc_param_.bits.exchange;
|
||||||
ic.autodescrew = image_prc_param_.bits.automatic_skew;
|
ic.autodescrew = image_prc_param_.bits.automatic_skew;
|
||||||
ic.multi_output_red = image_prc_param_.bits.rid_red; //之前加上可能导致超时,或者未知错误不可描述。
|
ic.multi_output_red = image_prc_param_.bits.rid_red; //之前加上可能导致超时,或者未知错误不可描述。
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue