Browse Source

优化脸色发青问题

master
hesuicong 15 hours ago
parent
commit
dbe42abf1f
  1. 17
      libs/MVS/SceneTexture.cpp
  2. 2
      libs/MVS/mask_face_occlusion.py

17
libs/MVS/SceneTexture.cpp

@ -800,6 +800,8 @@ bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThr @@ -800,6 +800,8 @@ bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThr
// scene.mesh.invalidFaces.clear();
}
std::vector<int> faceViewCount(faces.size(), 0);
// extract array of faces viewed by each image
IIndexArr views(_views);
if (views.empty()) {
@ -1105,11 +1107,24 @@ bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThr @@ -1105,11 +1107,24 @@ bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThr
const Face& facet = faces[idxFace];
rasterer.idxFace = idxFace;
if (scene.is_face_visible(strName.c_str(), idxFace))
bool skipVisibilityCheck = false;
int coverage = faceViewCount[idxFace];
if (coverage < 5) {
skipVisibilityCheck = true;
}
if (skipVisibilityCheck || scene.is_face_visible(strName.c_str(), idxFace))
{
rasterer.Project(facet, triangleRasterizer);
if (!rasterer.validFace)
rasterer.Project(facet, triangleRasterizer);
// 如果投影成功,增加面片覆盖率计数
if (rasterer.validFace) {
faceViewCount[idxFace]++;
}
}
}

2
libs/MVS/mask_face_occlusion.py

@ -1353,7 +1353,7 @@ class ModelProcessor: @@ -1353,7 +1353,7 @@ class ModelProcessor:
face_visible = v0_visible | v1_visible | v2_visible
# 使用与CPU版本相同的后续处理
shrunk_visibility = self._shrink_face_visibility(face_visible.cpu().numpy(), 6)
shrunk_visibility = self._shrink_face_visibility(face_visible.cpu().numpy(), 10)
expanded_visibility = self._expand_face_visibility(face_visible.cpu().numpy(), 30)
shrunk_visibility2 = self._shrink_face_visibility(face_visible.cpu().numpy(), 50)
expanded_edge = expanded_visibility & ~shrunk_visibility2

Loading…
Cancel
Save