AutoMaskingArgs
Inheritance: java.lang.Object
All Implemented Interfaces: com.aspose.imaging.masking.options.IMaskingArgs
public class AutoMaskingArgs implements IMaskingArgs
Представляет аргументы, указанные для автоматических методов маскирования
Конструкторы
| Конструктор | Описание |
|---|---|
| AutoMaskingArgs() |
Методы
| Метод | Описание |
|---|---|
| getNumberOfObjects() | Получает количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон). |
| setNumberOfObjects(int value) | Устанавливает количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон). |
| getObjectsRectangles() | Получает прямоугольники объектов, принадлежащие разделённым объектам (необязательно). |
| setObjectsRectangles(Rectangle[] value) | Устанавливает прямоугольники объектов, принадлежащие разделённым объектам (необязательно). |
| getObjectsPoints() | Получает точки, принадлежащие разделённым объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения. |
| setObjectsPoints(Point[][] value) | Устанавливает точки, принадлежащие разделённым объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения. |
| getOrphanedPoints() | Получает точки, которые больше не принадлежат ни одному объекту (необязательно). |
| setOrphanedPoints(Point[] value) | Устанавливает точки, которые больше не принадлежат ни одному объекту (необязательно). |
| getPrecision() | Получает точность метода сегментации (необязательно). |
| setPrecision(double value) | Устанавливает точность метода сегментации (необязательно). |
| getMaxIterationNumber() | Получает максимальное количество итераций. |
| setMaxIterationNumber(int value) | Устанавливает максимальное количество итераций. |
Example: This example shows how to decompose a raster image into multiple images using image masking and the K-means segmentation algorithm.
Этот пример показывает, как разложить растровое изображение на несколько изображений с использованием маскирования изображения и алгоритма сегментации K-средних. Маскирование изображения — это техника обработки изображений, используемая для разделения фона и объектов на переднем плане.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Blue hills.png");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Установите количество кластеров (разделённых объектов). Значение по умолчанию — 2: объект переднего плана и фон.
args.setNumberOfObjects(3);
// Установите максимальное количество итераций.
args.setMaxIterationNumber(50);
// Установите точность метода сегментации (необязательно)
args.setPrecision(1);
// Каждый кластер (сегмент) будет сохранён в отдельный PNG‑файл.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource(new java.io.ByteArrayInputStream(new byte[0])));
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Используйте кластеризацию K‑средних.
// Кластеризация K‑средних позволяет разделить изображение на несколько независимых кластеров (сегментов).
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.KMeans);
maskingOptions.setDecompose(true);
maskingOptions.setArgs(args);
// Цвет фона будет оранжевым.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Создайте экземпляр класса ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Разделите исходное изображение на несколько кластеров (сегментов).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Получите изображения из результата маскирования и сохраните их в PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
final IMaskingLayer resultsItem = maskingResults.get_Item(i);
String outputFileName = String.format("Blue hills.Segment%s.png", resultsItem.getObjectNumber());
Image resultImage = resultsItem.getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
Example: This example shows how to specify suggestions for image masking algorithm to improve precision of segmentation (clustering) method.
Этот пример показывает, как задать предложения для алгоритма маскирования изображения с целью повышения точности метода сегментации (кластеризации). Маскирование изображения — это техника обработки изображений, используемая для разделения фона и объектов на переднем плане.
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try {
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Предложение №1.
// Визуально проанализируйте изображение и задайте область интереса. Результат сегментации будет включать только объекты, полностью находящиеся внутри этой области.
args.setObjectsRectangles(new com.aspose.imaging.Rectangle[]
{
new com.aspose.imaging.Rectangle(86, 6, 270, 364),
});
// Предложение №2.
// Визуально проанализировать изображение и установить точки, принадлежащие отдельным объектам.
args.setObjectsPoints(new com.aspose.imaging.Point[][]
{
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(103, 326)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(280, 43)},
new com.aspose.imaging.Point[]{new com.aspose.imaging.Point(319, 86)},
});
// Каждый кластер (сегмент) будет сохранён в отдельный PNG‑файл.
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Использовать кластеризацию GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(args);
// Цвет фона будет оранжевым.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Создайте экземпляр класса ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Разделите исходное изображение на несколько кластеров (сегментов).
com.aspose.imaging.masking.result.MaskingResult maskingResults = masking.decompose(maskingOptions);
try
{
// Получите изображения из результата маскирования и сохраните их в PNG.
for (int i = 0; i < maskingResults.getLength(); i++) {
String outputFileName = String.format("Gorilla.Segment%s.png", maskingResults.get_Item(i).getObjectNumber());
Image resultImage = maskingResults.get_Item(i).getImage();
try {
resultImage.save(dir + outputFileName);
} finally {
resultImage.close();
}
}
}
finally
{
maskingResults.close();
}
} finally {
image.close();
}
Example: Using a segment mask to speed up the segmentation process
// Параметры экспорта маскирования
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Использовать кластеризацию GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());
// Фоновый цвет будет прозрачным.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getTransparent());
maskingOptions.setExportOptions(exportOptions);
String dir = "c:\\temp\\";
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
try
{
com.aspose.imaging.Size imageSize = image.getSize();
// Уменьшение размера изображения для ускорения процесса сегментации
image.resizeHeightProportionally(600, com.aspose.imaging.ResizeType.HighQualityResample);
// Создайте экземпляр класса ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
// Разделите исходное изображение на несколько кластеров (сегментов).
com.aspose.imaging.masking.result.MaskingResult maskingResult = masking.decompose(maskingOptions);
try
{
// Получение маски переднего плана
com.aspose.imaging.RasterImage foregroundMask = maskingResult.get_Item(1).getMask();
try
{
// Увеличьте размер маски до размера оригинального изображения
foregroundMask.resize(imageSize.getWidth(), imageSize.getHeight(), com.aspose.imaging.ResizeType.NearestNeighbourResample);
// Применение маски к оригинальному изображению для получения сегмента переднего плана
com.aspose.imaging.RasterImage originImage = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "BigImage.jpg");
try
{
com.aspose.imaging.masking.ImageMasking.applyMask(originImage, foregroundMask, maskingOptions);
originImage.save(dir + "BigImage_foreground.png", exportOptions);
}
finally
{
originImage.close();
}
}
finally
{
foregroundMask.close();
}
}
finally
{
maskingResult.close();
}
}
finally
{
image.close();
}
Example: Saving the masking session to a file for long sessions, as well as for the possibility of resuming the session in another environment.
String dir = "c:\\temp\\";
String sessionBackupFile = dir + "session.bak";
// Параметры экспорта маскирования
com.aspose.imaging.imageoptions.PngOptions exportOptions = new com.aspose.imaging.imageoptions.PngOptions();
exportOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
exportOptions.setSource(new com.aspose.imaging.sources.StreamSource());
com.aspose.imaging.masking.options.MaskingOptions maskingOptions = new com.aspose.imaging.masking.options.MaskingOptions();
// Использовать кластеризацию GraphCut.
maskingOptions.setMethod(com.aspose.imaging.masking.options.SegmentationMethod.GraphCut);
maskingOptions.setDecompose(false);
maskingOptions.setArgs(new com.aspose.imaging.masking.options.AutoMaskingArgs());
// Цвет фона будет оранжевым.
maskingOptions.setBackgroundReplacementColor(com.aspose.imaging.Color.getOrange());
maskingOptions.setExportOptions(exportOptions);
// Запуск сеанса в первый раз и сохранение в файл
com.aspose.imaging.RasterImage image = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
// Создайте экземпляр класса ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image);
com.aspose.imaging.masking.IMaskingSession session = masking.createSession(maskingOptions);
try
{
com.aspose.imaging.masking.result.MaskingResult maskingResult = session.decompose();
try
{
com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
try
{
segmentImage.save(dir + "step1.png");
}
finally
{
segmentImage.close();
}
}
finally
{
maskingResult.close();
}
session.save(sessionBackupFile);
}
finally
{
session.dispose();
}
}
finally
{
image.close();
}
// Возобновление сеанса маскирования из файла
com.aspose.imaging.RasterImage image2 = (com.aspose.imaging.RasterImage)com.aspose.imaging.Image.load(dir + "Gorilla.bmp");
try
{
// Создайте экземпляр класса ImageMasking.
com.aspose.imaging.masking.ImageMasking masking = new com.aspose.imaging.masking.ImageMasking(image2);
com.aspose.imaging.masking.IMaskingSession session = masking.loadSession(sessionBackupFile);
try
{
com.aspose.imaging.masking.options.AutoMaskingArgs args = new com.aspose.imaging.masking.options.AutoMaskingArgs();
// Визуально проанализировать изображение и установить точки, принадлежащие отдельным объектам.
args.setObjectsPoints(new Point[][]
{
new Point[]
{
new Point(0, 0), new Point(0, 1), new Point(1, 0),
new Point(1, 1), new Point(2, 0), new Point(2, 1),
new Point(3, 0), new Point(3, 1)
},
});
com.aspose.imaging.masking.result.MaskingResult maskingResult = session.improveDecomposition(args);
try
{
// Явная передача параметров экспорта, поскольку они не сериализуемы
maskingResult.MaskingOptions.setExportOptions(exportOptions);
com.aspose.imaging.RasterImage segmentImage = maskingResult.get_Item(1).getImage();
try
{
segmentImage.save(dir + "step2.png");
}
finally
{
segmentImage.close();
}
}
finally
{
maskingResult.close();
}
}
finally
{
session.dispose();
}
}
finally
{
image2.close();
}
AutoMaskingArgs()
public AutoMaskingArgs()
getNumberOfObjects()
public final int getNumberOfObjects()
Получает количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон).
Значение: количество объектов.
Returns: int — количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон).
setNumberOfObjects(int value)
public final void setNumberOfObjects(int value)
Устанавливает количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон).
Значение: количество объектов.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | количество объектов, на которое следует разделить исходное изображение (необязательно), значение по умолчанию — 2 (объект и фон). |
getObjectsRectangles()
public final Rectangle[] getObjectsRectangles()
Получает прямоугольники объектов, принадлежащие разделённым объектам (необязательно). Этот параметр используется для повышения точности метода сегментации.
Значение: прямоугольники объектов.
Returns: com.aspose.imaging.Rectangle[] — прямоугольники объектов, принадлежащие разделённым объектам (необязательно).
setObjectsRectangles(Rectangle[] value)
public final void setObjectsRectangles(Rectangle[] value)
Устанавливает прямоугольники объектов, принадлежащие разделённым объектам (необязательно). Этот параметр используется для повышения точности метода сегментации.
Значение: прямоугольники объектов.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | Rectangle[] | прямоугольники объектов, принадлежащие разделённым объектам (необязательно). |
getObjectsPoints()
public final Point[][] getObjectsPoints()
Получает точки, принадлежащие разделённым объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения. Этот параметр используется для повышения точности метода сегментации.
Значение: точки объектов.
Returns: com.aspose.imaging.Point[][] — точки, принадлежащие разделённым объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения.
setObjectsPoints(Point[][] value)
public final void setObjectsPoints(Point[][] value)
Устанавливает точки, принадлежащие отдельным объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения. Этот параметр используется для повышения точности метода сегментации.
Значение: точки объектов.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | Point[] | точки, принадлежащие отдельным объектам (необязательно) NumberOfObjects координаты, принадлежащие NumberOfObjects объектам исходного изображения. |
getOrphanedPoints()
public final Point[] getOrphanedPoints()
Получает точки, которые больше не принадлежат ни одному объекту (необязательно). Этот параметр используется только в случае повторной сегментации.
Значение: Оси́роченные точки.
Returns: com.aspose.imaging.Point[] — точки, которые больше не принадлежат ни одному объекту (необязательно).
setOrphanedPoints(Point[] value)
public final void setOrphanedPoints(Point[] value)
Устанавливает точки, которые больше не принадлежат ни одному объекту (необязательно). Этот параметр используется только в случае повторной сегментации.
Значение: Оси́роченные точки.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | Point[] | точки, которые больше не принадлежат ни одному объекту (необязательно). |
getPrecision()
public final double getPrecision()
Получает точность метода сегментации (необязательно).
Значение: Точность метода сегментации (необязательно).
Returns: double — точность метода сегментации (необязательно).
setPrecision(double value)
public final void setPrecision(double value)
Устанавливает точность метода сегментации (необязательно).
Значение: Точность метода сегментации (необязательно).
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | double | точность метода сегментации (необязательно). |
getMaxIterationNumber()
public final int getMaxIterationNumber()
Получает максимальное количество итераций.
Значение: Максимальное максимальное количество итераций.
Returns: int — максимальное количество итераций.
setMaxIterationNumber(int value)
public final void setMaxIterationNumber(int value)
Устанавливает максимальное количество итераций.
Значение: Максимальное максимальное количество итераций.
Parameters:
| Параметр | Тип | Описание |
|---|---|---|
| value | int | максимальное количество итераций. |