@Override public void analyseImage(FImage image) { if (distances == null || distances.height != image.height || distances.width != distances.height) { distances = new FImage(image.width, image.height); indices = new int[image.height][image.width]; } squaredEuclideanDistance(image, distances, indices); }
/** * Test the distance transform * @param args * @throws IOException */ public static void main(String args[]) throws IOException{ FImage i = ImageUtilities.readF(new File("/Users/ss/Desktop/tache.jpg")); EuclideanDistanceTransform etrans = new EuclideanDistanceTransform(); // i.processInplace(new CannyEdgeDetector()); i.inverse(); for(int x = 0;x < i.width; x++) for(int y = 0; y < i.height; y++) if(i.pixels[y][x] == 1.0f) i.setPixel(x, y, Float.MAX_VALUE); DisplayUtilities.display(i); i.analyseWith(etrans); i = etrans.getDistances(); i.normalise(); DisplayUtilities.display(i); } }
protected FImage[] extractDistanceTransforms(FImage [] slices, LTPWeighting weighting) { FImage [] dist = new FImage[slices.length]; int width = slices[0].width; int height = slices[0].height; int [][] indices = new int[height][width]; for (int i=0; i<slices.length; i++) { if (slices[i] == null) continue; dist[i] = new FImage(width, height); EuclideanDistanceTransform.squaredEuclideanDistanceBinary(slices[i], dist[i], indices); for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { dist[i].pixels[y][x] = weighting.weightDistance((float)Math.sqrt(dist[i].pixels[y][x])); } } } return dist; }
/** * Test the distance transform * @param args * @throws IOException */ public static void main(String args[]) throws IOException{ FImage i = ImageUtilities.readF(new File("/Users/ss/Desktop/tache.jpg")); EuclideanDistanceTransform etrans = new EuclideanDistanceTransform(); // i.processInplace(new CannyEdgeDetector()); i.inverse(); for(int x = 0;x < i.width; x++) for(int y = 0; y < i.height; y++) if(i.pixels[y][x] == 1.0f) i.setPixel(x, y, Float.MAX_VALUE); DisplayUtilities.display(i); i.analyseWith(etrans); i = etrans.getDistances(); i.normalise(); DisplayUtilities.display(i); } }
@Override public void analyseImage(FImage image) { if (distances == null || distances.height != image.height || distances.width != distances.height) { distances = new FImage(image.width, image.height); indices = new int[image.height][image.width]; } squaredEuclideanDistance(image, distances, indices); }
EuclideanDistanceTransform.squaredEuclideanDistance(C, D, L);