Warning: session_start(): open(/var/lib/php/sessions/sess_onms8la56mqettrhife2vvjvrd, 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);
}
public PStackComputable findSimilarMasks(
Image2B maskImage, ProbabilisticList outList) {
ret new FindSimilarMasks(maskImage, outList);
}
record noeq FindSimilarMasks(Image2B maskImage,
ProbabilisticList outList) extends PStackComputableWithStep {
bool brightBranch;
void step(IPStack stack) {
if (step == 0) {
++step;
bool bright = isMaskBright(maskImage);
double p = 0.9;
stack.probabilisticOptions(this, ll(
withProbability(p, self -> self.brightBranch = bright),
withProbability(1-p, self -> self.brightBranch = !bright)));
} else {
IG22MasksHolder> branch = brightBranch ? brightHolder : darkHolder;
branch.findSimilarMasks(maskImage, outList);
stack.ret();
}
}
}
// Does the mask belong in darkHolder or brightHolder?
bool isMaskBright(Image2B maskImage) {
ret maskImage.getBoolPixel(splitPixel);
}
!include early #1035854 // Masks holder Include
}