|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>ͼ<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>ʱ<EFBFBD>䣺2015 05 15
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
|
|
|
|
// <20>鱨<EFBFBD><E9B1A8><EFBFBD><EFBFBD>ͨ<EFBFBD>ýṹ
|
|
|
|
|
#include "QBStru.h"
|
|
|
|
|
|
|
|
|
|
// OpenCV
|
|
|
|
|
#include <opencv2\opencv.hpp>
|
|
|
|
|
using namespace cv;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 1. OpenCV<43>ṹ<EFBFBD>µ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>OpenCV<43>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
//<2F><><EFBFBD>룺 1. img <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
// 2. A_MAX <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, A_MAX < 0 ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>(<28>ر<EFBFBD><D8B1><EFBFBD>ʱ)<29><> <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,255<35><35><EFBFBD><EFBFBD><EFBFBD>쳣ֵ<ECB3A3><D6B5><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
// 3. degree <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,1<><31><EFBFBD><EFBFBD><EFBFBD>쳣ֵ<ECB3A3><D6B5><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. HazeFree <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
// 2. <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>true<75><65>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>false
|
|
|
|
|
bool DeHazeImg(const cv::Mat &img, cv::Mat &HazeFree, double A_MAX = -1, double degree = 0.78);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 2. ImgStru<72>ṹ<EFBFBD>µ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ImgStru<72>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
//<2F><><EFBFBD>룺 1. src <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
// 2. A_MAX <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, A_MAX < 0 ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>(<28>ر<EFBFBD><D8B1><EFBFBD>ʱ)<29><> <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,255<35><35><EFBFBD><EFBFBD><EFBFBD>쳣ֵ<ECB3A3><D6B5><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
// 3. degree <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,1<><31><EFBFBD><EFBFBD><EFBFBD>쳣ֵ<ECB3A3><D6B5><EFBFBD><EFBFBD>Ӧ
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. dst <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
// 2. <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>true<75><65>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>false
|
|
|
|
|
bool ImgStruDeHazeControl(ImgStru* src, ImgStru* dst, int A_MAX = -1, double degree = 0.78);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 3. QBStru<72>ṹ<EFBFBD>µ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>ܣ<EFBFBD>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>룺 1. qbData ͨ<><CDA8><EFBFBD>鱨<EFBFBD><E9B1A8><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
|
|
|
|
// 2. A_MAX <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, A_MAX < 0 ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>(<28>ر<EFBFBD><D8B1><EFBFBD>ʱ)<29><> <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,255<35><35>
|
|
|
|
|
// 3. degree <20><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ч<EFBFBD><D0A7>, <20><>Ч<EFBFBD><D0A7>Χ<EFBFBD><CEA7>0,1<><31>
|
|
|
|
|
// 3. bSrcFirst Ĭ<><C4AC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>srcImg, srcImg-->dstImg
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>dstImg<6D><67>dstImg<6D><67><EFBFBD><EFBFBD>>dstImg
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1. qbData <20><>ͼ<EFBFBD><CDBC>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>鱨<EFBFBD><E9B1A8><EFBFBD>ݽṹ<DDBD><E1B9B9>
|
|
|
|
|
// 2. <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>true<75><65>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>false
|
|
|
|
|
//˵<><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>Ա<EFBFBD>ʶλ<CAB6><CEBB><EFBFBD><EFBFBD>Чʱֱ<CAB1>ӷ<EFBFBD><D3B7>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κδ<CEBA><CEB4><EFBFBD>;
|
|
|
|
|
bool QBStruDeHazeControl(QBStru *qbData, int A_MAX = -1, double degree = 0.78, bool bSrcFirst = true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|