#pragma once #include using namespace cv; class DarkChannelDehaze { public: DarkChannelDehaze(void); ~DarkChannelDehaze(void); void Init(int width, int height); void doDehaze(const Mat& src, Mat& dst); protected: void calcDarkChannel(const Mat& src,Mat& dark); cv::Mat guidedFilter(cv::Mat I,cv::Mat ip,int rid,double eps); cv::Mat calDev(Mat src, Rect img_rect); protected: double A1; double A2; double A3; double A_final; double td; protected: int block;//=7; int w1;//=80; double w;//=0.8; //Mat *src;//=NULL; //Mat *dst;//=NULL; //Mat *dst1=NULL; //Mat *dst2=NULL; //Mat *dst3=NULL; cv::Mat imgroi1; cv::Mat imgroi2; cv::Mat imgroi3; cv::Mat roidark; cv::Mat median1; cv::Mat median2; cv::Mat median3; cv::Mat gau; std::vector dsts; cv::Mat toushelv;//=NULL; Mat g1;//=NULL; Mat j2;//=NULL; Mat j3;//=NULL; cv::Mat pinghua; Mat I;//=NULL; Mat Gau; Mat ip;//=NULL; Mat la; double min_dark; double max_dark; CvPoint min_loc; CvPoint max_loc; double A_dst1; double dst1_min; double A_dst2; double dst2_min; double A_dst3; double dst3_min; double Amax; cv::Mat dcc; cv::Mat dc; cv::Rect ROI_rect; Mat Adcc; cv::Mat dstpinghua,Ihalf; //Mat dc; int hei; int wid; };