Packages

 

com.aspose.imaging.masking.result

Class MaskingResult

  • All Implemented Interfaces:
    com.aspose.ms.System.IDisposable, Closeable, AutoCloseable


    public abstract class MaskingResult
    extends DisposableObject

    Base abstract class which can provide result image from image masking system.

    See Also:
    DisposableObject
    Code example:

    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);
    
        // Obtain images from masking result and save them to PNG.
        for (int i = 0; i < maskingResults.length; i++) {
            String outputFileName = String.format("Blue hills.Segment%s.png", maskingResults[i].getObjectNumber());
            com.aspose.imaging.Image resultImage = maskingResults[i].getImage();
            try {
                resultImage.save(dir + outputFileName);
            } finally {
                resultImage.dispose();
            }
        }
    } finally {
        image.dispose();
    }
    

    • Method Detail

      • getObjectNumber

        public final int getObjectNumber()

        Gets the object number.

        Value: The object number.
        Returns:
        the object number.
      • getImage

        public abstract Image getImage()

        Provides result image.

        Returns:
        Result image.