2022-06-17 10:01:34 +00:00
|
|
|
|
/*
|
|
|
|
|
* ====================================================
|
|
|
|
|
|
|
|
|
|
* 功能:滤镜。目前包括锐化、加强锐化、模糊和加强模糊
|
|
|
|
|
* 作者:刘丁维
|
|
|
|
|
* 生成时间:2020/4/21
|
|
|
|
|
* 最近修改时间:2020/4/21 v1.0
|
|
|
|
|
2020/7/17 v1.1 增加双边滤波(BilateralFilter)效果,用于实现“背景平滑”功能;
|
|
|
|
|
2020/11/30 v1.2 增加高斯模糊(GaussianBlur)
|
|
|
|
|
2021/07/21 v1.2.1 增加增亮锐化(BrightSharp)
|
|
|
|
|
2021/10/19 v1.2.2 调整增亮锐化参数
|
|
|
|
|
* 版本号:v1.2.2
|
|
|
|
|
|
|
|
|
|
* ====================================================
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef IMAGE_APPLY_FILTER_H
|
|
|
|
|
#define IMAGE_APPLY_FILTER_H
|
|
|
|
|
|
|
|
|
|
#include "ImageApply.h"
|
|
|
|
|
|
|
|
|
|
class CImageApplyFilter : public CImageApply
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
enum FilterMode
|
|
|
|
|
{
|
|
|
|
|
None,
|
|
|
|
|
Sharpen, //锐化
|
|
|
|
|
Sharpen_More, //进一步锐化
|
|
|
|
|
AverBlur, //模糊
|
|
|
|
|
AverBlur_More, //进一步模糊
|
|
|
|
|
BilateralFilter, //双边滤波--背景平滑,减少复杂背景的色彩数量,利于jpg等压缩比例
|
|
|
|
|
GaussianBlur,
|
|
|
|
|
BrightSharp //5 * 5提亮锐化
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* sharpentype [in]:滤镜模式
|
|
|
|
|
*/
|
|
|
|
|
CImageApplyFilter(FilterMode type, int kSize = 30);
|
|
|
|
|
|
|
|
|
|
virtual ~CImageApplyFilter();
|
|
|
|
|
|
|
|
|
|
virtual void apply(cv::Mat& pDib, int side);
|
|
|
|
|
|
|
|
|
|
virtual void apply(std::vector<cv::Mat>& mats, bool isTwoSide);
|
|
|
|
|
private:
|
|
|
|
|
void averblur(cv::Mat& src, int kSize);
|
|
|
|
|
|
|
|
|
|
void sharpen(cv::Mat& src, float kSize);
|
|
|
|
|
|
|
|
|
|
void brightSharp(cv::Mat& src);
|
|
|
|
|
|
|
|
|
|
void bilateralFilter(cv::Mat& src, double kernel);
|
|
|
|
|
|
2022-06-18 09:59:25 +00:00
|
|
|
|
void gaussianBlur(cv::Mat& src, int kSize);
|
2022-06-17 10:01:34 +00:00
|
|
|
|
private:
|
|
|
|
|
int m_type;
|
|
|
|
|
float m_kSize;
|
|
|
|
|
double m_kernel;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // !IMAGE_APPLY_SHARPEN_H
|