2020-06-20 03:17:06 +00:00
|
|
|
|
//#ifndef IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
//#define IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
//
|
|
|
|
|
//#include "ImageApply.h"
|
|
|
|
|
//
|
|
|
|
|
//class CImageApplyBWBinaray:public CImageApply
|
|
|
|
|
//{
|
|
|
|
|
//public:
|
|
|
|
|
//
|
|
|
|
|
// enum class ThresholdType
|
|
|
|
|
// {
|
|
|
|
|
// THRESH_BINARY = 0,
|
|
|
|
|
// THRESH_OTSU,
|
|
|
|
|
//
|
|
|
|
|
// ADAPTIVE_GAUSSIAN,
|
|
|
|
|
// ADAPTIVE_MEAN,
|
|
|
|
|
//
|
|
|
|
|
// ERROR_DIFFUSION
|
|
|
|
|
// };
|
|
|
|
|
//
|
|
|
|
|
// CImageApplyBWBinaray(ThresholdType type, int threshold = 180, int blockSize = 25, int constant = 5);
|
|
|
|
|
//
|
|
|
|
|
// CImageApplyBWBinaray();
|
|
|
|
|
//
|
|
|
|
|
// virtual ~CImageApplyBWBinaray(void);
|
|
|
|
|
//
|
|
|
|
|
// virtual void apply(cv::Mat& pDib,int side);
|
|
|
|
|
//
|
|
|
|
|
// virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
//
|
|
|
|
|
// double getThreshold() { return m_threshold; }
|
|
|
|
|
//
|
|
|
|
|
// ThresholdType getThresholdType() { return m_type; }
|
|
|
|
|
//
|
|
|
|
|
// int getBlockSize() { return m_blockSize; }
|
|
|
|
|
//
|
|
|
|
|
// double getConstant() { return m_constant; }
|
|
|
|
|
//
|
|
|
|
|
// void setThreshold(double value) { m_threshold = value; }
|
|
|
|
|
//
|
|
|
|
|
// void setThresholdType(ThresholdType type) { m_type = type; }
|
|
|
|
|
//
|
|
|
|
|
// void setBlockSize(int value) { m_blockSize = value; }
|
|
|
|
|
//
|
|
|
|
|
// void setConstant(double value) { m_constant = value; }
|
|
|
|
|
//
|
|
|
|
|
//private:
|
|
|
|
|
//
|
|
|
|
|
// void errorDiffuse(cv::Mat& image);
|
|
|
|
|
//
|
|
|
|
|
//private:
|
|
|
|
|
// double m_threshold;
|
|
|
|
|
//
|
|
|
|
|
// ThresholdType m_type;
|
|
|
|
|
//
|
|
|
|
|
// int m_blockSize;
|
|
|
|
|
//
|
|
|
|
|
// double m_constant;
|
|
|
|
|
//
|
|
|
|
|
// uchar* m_table;
|
|
|
|
|
//};
|
|
|
|
|
//
|
|
|
|
|
//#endif //!IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
//
|
|
|
|
|
/*
|
|
|
|
|
* ====================================================
|
|
|
|
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺2020/4/21
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣺2020/4/21
|
|
|
|
|
* <EFBFBD>汾<EFBFBD>ţ<EFBFBD>v1.0
|
|
|
|
|
|
|
|
|
|
* ====================================================
|
|
|
|
|
*/
|
|
|
|
|
|
2020-03-11 01:58:06 +00:00
|
|
|
|
#ifndef IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
#define IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
|
|
|
|
|
#include "ImageApply.h"
|
|
|
|
|
|
2020-06-20 03:17:06 +00:00
|
|
|
|
class CImageApplyBWBinaray :public CImageApply
|
2020-03-11 01:58:06 +00:00
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
enum class ThresholdType
|
|
|
|
|
{
|
2020-06-20 03:17:06 +00:00
|
|
|
|
THRESH_BINARY = 0, //<2F><>ͳ<EFBFBD><CDB3>ֵ<EFBFBD><D6B5>
|
|
|
|
|
THRESH_OTSU, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
2020-06-20 03:17:06 +00:00
|
|
|
|
ADAPTIVE_GAUSSIAN, //<2F><>˹<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ֵ
|
|
|
|
|
ADAPTIVE_MEAN, //<2F><>ֵ<EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ֵ
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
2020-06-20 03:17:06 +00:00
|
|
|
|
ERROR_DIFFUSION //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ
|
2020-03-11 01:58:06 +00:00
|
|
|
|
};
|
|
|
|
|
|
2020-06-20 03:17:06 +00:00
|
|
|
|
/*
|
|
|
|
|
* type [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
* threshold [in]:<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>THRESH_OTSUʱ<EFBFBD><EFBFBD>Ч
|
|
|
|
|
* blockSize [in]:ADAPTIVE_GAUSSIAN<EFBFBD><EFBFBD>ADAPTIVE_MEANģʽ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֲ<EFBFBD><EFBFBD>۲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* constant [in]:ADAPTIVE_GAUSSIAN<EFBFBD><EFBFBD>ADAPTIVE_MEANģʽ<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>blockSize<EFBFBD>γɱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ֲ<EFBFBD>ɸѡ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
CImageApplyBWBinaray(ThresholdType type, int threshold = 120, int blockSize = 25, int constant = 5);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
|
|
|
|
CImageApplyBWBinaray();
|
|
|
|
|
|
|
|
|
|
virtual ~CImageApplyBWBinaray(void);
|
|
|
|
|
|
2020-06-20 03:17:06 +00:00
|
|
|
|
virtual void apply(cv::Mat& pDib, int side);
|
2020-03-11 01:58:06 +00:00
|
|
|
|
|
|
|
|
|
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
|
|
|
|
|
double getThreshold() { return m_threshold; }
|
|
|
|
|
|
|
|
|
|
ThresholdType getThresholdType() { return m_type; }
|
|
|
|
|
|
|
|
|
|
int getBlockSize() { return m_blockSize; }
|
|
|
|
|
|
|
|
|
|
double getConstant() { return m_constant; }
|
|
|
|
|
|
|
|
|
|
void setThreshold(double value) { m_threshold = value; }
|
|
|
|
|
|
|
|
|
|
void setThresholdType(ThresholdType type) { m_type = type; }
|
|
|
|
|
|
|
|
|
|
void setBlockSize(int value) { m_blockSize = value; }
|
|
|
|
|
|
|
|
|
|
void setConstant(double value) { m_constant = value; }
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
void errorDiffuse(cv::Mat& image);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
double m_threshold;
|
|
|
|
|
|
|
|
|
|
ThresholdType m_type;
|
|
|
|
|
|
|
|
|
|
int m_blockSize;
|
|
|
|
|
|
|
|
|
|
double m_constant;
|
|
|
|
|
|
|
|
|
|
uchar* m_table;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif //!IMAGE_APPLY_BW_BINARAY_H
|
|
|
|
|
|