@Override public List<? extends PixelSet> segment(final MBFImage image) { final MBFImage input = ColourSpace.convert(image, colourSpace); final float[][] imageData = imageToVector(input); final FloatCentroidsResult result = kmeans.cluster(imageData); final List<PixelSet> out = new ArrayList<PixelSet>(kmeans.getConfiguration().getK()); for (int i = 0; i < kmeans.getConfiguration().getK(); i++) out.add(new PixelSet()); final HardAssigner<float[], ?, ?> assigner = result.defaultHardAssigner(); final int height = image.getHeight(); final int width = image.getWidth(); for (int y = 0, i = 0; y < height; y++) { for (int x = 0; x < width; x++, i++) { final float[] pixel = imageData[i]; final int centroid = assigner.assign(pixel); out.get(centroid).addPixel(x, y); } } return out; } }
@Override public List<? extends PixelSet> segment(final MBFImage image) { final MBFImage input = ColourSpace.convert(image, colourSpace); final float[][] imageData = imageToVector(input); final FloatCentroidsResult result = kmeans.cluster(imageData); final List<PixelSet> out = new ArrayList<PixelSet>(kmeans.getConfiguration().getK()); for (int i = 0; i < kmeans.getConfiguration().getK(); i++) out.add(new PixelSet()); final HardAssigner<float[], ?, ?> assigner = result.defaultHardAssigner(); final int height = image.getHeight(); final int width = image.getWidth(); for (int y = 0, i = 0; y < height; y++) { for (int x = 0; x < width; x++, i++) { final float[] pixel = imageData[i]; final int centroid = assigner.assign(pixel); out.get(centroid).addPixel(x, y); } } return out; } }