diff --git a/libs/MVS/SceneTexture.cpp b/libs/MVS/SceneTexture.cpp index 2db0fbf..13bb80f 100644 --- a/libs/MVS/SceneTexture.cpp +++ b/libs/MVS/SceneTexture.cpp @@ -1151,24 +1151,11 @@ bool MeshTexture::ListCameraFaces(FaceDataViewArr& facesDatas, float fOutlierThr // continue; } - /* - // 已有的过曝判断保留 float brightnessPerceptual = (0.299f * pixel.r + 0.587f * pixel.g + 0.114f * pixel.b) / 255.0f; - if (brightnessPerceptual > 0.95f) - continue; - - float Y = 0.299f * pixel.r + 0.587f * pixel.g + 0.114f * pixel.b; - float maxChan = MAXF(pixel.r, MAXF(pixel.g, pixel.b)); - float minChan = MINF(pixel.r, MINF(pixel.g, pixel.b)); - float saturation_approx = (maxChan > 0) ? (maxChan - minChan) / maxChan : 0.0f; + // printf("brightnessPerceptual=%f\n", brightnessPerceptual); - // 只两个条件:极亮 + 低饱和 - bool isSpecular = (Y > 240.0f) && (saturation_approx < 0.12f); - - if (isSpecular) { + if (brightnessPerceptual>0.95f) continue; - } - */ // if (!(scene.mesh.invalidFacesRelative.data.contains(idxFace) && scene.is_face_visible_relative(idxFace))) // if (false) @@ -10321,11 +10308,11 @@ void MeshTexture::GlobalSeamLeveling3() ASSERT(idxPatch0 < idxPatch1); const MatIdx rowA((MatIdx)coeffB.size()); - // ★ 新增:如果亮度差太大,说明一个是高光一个是暗区,跳过这个约束 - const float lum0 = GetLuminance(color0); // 或者用 Y 通道 - const float lum1 = GetLuminance(color1); - if (std::abs(lum0 - lum1) > 50.0f) // 阈值可调 - continue; // 不添加这个接缝约束,避免传播高光 + // // ★ 新增:如果亮度差太大,说明一个是高光一个是暗区,跳过这个约束 + // const float lum0 = GetLuminance(color0); // 或者用 Y 通道 + // const float lum1 = GetLuminance(color1); + // if (std::abs(lum0 - lum1) > 50.0f) // 阈值可调 + // continue; // 不添加这个接缝约束,避免传播高光 coeffB.Insert(color1 - color0); ASSERT(ISFINITE(coeffB.back())); @@ -10436,15 +10423,15 @@ void MeshTexture::GlobalSeamLeveling3() const Color col(RGB2YCBCR(Color(v))); - // ★ 新增:如果已经很亮且调整量是正向的,跳过提亮 - if (col[0] > 210.0f && a[0] > 0.0f) { - // 已经够亮了,不再加亮度(但允许降亮度,也允许调色度) - clamped_a[0] = 0.0f; - } else { - clamped_a[0] = CLAMP(a[0], -maxAdjY, maxAdjY); - } - clamped_a[1] = CLAMP(a[1], -maxAdjC, maxAdjC); - clamped_a[2] = CLAMP(a[2], -maxAdjC, maxAdjC); + // // ★ 新增:如果已经很亮且调整量是正向的,跳过提亮 + // if (col[0] > 210.0f && a[0] > 0.0f) { + // // 已经够亮了,不再加亮度(但允许降亮度,也允许调色度) + // clamped_a[0] = 0.0f; + // } else { + // clamped_a[0] = CLAMP(a[0], -maxAdjY, maxAdjY); + // } + // clamped_a[1] = CLAMP(a[1], -maxAdjC, maxAdjC); + // clamped_a[2] = CLAMP(a[2], -maxAdjC, maxAdjC); const Color acol(YCBCR2RGB(Color(col + clamped_a))); for (int p = 0; p < 3; ++p)