Warning: session_start(): open(/var/lib/php/sessions/sess_aqlea4gd4kov33407q7smoa3f7, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
persistable sclass G22PixelSplitMasks is IG22OptimizedMasksHolder> {
replace Mask with IG22Mask>.
settable Pt splitPixel;
settable IG22MasksHolder> darkHolder;
settable IG22MasksHolder> brightHolder;
public L masks() {
ret new ConcatOnDemandList(
darkHolder.masks(),
brightHolder.masks());
}
public L>> subHolders() {
ret ll(darkHolder, brightHolder);
}
public void transformSubHolders(IF1>> f) {
darkHolder = f.get(darkHolder);
brightHolder = f.get(brightHolder);
}
@Override
public PStackComputable findSimilarMasks(G22FindSimilarMasksTask> task) {
ret new FindSimilarMasks(task);
}
record noeq FindSimilarMasks(G22FindSimilarMasksTask task) extends PStackComputableWithStep is IMakeEmptyClone {
bool brightBranch;
public selfType makeEmptyClone() { ret new selfType; }
void step(IPStack stack) {
if (step == 0) {
++step;
bool bright = isMaskBright(task.queryImage);
printVars("step 0", +splitPixel, +bright);
double bias = 0.9;
stack.probabilisticOptions(this, ll(
withProbability(bias, self -> self.brightBranch = bright),
withProbability(1-bias, self -> self.brightBranch = !bright)));
} else {
printVars("step 1", +splitPixel, +brightBranch);
IG22MasksHolder> branch = brightBranch ? brightHolder : darkHolder;
stack.tailCall(branch.findSimilarMasks(task));
}
}
}
// Does the mask belong in darkHolder or brightHolder?
bool isMaskBright(Image2B maskImage) {
ret maskImage.getBoolPixel(splitPixel);
}
!include early #1035854 // Masks holder Include
}