MaskingOptions

Inheritance: java.lang.Object

public class MaskingOptions

Représente les options communes de masquage d’image.

Constructeurs

ConstructeurDescription
MaskingOptions()

Champs

ChampDescription
BACKGROUND_OBJECT_NUMBERLe numéro d’objet d’arrière-plan

Méthodes

MéthodeDescription
getMethod()Obtient la méthode de segmentation.
setMethod(int value)Définit la méthode de segmentation.
getArgs()Obtient les arguments de l’algorithme de segmentation.
setArgs(IMaskingArgs value)Définit les arguments de l’algorithme de segmentation.
getExportOptions()Obtient les options d’exportation d’image.
setExportOptions(ImageOptionsBase value)Définit les options d’exportation d’image.
getMaskingArea()Obtient la zone de masquage.
setMaskingArea(Rectangle value)Définit la zone de masquage.
getDecompose()Obtient une valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.
setDecompose(boolean value)Définit une valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.
getBackgroundReplacementColor()Obtient la couleur de remplacement de l’arrière-plan.
setBackgroundReplacementColor(Color value)Définit la couleur de remplacement de l’arrière-plan.

Example: This example shows how to decompose a raster image into multiple images using image masking and the K-means segmentation algorithm.

Cet exemple montre comment décomposer une image raster en plusieurs images en utilisant le masquage d’image et l’algorithme de segmentation K-means. Le masquage d’image est une technique de traitement d’image qui sert à séparer l’arrière-plan des objets d’image au premier plan.

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();

    // Définissez le nombre de clusters (objets séparés). La valeur par défaut est 2, l'objet du premier plan et l'arrière-plan.
    args.setNumberOfObjects(3);

    // Définissez le nombre maximal d'itérations.
    args.setMaxIterationNumber(50);

    // Définissez la précision de la méthode de segmentation (facultatif).
    args.setPrecision(1);

    // Chaque cluster (segment) sera enregistré dans un fichier PNG séparé.
    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();

    // Utilisez le clustering K-means.
    // Le clustering K-means permet de diviser l'image en plusieurs clusters (segments) indépendants.
    maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.KMeans);
    maskingOptions.setDecompose(true);
    maskingOptions.setArgs(args);

    // La couleur d'arrière-plan sera orange.
    maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
    maskingOptions.setExportOptions(exportOptions);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
    try
    {
        // Obtenez les images à partir du résultat du masquage et enregistrez-les au format 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();
}

Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method.

Cet exemple montre comment spécifier des suggestions pour l’algorithme de masquage d’image afin d’améliorer la précision de la méthode de segmentation (clustering). Le masquage d’image est une technique de traitement d’image qui sert à séparer l’arrière-plan des objets d’image au premier plan.

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 n° 1.
    // Analysez l'image visuellement et définissez la zone d'intérêt. Le résultat de la segmentation ne comprendra que les objets qui seront entièrement situés dans cette zone.
    args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
            {
                    new com.aspose.imaging.Rectangle(86, 6, 270, 364),
            });

    // Suggestion n° 2.
    // Analyse l'image visuellement et définit les points qui appartiennent à des objets séparés.
    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)},
            });

    // Chaque cluster (segment) sera enregistré dans un fichier PNG séparé.
    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();

    // Utilisez le clustering GraphCut.
    maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
    maskingOptions.setDecompose(false);
    maskingOptions.setArgs(args);

    // La couleur d'arrière-plan sera orange.
    maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
    maskingOptions.setExportOptions(exportOptions);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);

    try
    {
        // Obtenez les images à partir du résultat du masquage et enregistrez-les au format 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();
}

Example: Using a segment mask to speed up the segmentation process

// Options d’exportation du masquage
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();

// Utilisez le clustering GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());

// La couleur d'arrière-plan sera transparente.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getTransparent());
maskingOptions.setExportOptions(exportOptions);

String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
try
{
    com.aspose.imaging.Size imageSize = image.getSize();

    // Réduire la taille de l'image pour accélérer le processus de segmentation
    image.resizeHeightProportionally(600, com.aspose.imaging.ResizeType.HighQualityResample);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResult = masking.decompose(maskingOptions);
    try
    {
        // Obtention du masque de premier plan
        com.aspose.imaging.RasterImage foregroundMask = maskingResult.get_Item(1).getMask();
        try
        {
            // Augmenter la taille du masque à celle de l'image originale
            foregroundMask.resize(imageSize.getWidth(), imageSize.getHeight(), com.aspose.imaging.ResizeType.NearestNeighbourResample);

            // Appliquer le masque à l'image originale pour obtenir un segment de premier plan
            com.aspose.imaging.RasterImage originImage = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
            try
            {
                com.aspose.imaging.masking.ImageMasking.applyMask(originImage, foregroundMask, maskingOptions);
                originImage.save(dir + "BigImage_foreground.png", exportOptions);
            }
            finally
            {
                originImage.close();
            }
        }
        finally
        {
            foregroundMask.close();
        }
    }
    finally
    {
        maskingResult.close();
    }
}
finally
{
    image.close();
}

Example: Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.

String dir = "c:\\temp\\";
String sessionBackupFile = dir + "session.bak";

// Options d’exportation du masquage
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();

// Utilisez le clustering GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());

// La couleur d'arrière-plan sera orange.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);

// Démarrage d'une session pour la première fois et enregistrement dans un fichier
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    com.aspose.imaging.masking.IMaskingSession session = masking.createSession(maskingOptions);
    try
    {
        com.aspose.imaging.masking.result.MaskingResult maskingResult = session.decompose();
        try
        {
            com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
            try
            {
                segmentImage.save(dir + "step1.png");
            }
            finally
            {
                segmentImage.close();
            }
        }
        finally
        {
            maskingResult.close();
        }

        session.save(sessionBackupFile);
    }
    finally
    {
        session.dispose();
    }
}
finally
{
    image.close();
}

// Reprise d'une session de masquage à partir d'un fichier
com.aspose.imaging.RasterImage image2 = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image2);

    com.aspose.imaging.masking.IMaskingSession session = masking.loadSession(sessionBackupFile);
    try
    {
        com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();

        // Analyse l'image visuellement et définit les points qui appartiennent à des objets séparés.
        args.setObjectsPoints(new Point[][]
                {
                        new Point[]
                                {
                                        new Point(0, 0), new Point(0, 1), new Point(1, 0),
                                        new Point(1, 1), new Point(2, 0), new Point(2, 1),
                                        new Point(3, 0), new Point(3, 1)
                                },
                });
        com.aspose.imaging.masking.result.MaskingResult maskingResult = session.improveDecomposition(args);
        try
        {
            // Transfert explicite des options d'exportation, car il n'est pas sérialisable
            maskingResult.MaskingOptions.setExportOptions(exportOptions);

            com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
            try
            {
                segmentImage.save(dir + "step2.png");
            }
            finally
            {
                segmentImage.close();
            }
        }
        finally
        {
            maskingResult.close();
        }
    }
    finally
    {
        session.dispose();
    }
}
finally
{
    image2.close();
}

MaskingOptions()

public MaskingOptions()

BACKGROUND_OBJECT_NUMBER

public static final int BACKGROUND_OBJECT_NUMBER

Le numéro d’objet d’arrière-plan

getMethod()

public final int getMethod()

Obtient la méthode de segmentation.

Valeur : la méthode de segmentation.

Returns: int - la méthode de segmentation.

setMethod(int value)

public final void setMethod(int value)

Définit la méthode de segmentation.

Valeur : la méthode de segmentation.

Parameters:

ParamètreTypeDescription
valeurintla méthode de segmentation.

Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Cet exemple montre comment spécifier des suggestions pour l’algorithme de masquage d’image afin d’améliorer la précision de la méthode de segmentation (clustering). Le masquage d’image est une technique de traitement d’image qui sert à séparer l’arrière-plan des objets d’image au premier plan.

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 n° 1.
    // Analysez l'image visuellement et définissez la zone d'intérêt. Le résultat de la segmentation ne comprendra que les objets qui seront entièrement situés dans cette zone.
    args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
            {
                    new com.aspose.imaging.Rectangle(86, 6, 270, 364),
            });

    // Suggestion n° 2.
    // Analyse l'image visuellement et définit les points qui appartiennent à des objets séparés.
    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)},
            });

    // Chaque cluster (segment) sera enregistré dans un fichier PNG séparé.
    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();

    // Utilisez le clustering GraphCut.
    maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
    maskingOptions.setDecompose(false);
    maskingOptions.setArgs(args);

    // La couleur d'arrière-plan sera orange.
    maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
    maskingOptions.setExportOptions(exportOptions);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);

    try
    {
        // Obtenez les images à partir du résultat du masquage et enregistrez-les au format 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();
}

getArgs()

public final IMaskingArgs getArgs()

Obtient les arguments de l’algorithme de segmentation.

Valeur : les arguments de l’algorithme de segmentation.

Returns: IMaskingArgs - the arguments for segmentation algorithm.

setArgs(IMaskingArgs value)

public final void setArgs(IMaskingArgs value)

Définit les arguments de l’algorithme de segmentation.

Valeur : les arguments de l’algorithme de segmentation.

Parameters:

ParamètreTypeDescription
valueIMaskingArgsles arguments de l’algorithme de segmentation.

getExportOptions()

public final ImageOptionsBase getExportOptions()

Obtient les options d’exportation d’image.

Valeur : les options d’exportation d’image qui seront utilisées pour créer les images résultantes.

Returns: ImageOptionsBase - the image export options.

setExportOptions(ImageOptionsBase value)

public final void setExportOptions(ImageOptionsBase value)

Définit les options d’exportation d’image.

Valeur : les options d’exportation d’image qui seront utilisées pour créer les images résultantes.

Parameters:

ParamètreTypeDescription
valueImageOptionsBaseles options d’exportation d’image.

Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Cet exemple montre comment spécifier des suggestions pour l’algorithme de masquage d’image afin d’améliorer la précision de la méthode de segmentation (clustering). Le masquage d’image est une technique de traitement d’image qui sert à séparer l’arrière-plan des objets d’image au premier plan.

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 n° 1.
    // Analysez l'image visuellement et définissez la zone d'intérêt. Le résultat de la segmentation ne comprendra que les objets qui seront entièrement situés dans cette zone.
    args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
            {
                    new com.aspose.imaging.Rectangle(86, 6, 270, 364),
            });

    // Suggestion n° 2.
    // Analyse l'image visuellement et définit les points qui appartiennent à des objets séparés.
    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)},
            });

    // Chaque cluster (segment) sera enregistré dans un fichier PNG séparé.
    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();

    // Utilisez le clustering GraphCut.
    maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
    maskingOptions.setDecompose(false);
    maskingOptions.setArgs(args);

    // La couleur d'arrière-plan sera orange.
    maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
    maskingOptions.setExportOptions(exportOptions);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);

    try
    {
        // Obtenez les images à partir du résultat du masquage et enregistrez-les au format 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();
}

getMaskingArea()

public final Rectangle getMaskingArea()

Obtient la zone de masquage.

Valeur : la zone de masquage qui est une zone partielle de l’image source. La valeur Rectangle.Empty signifie la zone complète de l’image source.

Returns: Rectangle - the masking area.

setMaskingArea(Rectangle value)

public final void setMaskingArea(Rectangle value)

Définit la zone de masquage.

Valeur : la zone de masquage qui est une zone partielle de l’image source. La valeur Rectangle.Empty signifie la zone complète de l’image source.

Parameters:

ParamètreTypeDescription
valueRectanglela zone de masquage.

getDecompose()

public final boolean getDecompose()

Obtient une valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.

Valeur : true si décomposer ; sinon, false.

Returns: booléen - une valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.

setDecompose(boolean value)

public final void setDecompose(boolean value)

Définit une valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.

Valeur : true si décomposer ; sinon, false.

Parameters:

ParamètreTypeDescription
valeurbooleanune valeur indiquant s’il est inutile de séparer chaque Shape du masque en tant qu’objet individuel ou en tant qu’objet uni du masque séparé de l’arrière-plan.

getBackgroundReplacementColor()

public final Color getBackgroundReplacementColor()

Obtient la couleur de remplacement de l’arrière-plan.

Valeur : La couleur de remplacement de l’arrière-plan. Cette couleur sera utilisée comme couleur d’arrière-plan dans les images résultantes.

Returns: Color - the background replacement color.

setBackgroundReplacementColor(Color value)

public final void setBackgroundReplacementColor(Color value)

Définit la couleur de remplacement de l’arrière-plan.

Valeur : La couleur de remplacement de l’arrière-plan. Cette couleur sera utilisée comme couleur d’arrière-plan dans les images résultantes.

Parameters:

ParamètreTypeDescription
valueColorla couleur de remplacement de l’arrière-plan.

Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method. Cet exemple montre comment spécifier des suggestions pour l’algorithme de masquage d’image afin d’améliorer la précision de la méthode de segmentation (clustering). Le masquage d’image est une technique de traitement d’image qui sert à séparer l’arrière-plan des objets d’image au premier plan.

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 n° 1.
    // Analysez l'image visuellement et définissez la zone d'intérêt. Le résultat de la segmentation ne comprendra que les objets qui seront entièrement situés dans cette zone.
    args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
            {
                    new com.aspose.imaging.Rectangle(86, 6, 270, 364),
            });

    // Suggestion n° 2.
    // Analyse l'image visuellement et définit les points qui appartiennent à des objets séparés.
    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)},
            });

    // Chaque cluster (segment) sera enregistré dans un fichier PNG séparé.
    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();

    // Utilisez le clustering GraphCut.
    maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
    maskingOptions.setDecompose(false);
    maskingOptions.setArgs(args);

    // La couleur d'arrière-plan sera orange.
    maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
    maskingOptions.setExportOptions(exportOptions);

    // Créer une instance de la classe ImageMasking.
    com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);

    // Diviser l'image source en plusieurs clusters (segments).
    com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);

    try
    {
        // Obtenez les images à partir du résultat du masquage et enregistrez-les au format 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();
}