Class AutoMaskingArgs
Името на пространството: Aspose.Imaging.Masking.Options Асамблея: Aspose.Imaging.dll (25.4.0)
Представят аргументите, които са посочени за автоматизирани методи за маскиране
public class AutoMaskingArgs : IMaskingArgs
Inheritance
Implements
наследници
object.GetType() , object.MemberwiseClone() , object.ToString() , object.Equals(object?) , object.Equals(object?, object?) , object.ReferenceEquals(object?, object?) , object.GetHashCode()
Examples
Този пример показва как да се раздели растер изображение в няколко изображения с помощта на маскиране на изображението и алгоритъма за сегментиране K-means.
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);
}
}
}
}
Използвайте маска за сегментиране, за да ускорите процеса на сегментация
// 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);
}
}
}
}
Този пример показва как да се определят предложения за алгоритъма за маскиране на изображения за подобряване на точността на метода за сегментиране (кластиране).
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);
}
}
}
}
Съхраняване на сесията за маскиране на файла за дълги сесии, както и за възможността да се повтори сесия в друга среда.
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
AutoMaskingArgs()
public AutoMaskingArgs()
Properties
MaxIterationNumber
Получава или определя максималния брой итерии.
public int MaxIterationNumber { get; set; }
стойност на имота
Examples
Този пример показва как да се раздели растер изображение в няколко изображения с помощта на маскиране на изображението и алгоритъма за сегментиране K-means.
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);
}
}
}
}
NumberOfObjects
Получава или определя броя на обектитеЗа да разделите първоначалното изображение на (опционално), дефолтната стойност е 2 (обект и фон).
public int NumberOfObjects { get; set; }
стойност на имота
Examples
Този пример показва как да се раздели растер изображение в няколко изображения с помощта на маскиране на изображението и алгоритъма за сегментиране K-means.
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);
}
}
}
}
ObjectsPoints
Получава или поставя точките, които принадлежат към отделни обекти (опционално)NumberOfObjects координират обектите, които принадлежат към NumberОfОбект на първоначалното изображение.Този параметър се използва за увеличаване на точността на метода на сегментиране.
public Point[][] ObjectsPoints { get; set; }
стойност на имота
Point [][]
Examples
Този пример показва как да се определят предложения за алгоритъма за маскиране на изображения за подобряване на точността на метода за сегментиране (кластиране).
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);
}
}
}
}
ObjectsRectangles
Получава или поставя обектите правоъгълници, които принадлежат към отделни обекти (опционално).Този параметър се използва за увеличаване на точността на метода на сегментиране.
public Rectangle[] ObjectsRectangles { get; set; }
стойност на имота
Rectangle []
Examples
Този пример показва как да се определят предложения за алгоритъма за маскиране на изображения за подобряване на точността на метода за сегментиране (кластиране).
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);
}
}
}
}
OrphanedPoints
Получава или поставя точките, които вече не принадлежат на нито един обект (опционално).Този параметър се използва само в случай на ресегментация.
public Point[] OrphanedPoints { get; set; }
стойност на имота
Point []
Precision
Получава или определя точността на метода за сегментиране (опционално).
public double Precision { get; set; }
стойност на имота
Examples
Този пример показва как да се раздели растер изображение в няколко изображения с помощта на маскиране на изображението и алгоритъма за сегментиране K-means.
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);
}
}
}
}