public abstract class MaskingResult extends DisposableObject implements Iterable<IMaskingLayer>
Base abstract class which can provide result image from image masking system.
DisposableObject
This example shows how to decompose a raster image into multiple images using image masking and the K-means segmentation algorithm. Image masking is an image processing technique that is used to split the background from the foreground image objects.
String dir = "c:\\temp\\"; com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Blue hills.png"); try { com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs(); // Set the number of clusters (separated objects). The default value is 2, the foreground object and the background. args.setNumberOfObjects(3); // Set the maximum number of iterations. args.setMaxIterationNumber(50); // Set the precision of segmentation method (optional) args.setPrecision(1); // Each cluster (segment) will be stored to a separate PNG file. com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions(); exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha); exportOptions.setSource(new com.aspose.imaging.sources.StreamSource(new java.io.ByteArrayInputStream(new byte[0]))); com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions(); // Use K-means clustering. // K-means clustering allows to split image into several independent clusters (segments). maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.KMeans); maskingOptions.setDecompose(true); maskingOptions.setArgs(args); // The backgroung color will be orange. maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange()); maskingOptions.setExportOptions(exportOptions); // Create an instance of the ImageMasking class. com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image); // Divide the source image into several clusters (segments). com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions); try { // Obtain images from masking result and save them to PNG. for (int i = 0; i < maskingResults.getLength(); i++) { final IMaskingLayer resultsItem = maskingResults.get_Item(i); String outputFileName = String.format("Blue hills.Segment%s.png", resultsItem.getObjectNumber()); Image resultImage = resultsItem.getImage(); try { resultImage.save(dir + outputFileName); } finally { resultImage.close(); } } } finally { maskingResults.close(); } } finally { image.close(); }
Modifier and Type | Field and Description |
---|---|
MaskingOptions |
MaskingOptions
The masking options
|
Modifier and Type | Method and Description |
---|---|
IMaskingLayer |
get_Item(int index)
Gets the
IMaskingLayer at the specified index. |
abstract IMaskingLayer[] |
getLayers()
Gets the layers.
|
int |
getLength()
Gets the length.
|
Iterator<IMaskingLayer> |
iterator()
Gets the enumerator.
|
close, dispose, getDisposed
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEach, spliterator
public final MaskingOptions MaskingOptions
The masking options
public abstract IMaskingLayer[] getLayers()
Gets the layers.
Value: The layers.public final int getLength()
Gets the length.
Value: The length.This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Image masking is an image processing technique that is used to split the background from the foreground image objects.
String dir = "c:\\temp\\"; com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp"); try { com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs(); // Suggestion #1. // Analyze the image visually and set the area of interest. The result of segmentation will include only objects that will be completely located within this area. args.setObjectsRectangles(new com.aspose.imaging.Rectangle[] { new com.aspose.imaging.Rectangle(86, 6, 270, 364), }); // Suggestion #2. // Analyze the image visually and set the points that belong to separated objects. args.setObjectsPoints(new com.aspose.imaging.Point[][] { new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)}, new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)}, new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)}, }); // Each cluster (segment) will be stored to a separate PNG file. com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions(); exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha); exportOptions.setSource(new com.aspose.imaging.sources.StreamSource()); com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions(); // Use GraphCut clustering. maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut); maskingOptions.setDecompose(false); maskingOptions.setArgs(args); // The background color will be orange. maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange()); maskingOptions.setExportOptions(exportOptions); // Create an instance of the ImageMasking class. com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image); // Divide the source image into several clusters (segments). com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions); try { // Obtain images from masking result and save them to PNG. for (int i = 0; i < maskingResults.getLength(); i++) { String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber()); Image resultImage = maskingResults.get_Item(i).getImage(); try { resultImage.save(dir + outputFileName); } finally { resultImage.close(); } } } finally { maskingResults.close(); } } finally { image.close(); }
public final IMaskingLayer get_Item(int index)
Gets the IMaskingLayer
at the specified index.
index
- The index.
Value:
The IMaskingLayer
.public final Iterator<IMaskingLayer> iterator()
Gets the enumerator.
iterator
in interface Iterable<IMaskingLayer>