private int[] makeCachePointers(int[] lineRadii, int cacheWidth) { int kRadius = kRadius(lineRadii); int kHeight = kHeight(lineRadii); int[] cachePointers = new int[2*kHeight]; for (int i=0; i<kHeight; i++) { cachePointers[2*i] = i*cacheWidth+kRadius + lineRadii[2*i]; cachePointers[2*i+1] = i*cacheWidth+kRadius + lineRadii[2*i+1]; } return cachePointers; }
private int[] makeCachePointers(int[] lineRadii, int cacheWidth) { int kRadius = kRadius(lineRadii); int kHeight = kHeight(lineRadii); int[] cachePointers = new int[2*kHeight]; for (int i=0; i<kHeight; i++) { cachePointers[2*i] = i*cacheWidth+kRadius + lineRadii[2*i]; cachePointers[2*i+1] = i*cacheWidth+kRadius + lineRadii[2*i+1]; } return cachePointers; }
return; int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); final int cacheWidth = roi.width+2*kRadius;
return; int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); final int cacheWidth = roi.width+2*kRadius;
Rectangle roi = ip.getRoi(); int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); int kNPoints = kNPoints(lineRadii);
Rectangle roi = ip.getRoi(); int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); int kNPoints = kNPoints(lineRadii);
void showMasks() { int w=150, h=150; ImageStack stack = new ImageStack(w, h); //for (double r=0.1; r<3; r+=0.01) { for (double r=0.5; r<50; r+=0.5) { ImageProcessor ip = new FloatProcessor(w,h,new int[w*h]); float[] pixels = (float[])ip.getPixels(); int[] lineRadii = makeLineRadii(r); int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); int y0 = h/2-kHeight/2; for (int i = 0, y = y0; i<kHeight; i++, y++) for (int x = w/2+lineRadii[2*i], p = x+y*w; x <= w/2+lineRadii[2*i+1]; x++, p++) pixels[p] = 1f; stack.addSlice("radius="+r+", size="+(2*kRadius+1), ip); } new ImagePlus("Masks", stack).show(); }
void showMasks() { int w=150, h=150; ImageStack stack = new ImageStack(w, h); //for (double r=0.1; r<3; r+=0.01) { for (double r=0.5; r<50; r+=0.5) { ImageProcessor ip = new FloatProcessor(w,h,new int[w*h]); float[] pixels = (float[])ip.getPixels(); int[] lineRadii = makeLineRadii(r); int kHeight = kHeight(lineRadii); int kRadius = kRadius(lineRadii); int y0 = h/2-kHeight/2; for (int i = 0, y = y0; i<kHeight; i++, y++) for (int x = w/2+lineRadii[2*i], p = x+y*w; x <= w/2+lineRadii[2*i+1]; x++, p++) pixels[p] = 1f; stack.addSlice("radius="+r+", size="+(2*kRadius+1), ip); } new ImagePlus("Masks", stack).show(); }
if (isImagePart) { //composite filters ('open maxima' etc.) need larger area in first step int kRadius = kRadius(lineRadii); int kHeight = kHeight(lineRadii); Rectangle roiClone = (Rectangle)roi.clone(); roiClone.grow(kRadius, kHeight/2);
if (isImagePart) { //composite filters ('open maxima' etc.) need larger area in first step int kRadius = kRadius(lineRadii); int kHeight = kHeight(lineRadii); Rectangle roiClone = (Rectangle)roi.clone(); roiClone.grow(kRadius, kHeight/2);