fix: tighten product lock scale adjust clip mask

This commit is contained in:
134 2026-07-06 05:11:23 +08:00
parent fb9f0541fa
commit 00a6ac08df

View File

@ -2687,6 +2687,15 @@ async function buildScaleAdjustRmbgStructureLockedComposite(params: {
) {
return null;
}
const sourceEditBaseMask = filteredSourceBbox
? filteredSourceMask
: highConfidenceSourceMask;
const sourceEditMaskBbox = getScaleAdjustMaskBoundingBox({
height: placement.sourceBox.height,
mask: sourceEditBaseMask,
width: placement.sourceBox.width,
});
if (!sourceEditMaskBbox) return null;
const sourceWashBaseMask = filteredSourceBbox
? solidifyScaleAdjustStructureMask({
box: placement.sourceBox,
@ -2707,15 +2716,26 @@ async function buildScaleAdjustRmbgStructureLockedComposite(params: {
});
const sourceCompositeClipMask = dilateScaleAdjustStructureMask({
height: placement.sourceBox.height,
mask: sourceWashBaseMask,
mask: sourceEditBaseMask,
radius: Math.max(
1,
4,
Math.round(
Math.min(placement.sourceBox.width, placement.sourceBox.height) * 0.003
Math.min(placement.sourceBox.width, placement.sourceBox.height) *
(protectedPersonSide ? 0.018 : 0.014)
)
),
width: placement.sourceBox.width,
});
const sourceWashMaskBbox = getScaleAdjustMaskBoundingBox({
height: placement.sourceBox.height,
mask: sourceWashMask,
width: placement.sourceBox.width,
});
const sourceCompositeClipBbox = getScaleAdjustMaskBoundingBox({
height: placement.sourceBox.height,
mask: sourceCompositeClipMask,
width: placement.sourceBox.width,
});
const sourceWashPatch = await buildScaleAdjustMaskWashPatch({
background,
box: placement.sourceBox,
@ -2833,7 +2853,25 @@ async function buildScaleAdjustRmbgStructureLockedComposite(params: {
protectedPersonMaskApplied: Boolean(protectedPersonMask),
sameSizeCutout,
alphaBandingStats,
sourceClipAlphaRatio: Number(
(
(sourceCompositeClipBbox?.count || 0) /
Math.max(1, placement.sourceBox.width * placement.sourceBox.height)
).toFixed(3)
),
sourceEditAlphaRatio: Number(
(
sourceEditMaskBbox.count /
Math.max(1, placement.sourceBox.width * placement.sourceBox.height)
).toFixed(3)
),
sourceHeight: placement.sourceBox.height,
sourceWashAlphaRatio: Number(
(
(sourceWashMaskBbox?.count || 0) /
Math.max(1, placement.sourceBox.width * placement.sourceBox.height)
).toFixed(3)
),
sourceWidth: placement.sourceBox.width,
});