void quality_calculate_part1(QualityResMap*p_resMap, vector<string> inputPathVec, char* logfilepath, vector<double> qualityRes) { int flag; vector<double> avgVec; avgVec.resize(5); flag = mainSignaltoNoiseRatio(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["信噪比"].assign(qualityRes.begin(), qualityRes.end()); avgVec[0] = qualityRes[0]; flag = mainClarity(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["清晰度"].assign(qualityRes.begin(), qualityRes.end()); avgVec[1] = qualityRes[0]; flag = mainContrastRatio(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["对比度"].assign(qualityRes.begin(), qualityRes.end()); avgVec[2] = qualityRes[0]; flag = mainEntropy(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["熵信息"].assign(qualityRes.begin(), qualityRes.end()); avgVec[3] = qualityRes[0]; flag = mainRadiationUniform(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["均匀辐射"].assign(qualityRes.begin(), qualityRes.end()); avgVec[4] = qualityRes[0]; double total_score = mainComprehensiveEvaluate(avgVec); p_resMap->status = (int)(total_score+0.5); Log::Info("Comprehensive Evaluate Scoree is %lf", total_score); }
void quality_calculate_part3(QualityResMap*p_resMap, vector<string> inputPathVec, char* logfilepath, vector<double> qualityRes) { int flag; flag = mainCrossEntropy(inputPathVec[0], inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["交叉熵"].assign(qualityRes.begin(), qualityRes.end()); flag = mainMutualInformation(inputPathVec[0], inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["互信息"].assign(qualityRes.begin(), qualityRes.end()); flag = mainStructureSimilarity(inputPathVec[0], inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["结构相似度"].assign(qualityRes.begin(), qualityRes.end()); }
void quality_calculate_part2(QualityResMap*p_resMap, vector<string> inputPathVec, char* logfilepath, vector<double> qualityRes) { int flag; flag = mainMean(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["均值"].assign(qualityRes.begin(), qualityRes.end()); flag = mainStriperesidual(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["条纹残余度"].assign(qualityRes.begin(), qualityRes.end()); flag = mainDynamicRange(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["动态变化范围"].assign(qualityRes.begin(), qualityRes.end()); flag = mainVariance(inputPathVec[2], logfilepath, qualityRes); calculateAvg(qualityRes); p_resMap->res["方差"].assign(qualityRes.begin(), qualityRes.end()); }
void WF_sum_avg<T>::operator()(int64_t b, int64_t e, int64_t c) { uint64_t colOut = fFieldIndex[0]; if ((fFrameUnit == WF__FRAME_ROWS) || (fPrev == -1) || (!fPeer->operator()(getPointer(fRowData->at(c)), getPointer(fRowData->at(fPrev))))) { // for unbounded - current row special handling if (fPrev >= b && fPrev < c) b = c; else if (fPrev <= e && fPrev > c) e = c; uint64_t colIn = fFieldIndex[1]; int scale = fRow.getScale(colOut) - fRow.getScale(colIn); for (int64_t i = b; i <= e; i++) { if (i % 1000 == 0 && fStep->cancelled()) break; fRow.setData(getPointer(fRowData->at(i))); if (fRow.isNullValue(colIn) == true) continue; T valIn; getValue(colIn, valIn); checkSumLimit(fSum, valIn); if ((!fDistinct) || (fSet.find(valIn) == fSet.end())) { fSum += valIn; fCount++; if (fDistinct) fSet.insert(valIn); } } if ((fCount > 0) && (fFunctionId == WF__AVG || fFunctionId == WF__AVG_DISTINCT)) fAvg = (T) calculateAvg(fSum, fCount, scale); } T* v = NULL; if (fCount > 0) { if (fFunctionId == WF__AVG || fFunctionId == WF__AVG_DISTINCT) v = &fAvg; else v = &fSum; } setValue(fRow.getColType(colOut), b, e, c, v); fPrev = c; }
void ThermalEngine::calculateVariation(){ ofColor c = prev(1).getColor(target_x * camWidth , target_y * camHeight); float h = c.getBrightness(); ofColor c1 = prev(2).getColor(target_x * camWidth , target_y * camHeight); float h_1 = c1.getBrightness(); float absDist = abs(h_1 - h) / 255.; absDist = ofClamp(absDist, 0, 1); dist.push_back(absDist); if(dist.size() > 100){ dist.erase(dist.begin()); } calculateAvg(); saveThermal(absDist); }
void quality_calculate_part4(QualityResMap* p_resMap, vector<string> inputPathVec, char* logfilepath, vector<int> bandlist, string interkind, vector<double> qualityRes) { int flag; flag = mainSpectralAngleMatrix(inputPathVec[1], inputPathVec[2], logfilepath, bandlist, interkind, qualityRes); calculateAvg(qualityRes); p_resMap->res["光谱角矩阵"].assign(qualityRes.begin(), qualityRes.end()); }