AI > MemorizeBrightBLOB3 { float similarityThreshold = 0.9f; new L images; static ImageSurface is; static L segment(RGBImage img) { ret autoSegment_blackBG(new BWImage(img), 3); // 2 is too small } void go { // guess L myRects = segment(image); Rect guess = rgbFindMostSimilarClip_multi(image, images, myRects, similarityThreshold); // submit Rect solution = first(submit(guess)); // learn bool correct = solution == null ? guess == null : guess != null && solution.contains(centerOfRect(guess)); if (solution != null && !correct) { solution = autoCropOfRGBImage_blackBG(image, solution); Rect mine = smallestRectContaining(myRects, centerOfRect(solution)); if (mine != null) { images.add(image.clip(mine)); is = showZoomedImage(is, "Memorized BLOBs", mergeImagesHorizontally(images)); } } } }