!7 // uses only one prototype image // goes through different granularities at once cmodule ImageRecogSpike { S prototypeImageID = #1102884; S inputImageID = #1102883; transient L widths = ll(32, 64, 128); transient new L integralImages; transient BWIntegralImage baseImage; transient JTabbedPane tabs = jTabbedPane(); transient BWImage prototypeImage; transient new L levels; // recognizers for each granularity class OneLevel extends SteppableAndBest { IBWIntegralImage ii; public bool step() { false; // done } } start-thread { if (baseImage == null) baseImage = BWIntegralImage(loadImage2(inputImageID)); if (prototypeImage == null) prototypeImage = loadBWImage(prototypeImageID); for (int w : widths) { IBWIntegralImage ii = scaledIBWIntegralImage(baseImage, w); integralImages.add(ii); addTab(tabs, "w=" + w, jFullCenterScroll(jPixelatedZoomedImageSurface( doubleRatio(baseImage.getWidth(), w), iBWIntegralImageToBWImage(ii)))); levels.add(setAll(new OneLevel, +ii)); } addTab(tabs, "Prototype", jFullCenterScroll(jPixelatedZoomedImageSurface(4, prototypeImage))); } visual tabs; }