|
|
|
|
@ -3035,12 +3035,48 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
@@ -3035,12 +3035,48 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
|
|
|
|
|
|
|
|
|
|
if (angleDeg <= 45.0f) |
|
|
|
|
{ |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
// filteredCams.push_back(idxView);
|
|
|
|
|
|
|
|
|
|
//*
|
|
|
|
|
float brightnessScore = CalculateBrightnessScore(imageData); // 亮度评分函数
|
|
|
|
|
float angleScore = 1.0f - (angleDeg / 45.0f); |
|
|
|
|
float qualityScore = 0.0f; |
|
|
|
|
const FaceDataArr& centerFaceDatas = facesDatas[virtualFaceCenterFaceID]; |
|
|
|
|
for (const FaceData& fd : centerFaceDatas) { |
|
|
|
|
if (fd.idxView == idxView) { |
|
|
|
|
qualityScore = fd.quality; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
qualityScore = std::max(0.0f, std::min(1.0f, qualityScore)); |
|
|
|
|
float overallScore = 0.5f * angleScore + 0.3f * brightnessScore + 0.2f * qualityScore; |
|
|
|
|
if (overallScore > 0.4f) { |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
// filteredCams.push_back(idxView);
|
|
|
|
|
|
|
|
|
|
//*
|
|
|
|
|
float brightnessScore = CalculateBrightnessScore(imageData); // 亮度评分函数
|
|
|
|
|
float angleScore = 1.0f - (angleDeg / 60.0f); |
|
|
|
|
float qualityScore = 0.0f; |
|
|
|
|
const FaceDataArr& centerFaceDatas = facesDatas[virtualFaceCenterFaceID]; |
|
|
|
|
for (const FaceData& fd : centerFaceDatas) { |
|
|
|
|
if (fd.idxView == idxView) { |
|
|
|
|
qualityScore = fd.quality; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
qualityScore = std::max(0.0f, std::min(1.0f, qualityScore)); |
|
|
|
|
float overallScore = 0.5f * angleScore + 0.3f * brightnessScore + 0.2f * qualityScore; |
|
|
|
|
if (overallScore > 0.3f) { |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -3359,9 +3395,8 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
@@ -3359,9 +3395,8 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
|
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
|
|
|
|
|
if (validViewsSize<=0&&false) |
|
|
|
|
if (validViewsSize<=0) |
|
|
|
|
{ |
|
|
|
|
//*
|
|
|
|
|
// int nSize = sortedViews.size(); // (sortedViews.size() > 3) ? 3 : sortedViews.size();
|
|
|
|
|
|
|
|
|
|
// // 计算初始平均值
|
|
|
|
|
@ -3476,7 +3511,6 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
@@ -3476,7 +3511,6 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
|
|
|
|
|
virtualFaceData.quality = totalQuality2 / validIndices.size(); |
|
|
|
|
virtualFaceData.color = totalColor2 / validIndices.size(); |
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
} |
|
|
|
|
else if (validViewsSize>0&&validViewsSize<=2&&false) |
|
|
|
|
{ |
|
|
|
|
@ -3651,7 +3685,7 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
@@ -3651,7 +3685,7 @@ bool MeshTexture::CreateVirtualFaces6(FaceDataViewArr& facesDatas, FaceDataViewA
|
|
|
|
|
|
|
|
|
|
// if (colorDistance <= maxColorDeviation &&
|
|
|
|
|
// luminanceDistance <= maxLuminanceDeviation)
|
|
|
|
|
if (luminanceDistance <= maxLuminanceDeviation) |
|
|
|
|
// if (luminanceDistance <= maxLuminanceDeviation)
|
|
|
|
|
{ |
|
|
|
|
validIndices.push_back(n); |
|
|
|
|
} |
|
|
|
|
@ -4339,7 +4373,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
@@ -4339,7 +4373,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
|
|
|
|
|
} |
|
|
|
|
qualityScore = std::max(0.0f, std::min(1.0f, qualityScore)); |
|
|
|
|
float overallScore = 0.5f * angleScore + 0.3f * brightnessScore + 0.2f * qualityScore; |
|
|
|
|
if (overallScore > 0.15f) { |
|
|
|
|
if (overallScore > 0.2f) { |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
@ -4363,7 +4397,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
@@ -4363,7 +4397,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
|
|
|
|
|
} |
|
|
|
|
qualityScore = std::max(0.0f, std::min(1.0f, qualityScore)); |
|
|
|
|
float overallScore = 0.5f * angleScore + 0.3f * brightnessScore + 0.2f * qualityScore; |
|
|
|
|
if (overallScore > 0.15f) { |
|
|
|
|
if (overallScore > 0.2f) { |
|
|
|
|
filteredCams.push_back(idxView); |
|
|
|
|
} |
|
|
|
|
//*/
|
|
|
|
|
@ -4633,7 +4667,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
@@ -4633,7 +4667,7 @@ bool MeshTexture::CreateVirtualFaces62(FaceDataViewArr& facesDatas, FaceDataView
|
|
|
|
|
|
|
|
|
|
// if (colorDistance <= maxColorDeviation &&
|
|
|
|
|
// luminanceDistance <= maxLuminanceDeviation)
|
|
|
|
|
if (luminanceDistance <= maxLuminanceDeviation) |
|
|
|
|
// if (luminanceDistance <= maxLuminanceDeviation)
|
|
|
|
|
{ |
|
|
|
|
validIndices.push_back(n); |
|
|
|
|
} |
|
|
|
|
@ -6970,9 +7004,9 @@ bool MeshTexture::FaceViewSelection3( unsigned minCommonCameras, float fOutlierT
@@ -6970,9 +7004,9 @@ bool MeshTexture::FaceViewSelection3( unsigned minCommonCameras, float fOutlierT
|
|
|
|
|
// CreateVirtualFaces(facesDatas, virtualFacesDatas, virtualFaces, minCommonCameras);
|
|
|
|
|
// CreateVirtualFaces3(facesDatas, virtualFacesDatas, virtualFaces, minCommonCameras);
|
|
|
|
|
// CreateVirtualFaces4(facesDatas, virtualFacesDatas, virtualFaces, mapFaceToVirtualFace, minCommonCameras);
|
|
|
|
|
// CreateVirtualFaces6(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras);
|
|
|
|
|
CreateVirtualFaces6(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras); |
|
|
|
|
// CreateVirtualFaces61(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras);
|
|
|
|
|
CreateVirtualFaces62(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras); |
|
|
|
|
// CreateVirtualFaces62(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras);
|
|
|
|
|
TD_TIMER_STARTD(); |
|
|
|
|
// CreateVirtualFaces7(facesDatas, virtualFacesDatas, virtualFaces, isVirtualFace, minCommonCameras);
|
|
|
|
|
DEBUG_EXTRA("CreateVirtualFaces7 completed: %s", TD_TIMER_GET_FMT().c_str()); |
|
|
|
|
|