Class ImageMasking

Class ImageMasking

Namespace: Aspose.Imaging.Masking
Assembly: Aspose.Imaging.dll (25.2.0)

Provides image masking operations

public class ImageMasking

Inheritance

objectImageMasking

Inherited Members

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Examples

Using a segment mask to speed up the segmentation process```csharp [C#]

                                                                // Masking export options
                                                                Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                // Use GraphCut clustering.
                                                                maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                maskingOptions.Decompose = false;
                                                                maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                // The backgroung color will be transparent.
                                                                maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Transparent;
                                                                maskingOptions.ExportOptions = exportOptions;

                                                                string dir = "c:\\temp\\";
                                                                using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                {
                                                                    Aspose.Imaging.Size imageSize = image.Size;

                                                                    // Reducing image size to speed up the segmentation process
                                                                    image.ResizeHeightProportionally(600, Aspose.Imaging.ResizeType.HighQualityResample);

                                                                    // Create an instance of the ImageMasking class.
                                                                    Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                    // Divide the source image into several clusters (segments).
                                                                    using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                    {
                                                                        // Getting the foreground mask
                                                                        using (Aspose.Imaging.RasterImage foregroundMask = maskingResult[1].GetMask()) 
                                                                        {
                                                                            // Increase the size of the mask to the size of the original image
                                                                            foregroundMask.Resize(imageSize.Width, imageSize.Height, Aspose.Imaging.ResizeType.NearestNeighbourResample);

                                                                            // Applying the mask to the original image to obtain a foreground segment
                                                                            using (Aspose.Imaging.RasterImage originImage = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                            {
                                                                                Aspose.Imaging.Masking.ImageMasking.ApplyMask(originImage, foregroundMask, maskingOptions);
                                                                                originImage.Save(dir + "BigImage_foreground.png", exportOptions);
                                                                            }
                                                                        }
                                                                    }
                                                                }

Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.```csharp
[C#]

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

                                                                                                                                                 // Masking export options
                                                                                                                                                 Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                 exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                 exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                 Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                 // Use GraphCut clustering.
                                                                                                                                                 maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                                 maskingOptions.Decompose = false;
                                                                                                                                                 maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                 // The backgroung color will be orange.
                                                                                                                                                 maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                 maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                 // Starting a session for the first time and saving to a file
                                                                                                                                                 using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                                 {
                                                                                                                                                     // Create an instance of the ImageMasking class.
                                                                                                                                                     Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                     using (Aspose.Imaging.Masking.IMaskingSession session = masking.CreateSession(maskingOptions))
                                                                                                                                                     {
                                                                                                                                                         using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.Decompose())
                                                                                                                                                         {
                                                                                                                                                             using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                             {
                                                                                                                                                                 segmentImage.Save(dir + "step1.png");
                                                                                                                                                             }
                                                                                                                                                         }

                                                                                                                                                         session.Save(sessionBackupFile);
                                                                                                                                                     }
                                                                                                                                                 }

                                                                                                                                                 // Resuming a masking session from a file
                                                                                                                                                 using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                                 {
                                                                                                                                                     // Create an instance of the ImageMasking class.
                                                                                                                                                     Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                     using (Aspose.Imaging.Masking.IMaskingSession session = masking.LoadSession(sessionBackupFile))
                                                                                                                                                     {
                                                                                                                                                         Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                         // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                         args.ObjectsPoints = 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)
                                                                                                                                                                                              },
                                                                                                                                                                                      };
                                                                                                                                                         using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.ImproveDecomposition(args))
                                                                                                                                                         {
                                                                                                                                                             // Explicit transfer of export options, since it is not serializable
                                                                                                                                                             maskingResult.MaskingOptions.ExportOptions = exportOptions;

                                                                                                                                                             using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                             {
                                                                                                                                                                 segmentImage.Save(dir + "step2.png");
                                                                                                                                                             }
                                                                                                                                                         }
                                                                                                                                                     }
                                                                                                                                                 }

Constructors

ImageMasking(RasterImage)

Initializes a new instance of the Aspose.Imaging.Masking.ImageMasking class.

public ImageMasking(RasterImage sourceImage)

Parameters

sourceImage RasterImage

The source image.

Examples

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.```csharp [C#]

                                                                                                                                                                                                                                                                 string dir = "c:\\temp\\";

                                                                                                                                                                                                                                                                 using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Blue hills.png"))
                                                                                                                                                                                                                                                                 {
                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                                                                                                                                     // Set the number of clusters (separated objects). The default value is 2, the foreground object and the background.
                                                                                                                                                                                                                                                                     args.NumberOfObjects = 3;

                                                                                                                                                                                                                                                                     // Set the maximum number of iterations.
                                                                                                                                                                                                                                                                     args.MaxIterationNumber = 50;

                                                                                                                                                                                                                                                                     // Set the precision of segmentation method (optional)
                                                                                                                                                                                                                                                                     args.Precision = 1;

                                                                                                                                                                                                                                                                     // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                                                     Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                                                     exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                                                     exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                                     // Use K-means clustering.
                                                                                                                                                                                                                                                                     // K-means clustering allows to split image into several independent clusters (segments).
                                                                                                                                                                                                                                                                     maskingOptions.Method = Masking.Options.SegmentationMethod.KMeans;
                                                                                                                                                                                                                                                                     maskingOptions.Decompose = true;
                                                                                                                                                                                                                                                                     maskingOptions.Args = args;

                                                                                                                                                                                                                                                                     // The backgroung color will be orange.
                                                                                                                                                                                                                                                                     maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                                     maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                                     // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                                     // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                                     {
                                                                                                                                                                                                                                                                         // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                                         for (int i = 0; i < maskingResult.Length; i++)
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             string outputFileName = string.Format("Blue hills.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                                             using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                                             {
                                                                                                                                                                                                                                                                                 resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                                             }
                                                                                                                                                                                                                                                                         }
                                                                                                                                                                                                                                                                     }
                                                                                                                                                                                                                                                                 }

Using a segment mask to speed up the segmentation process```csharp
[C#]

                                                                    // Masking export options
                                                                    Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                    exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                    exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                    Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                    // Use GraphCut clustering.
                                                                    maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                    maskingOptions.Decompose = false;
                                                                    maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                    // The backgroung color will be transparent.
                                                                    maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Transparent;
                                                                    maskingOptions.ExportOptions = exportOptions;

                                                                    string dir = "c:\\temp\\";
                                                                    using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                    {
                                                                        Aspose.Imaging.Size imageSize = image.Size;

                                                                        // Reducing image size to speed up the segmentation process
                                                                        image.ResizeHeightProportionally(600, Aspose.Imaging.ResizeType.HighQualityResample);

                                                                        // Create an instance of the ImageMasking class.
                                                                        Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                        // Divide the source image into several clusters (segments).
                                                                        using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                        {
                                                                            // Getting the foreground mask
                                                                            using (Aspose.Imaging.RasterImage foregroundMask = maskingResult[1].GetMask()) 
                                                                            {
                                                                                // Increase the size of the mask to the size of the original image
                                                                                foregroundMask.Resize(imageSize.Width, imageSize.Height, Aspose.Imaging.ResizeType.NearestNeighbourResample);

                                                                                // Applying the mask to the original image to obtain a foreground segment
                                                                                using (Aspose.Imaging.RasterImage originImage = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                                {
                                                                                    Aspose.Imaging.Masking.ImageMasking.ApplyMask(originImage, foregroundMask, maskingOptions);
                                                                                    originImage.Save(dir + "BigImage_foreground.png", exportOptions);
                                                                                }
                                                                            }
                                                                        }
                                                                    }

This example shows how to decompose a raster image into multiple images using image masking and a manual mask. Image masking is an image processing technique that is used to split the background from the foreground image objects.```csharp [C#]

                                                                                                                                                                                                                                            string dir = "c:\\temp\\";

                                                                                                                                                                                                                                            // Define a manual mask.
                                                                                                                                                                                                                                            Aspose.Imaging.GraphicsPath manualMask = new Aspose.Imaging.GraphicsPath();
                                                                                                                                                                                                                                            Aspose.Imaging.Figure figure = new Aspose.Imaging.Figure();
                                                                                                                                                                                                                                            figure.AddShape(new Aspose.Imaging.Shapes.EllipseShape(new RectangleF(50, 50, 40, 40)));
                                                                                                                                                                                                                                            figure.AddShape(new Aspose.Imaging.Shapes.RectangleShape(new RectangleF(10, 20, 50, 30)));
                                                                                                                                                                                                                                            manualMask.AddFigure(figure);

                                                                                                                                                                                                                                            // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                            Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                            exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                            exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                            // Set the manual mask.
                                                                                                                                                                                                                                            Aspose.Imaging.Masking.Options.ManualMaskingArgs args = new Aspose.Imaging.Masking.Options.ManualMaskingArgs();
                                                                                                                                                                                                                                            args.Mask = manualMask;

                                                                                                                                                                                                                                            using (RasterImage image = (RasterImage)Image.Load(dir + "Blue hills.png"))
                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                // Use manual clustering algorithm.
                                                                                                                                                                                                                                                maskingOptions.Method = Masking.Options.SegmentationMethod.Manual;

                                                                                                                                                                                                                                                // All shapes making up a mask will be combined into one. 
                                                                                                                                                                                                                                                maskingOptions.Decompose = false;
                                                                                                                                                                                                                                                maskingOptions.Args = args;

                                                                                                                                                                                                                                                // The backgroung color will be orange.
                                                                                                                                                                                                                                                maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                // The area of the source image that masking will be applied to.
                                                                                                                                                                                                                                                maskingOptions.MaskingArea = new Rectangle(50, 50, 120, 120);

                                                                                                                                                                                                                                                // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                    // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                    for (int i = 0; i < maskingResult.Length; i++)
                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                        string outputFileName = string.Format("Blue hills.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                        using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                            resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                            }

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.```csharp
[C#]

                                                                                                                                                                                                                                                                     string dir = "c:\\temp\\";

                                                                                                                                                                                                                                                                     using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                                                                                                                                                     {
                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new 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.ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             new Rectangle(86, 6, 270, 364),
                                                                                                                                                                                                                                                                         };

                                                                                                                                                                                                                                                                         // Suggestion #2.
                                                                                                                                                                                                                                                                         // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                                                                                                                                         args.ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             new Point[] { new Point(103, 326) },
                                                                                                                                                                                                                                                                             new Point[] { new Point(280, 43) },
                                                                                                                                                                                                                                                                             new Point[] { new Point(319, 86) },
                                                                                                                                                                                                                                                                         };

                                                                                                                                                                                                                                                                         // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                                                         Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                                                         exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                                                         exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                                         // Use GraphCut clustering.
                                                                                                                                                                                                                                                                         maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                                                                                                                                                         maskingOptions.Decompose = false;
                                                                                                                                                                                                                                                                         maskingOptions.Args = args;

                                                                                                                                                                                                                                                                         // The backgroung color will be orange.
                                                                                                                                                                                                                                                                         maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                                         maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                                         // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                                         // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                                         using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                                             for (int i = 0; i < maskingResult.Length; i++)
                                                                                                                                                                                                                                                                             {
                                                                                                                                                                                                                                                                                 string outputFileName = string.Format("Gorilla.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                                                 using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                                                 {
                                                                                                                                                                                                                                                                                     resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                                                 }
                                                                                                                                                                                                                                                                             }
                                                                                                                                                                                                                                                                         }
                                                                                                                                                                                                                                                                     }

Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.```csharp [C#]

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

                                                                                                                                             // Masking export options
                                                                                                                                             Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                             exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                             exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                             Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                             // Use GraphCut clustering.
                                                                                                                                             maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                             maskingOptions.Decompose = false;
                                                                                                                                             maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                             // The backgroung color will be orange.
                                                                                                                                             maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                             maskingOptions.ExportOptions = exportOptions;

                                                                                                                                             // Starting a session for the first time and saving to a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.CreateSession(maskingOptions))
                                                                                                                                                 {
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.Decompose())
                                                                                                                                                     {
                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step1.png");
                                                                                                                                                         }
                                                                                                                                                     }

                                                                                                                                                     session.Save(sessionBackupFile);
                                                                                                                                                 }
                                                                                                                                             }

                                                                                                                                             // Resuming a masking session from a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.LoadSession(sessionBackupFile))
                                                                                                                                                 {
                                                                                                                                                     Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                     // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                     args.ObjectsPoints = 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)
                                                                                                                                                                                          },
                                                                                                                                                                                  };
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.ImproveDecomposition(args))
                                                                                                                                                     {
                                                                                                                                                         // Explicit transfer of export options, since it is not serializable
                                                                                                                                                         maskingResult.MaskingOptions.ExportOptions = exportOptions;

                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step2.png");
                                                                                                                                                         }
                                                                                                                                                     }
                                                                                                                                                 }
                                                                                                                                             }

#### Exceptions

 [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception)

source image is null.

## Methods

### <a id="Aspose_Imaging_Masking_ImageMasking_ApplyMask_Aspose_Imaging_RasterImage_Aspose_Imaging_RasterImage_Aspose_Imaging_Masking_Options_MaskingOptions_"></a> ApplyMask\(RasterImage, RasterImage, MaskingOptions\)

Applies the mask to specified source image.

```csharp
public static void ApplyMask(RasterImage targetImage, RasterImage mask, MaskingOptions maskingOptions)

Parameters

targetImage RasterImage

The target image.

mask RasterImage

The mask image to apply.

maskingOptions MaskingOptions

The masking options.

Examples

Using a segment mask to speed up the segmentation process```csharp [C#]

                                                                // Masking export options
                                                                Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                // Use GraphCut clustering.
                                                                maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                maskingOptions.Decompose = false;
                                                                maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                // The backgroung color will be transparent.
                                                                maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Transparent;
                                                                maskingOptions.ExportOptions = exportOptions;

                                                                string dir = "c:\\temp\\";
                                                                using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                {
                                                                    Aspose.Imaging.Size imageSize = image.Size;

                                                                    // Reducing image size to speed up the segmentation process
                                                                    image.ResizeHeightProportionally(600, Aspose.Imaging.ResizeType.HighQualityResample);

                                                                    // Create an instance of the ImageMasking class.
                                                                    Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                    // Divide the source image into several clusters (segments).
                                                                    using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                    {
                                                                        // Getting the foreground mask
                                                                        using (Aspose.Imaging.RasterImage foregroundMask = maskingResult[1].GetMask()) 
                                                                        {
                                                                            // Increase the size of the mask to the size of the original image
                                                                            foregroundMask.Resize(imageSize.Width, imageSize.Height, Aspose.Imaging.ResizeType.NearestNeighbourResample);

                                                                            // Applying the mask to the original image to obtain a foreground segment
                                                                            using (Aspose.Imaging.RasterImage originImage = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                            {
                                                                                Aspose.Imaging.Masking.ImageMasking.ApplyMask(originImage, foregroundMask, maskingOptions);
                                                                                originImage.Save(dir + "BigImage_foreground.png", exportOptions);
                                                                            }
                                                                        }
                                                                    }
                                                                }

### <a id="Aspose_Imaging_Masking_ImageMasking_CreateSession_Aspose_Imaging_Masking_Options_MaskingOptions_"></a> CreateSession\(MaskingOptions\)

Creates the masking session which can perform retraining decompose operations.

```csharp
public IMaskingSession CreateSession(MaskingOptions options)

Parameters

options MaskingOptions

The options.

Returns

IMaskingSession

the masking session which can perform retraining decompose operations.

Examples

Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.```csharp [C#]

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

                                                                                                                                             // Masking export options
                                                                                                                                             Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                             exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                             exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                             Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                             // Use GraphCut clustering.
                                                                                                                                             maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                             maskingOptions.Decompose = false;
                                                                                                                                             maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                             // The backgroung color will be orange.
                                                                                                                                             maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                             maskingOptions.ExportOptions = exportOptions;

                                                                                                                                             // Starting a session for the first time and saving to a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.CreateSession(maskingOptions))
                                                                                                                                                 {
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.Decompose())
                                                                                                                                                     {
                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step1.png");
                                                                                                                                                         }
                                                                                                                                                     }

                                                                                                                                                     session.Save(sessionBackupFile);
                                                                                                                                                 }
                                                                                                                                             }

                                                                                                                                             // Resuming a masking session from a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.LoadSession(sessionBackupFile))
                                                                                                                                                 {
                                                                                                                                                     Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                     // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                     args.ObjectsPoints = 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)
                                                                                                                                                                                          },
                                                                                                                                                                                  };
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.ImproveDecomposition(args))
                                                                                                                                                     {
                                                                                                                                                         // Explicit transfer of export options, since it is not serializable
                                                                                                                                                         maskingResult.MaskingOptions.ExportOptions = exportOptions;

                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step2.png");
                                                                                                                                                         }
                                                                                                                                                     }
                                                                                                                                                 }
                                                                                                                                             }

### <a id="Aspose_Imaging_Masking_ImageMasking_Decompose_Aspose_Imaging_Masking_Options_MaskingOptions_"></a> Decompose\(MaskingOptions\)

Performs the decompose operation using specified masking options

```csharp
public MaskingResult Decompose(MaskingOptions options)

Parameters

options MaskingOptions

The masking options.

Returns

MaskingResult

Result of masking operation as array of segment image providers.

Examples

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.```csharp [C#]

                                                                                                                                                                                                                                                                 string dir = "c:\\temp\\";

                                                                                                                                                                                                                                                                 using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Blue hills.png"))
                                                                                                                                                                                                                                                                 {
                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                                                                                                                                     // Set the number of clusters (separated objects). The default value is 2, the foreground object and the background.
                                                                                                                                                                                                                                                                     args.NumberOfObjects = 3;

                                                                                                                                                                                                                                                                     // Set the maximum number of iterations.
                                                                                                                                                                                                                                                                     args.MaxIterationNumber = 50;

                                                                                                                                                                                                                                                                     // Set the precision of segmentation method (optional)
                                                                                                                                                                                                                                                                     args.Precision = 1;

                                                                                                                                                                                                                                                                     // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                                                     Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                                                     exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                                                     exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                                     // Use K-means clustering.
                                                                                                                                                                                                                                                                     // K-means clustering allows to split image into several independent clusters (segments).
                                                                                                                                                                                                                                                                     maskingOptions.Method = Masking.Options.SegmentationMethod.KMeans;
                                                                                                                                                                                                                                                                     maskingOptions.Decompose = true;
                                                                                                                                                                                                                                                                     maskingOptions.Args = args;

                                                                                                                                                                                                                                                                     // The backgroung color will be orange.
                                                                                                                                                                                                                                                                     maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                                     maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                                     // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                                     Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                                     // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                                     {
                                                                                                                                                                                                                                                                         // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                                         for (int i = 0; i &lt; maskingResult.Length; i++)
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             string outputFileName = string.Format("Blue hills.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                                             using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                                             {
                                                                                                                                                                                                                                                                                 resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                                             }
                                                                                                                                                                                                                                                                         }
                                                                                                                                                                                                                                                                     }
                                                                                                                                                                                                                                                                 }

Using a segment mask to speed up the segmentation process```csharp
[C#]

                                                                    // Masking export options
                                                                    Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                    exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                    exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                    Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                    // Use GraphCut clustering.
                                                                    maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                    maskingOptions.Decompose = false;
                                                                    maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                    // The backgroung color will be transparent.
                                                                    maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Transparent;
                                                                    maskingOptions.ExportOptions = exportOptions;

                                                                    string dir = "c:\\temp\\";
                                                                    using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                    {
                                                                        Aspose.Imaging.Size imageSize = image.Size;

                                                                        // Reducing image size to speed up the segmentation process
                                                                        image.ResizeHeightProportionally(600, Aspose.Imaging.ResizeType.HighQualityResample);

                                                                        // Create an instance of the ImageMasking class.
                                                                        Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                        // Divide the source image into several clusters (segments).
                                                                        using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                        {
                                                                            // Getting the foreground mask
                                                                            using (Aspose.Imaging.RasterImage foregroundMask = maskingResult[1].GetMask()) 
                                                                            {
                                                                                // Increase the size of the mask to the size of the original image
                                                                                foregroundMask.Resize(imageSize.Width, imageSize.Height, Aspose.Imaging.ResizeType.NearestNeighbourResample);

                                                                                // Applying the mask to the original image to obtain a foreground segment
                                                                                using (Aspose.Imaging.RasterImage originImage = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "BigImage.jpg"))
                                                                                {
                                                                                    Aspose.Imaging.Masking.ImageMasking.ApplyMask(originImage, foregroundMask, maskingOptions);
                                                                                    originImage.Save(dir + "BigImage_foreground.png", exportOptions);
                                                                                }
                                                                            }
                                                                        }
                                                                    }

This example shows how to decompose a raster image into multiple images using image masking and a manual mask. Image masking is an image processing technique that is used to split the background from the foreground image objects.```csharp [C#]

                                                                                                                                                                                                                                            string dir = "c:\\temp\\";

                                                                                                                                                                                                                                            // Define a manual mask.
                                                                                                                                                                                                                                            Aspose.Imaging.GraphicsPath manualMask = new Aspose.Imaging.GraphicsPath();
                                                                                                                                                                                                                                            Aspose.Imaging.Figure figure = new Aspose.Imaging.Figure();
                                                                                                                                                                                                                                            figure.AddShape(new Aspose.Imaging.Shapes.EllipseShape(new RectangleF(50, 50, 40, 40)));
                                                                                                                                                                                                                                            figure.AddShape(new Aspose.Imaging.Shapes.RectangleShape(new RectangleF(10, 20, 50, 30)));
                                                                                                                                                                                                                                            manualMask.AddFigure(figure);

                                                                                                                                                                                                                                            // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                            Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                            exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                            exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                            // Set the manual mask.
                                                                                                                                                                                                                                            Aspose.Imaging.Masking.Options.ManualMaskingArgs args = new Aspose.Imaging.Masking.Options.ManualMaskingArgs();
                                                                                                                                                                                                                                            args.Mask = manualMask;

                                                                                                                                                                                                                                            using (RasterImage image = (RasterImage)Image.Load(dir + "Blue hills.png"))
                                                                                                                                                                                                                                            {
                                                                                                                                                                                                                                                Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                // Use manual clustering algorithm.
                                                                                                                                                                                                                                                maskingOptions.Method = Masking.Options.SegmentationMethod.Manual;

                                                                                                                                                                                                                                                // All shapes making up a mask will be combined into one. 
                                                                                                                                                                                                                                                maskingOptions.Decompose = false;
                                                                                                                                                                                                                                                maskingOptions.Args = args;

                                                                                                                                                                                                                                                // The backgroung color will be orange.
                                                                                                                                                                                                                                                maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                // The area of the source image that masking will be applied to.
                                                                                                                                                                                                                                                maskingOptions.MaskingArea = new Rectangle(50, 50, 120, 120);

                                                                                                                                                                                                                                                // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                    // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                    for (int i = 0; i &lt; maskingResult.Length; i++)
                                                                                                                                                                                                                                                    {
                                                                                                                                                                                                                                                        string outputFileName = string.Format("Blue hills.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                        using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                            resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                            }

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.```csharp
[C#]

                                                                                                                                                                                                                                                                     string dir = "c:\\temp\\";

                                                                                                                                                                                                                                                                     using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                                                                                                                                                     {
                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new 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.ObjectsRectangles = new Rectangle[]
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             new Rectangle(86, 6, 270, 364),
                                                                                                                                                                                                                                                                         };

                                                                                                                                                                                                                                                                         // Suggestion #2.
                                                                                                                                                                                                                                                                         // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                                                                                                                                         args.ObjectsPoints = new Point[][]
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             new Point[] { new Point(103, 326) },
                                                                                                                                                                                                                                                                             new Point[] { new Point(280, 43) },
                                                                                                                                                                                                                                                                             new Point[] { new Point(319, 86) },
                                                                                                                                                                                                                                                                         };

                                                                                                                                                                                                                                                                         // Each cluster (segment) will be stored to a separate PNG file.
                                                                                                                                                                                                                                                                         Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                                                                                                                                                         exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                                                                                                                                                         exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                                                                                                                                                         // Use GraphCut clustering.
                                                                                                                                                                                                                                                                         maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                                                                                                                                                         maskingOptions.Decompose = false;
                                                                                                                                                                                                                                                                         maskingOptions.Args = args;

                                                                                                                                                                                                                                                                         // The backgroung color will be orange.
                                                                                                                                                                                                                                                                         maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                                                                                                                                                         maskingOptions.ExportOptions = exportOptions;

                                                                                                                                                                                                                                                                         // Create an instance of the ImageMasking class.
                                                                                                                                                                                                                                                                         Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                                                                                                                                         // Divide the source image into several clusters (segments).
                                                                                                                                                                                                                                                                         using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = masking.Decompose(maskingOptions))
                                                                                                                                                                                                                                                                         {
                                                                                                                                                                                                                                                                             // Obtain images from masking result and save them to PNG.
                                                                                                                                                                                                                                                                             for (int i = 0; i &lt; maskingResult.Length; i++)
                                                                                                                                                                                                                                                                             {
                                                                                                                                                                                                                                                                                 string outputFileName = string.Format("Gorilla.Segment{0}.png", maskingResult[i].ObjectNumber);
                                                                                                                                                                                                                                                                                 using (Aspose.Imaging.Image resultImage = maskingResult[i].GetImage())
                                                                                                                                                                                                                                                                                 {
                                                                                                                                                                                                                                                                                     resultImage.Save(dir + outputFileName);
                                                                                                                                                                                                                                                                                 }
                                                                                                                                                                                                                                                                             }
                                                                                                                                                                                                                                                                         }
                                                                                                                                                                                                                                                                     }

DecomposeAsync(MaskingOptions)

Creates the asynchronous decompose task using specified masking options.

public IMaskingAsyncTask DecomposeAsync(MaskingOptions options)

Parameters

options MaskingOptions

The masking options.

Returns

IMaskingAsyncTask

The asynchronous decompose task

LoadSession(Stream)

Load the session from the specified stream.

public IMaskingSession LoadSession(Stream stream)

Parameters

stream Stream

The stream.

Returns

IMaskingSession

the masking session which can perform retraining decompose operations.

LoadSession(string)

Load the session from the specified file.

public IMaskingSession LoadSession(string filePath)

Parameters

filePath string

The file path.

Returns

IMaskingSession

the masking session which can perform retraining decompose operations.

Examples

Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.```csharp [C#]

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

                                                                                                                                             // Masking export options
                                                                                                                                             Aspose.Imaging.ImageOptions.PngOptions exportOptions = new Aspose.Imaging.ImageOptions.PngOptions();
                                                                                                                                             exportOptions.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;
                                                                                                                                             exportOptions.Source = new Aspose.Imaging.Sources.StreamSource(new System.IO.MemoryStream());

                                                                                                                                             Aspose.Imaging.Masking.Options.MaskingOptions maskingOptions = new Aspose.Imaging.Masking.Options.MaskingOptions();

                                                                                                                                             // Use GraphCut clustering.
                                                                                                                                             maskingOptions.Method = Masking.Options.SegmentationMethod.GraphCut;
                                                                                                                                             maskingOptions.Decompose = false;
                                                                                                                                             maskingOptions.Args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                             // The backgroung color will be orange.
                                                                                                                                             maskingOptions.BackgroundReplacementColor = Aspose.Imaging.Color.Orange;
                                                                                                                                             maskingOptions.ExportOptions = exportOptions;

                                                                                                                                             // Starting a session for the first time and saving to a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.CreateSession(maskingOptions))
                                                                                                                                                 {
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.Decompose())
                                                                                                                                                     {
                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step1.png");
                                                                                                                                                         }
                                                                                                                                                     }

                                                                                                                                                     session.Save(sessionBackupFile);
                                                                                                                                                 }
                                                                                                                                             }

                                                                                                                                             // Resuming a masking session from a file
                                                                                                                                             using (Aspose.Imaging.RasterImage image = (Aspose.Imaging.RasterImage)Aspose.Imaging.Image.Load(dir + "Gorilla.bmp"))
                                                                                                                                             {
                                                                                                                                                 // Create an instance of the ImageMasking class.
                                                                                                                                                 Aspose.Imaging.Masking.ImageMasking masking = new Aspose.Imaging.Masking.ImageMasking(image);

                                                                                                                                                 using (Aspose.Imaging.Masking.IMaskingSession session = masking.LoadSession(sessionBackupFile))
                                                                                                                                                 {
                                                                                                                                                     Aspose.Imaging.Masking.Options.AutoMaskingArgs args = new Aspose.Imaging.Masking.Options.AutoMaskingArgs();

                                                                                                                                                     // Analyze the image visually and set the points that belong to separated objects.
                                                                                                                                                     args.ObjectsPoints = 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)
                                                                                                                                                                                          },
                                                                                                                                                                                  };
                                                                                                                                                     using (Aspose.Imaging.Masking.Result.MaskingResult maskingResult = session.ImproveDecomposition(args))
                                                                                                                                                     {
                                                                                                                                                         // Explicit transfer of export options, since it is not serializable
                                                                                                                                                         maskingResult.MaskingOptions.ExportOptions = exportOptions;

                                                                                                                                                         using (Aspose.Imaging.RasterImage segmentImage = maskingResult[1].GetImage())
                                                                                                                                                         {
                                                                                                                                                             segmentImage.Save(dir + "step2.png");
                                                                                                                                                         }
                                                                                                                                                     }
                                                                                                                                                 }
                                                                                                                                             }