GraphCutMaskingOptions

GraphCutMaskingOptions class

GraphCut otomatik maskeleme seçenekleri.

public class GraphCutMaskingOptions : MaskingOptions

yapıcılar

İsimTanım
GraphCutMaskingOptions()Default_Constructor

Özellikleri

İsimTanım
Args { get; set; }Segmentasyon algoritması için bağımsız değişkenleri alır veya ayarlar.
BackgroundReplacementColor { get; set; }Arka plan değiştirme rengini alır veya ayarlar.
Decompose { get; set; }Her bir Şekli maskeden ayrı nesne olarak mı yoksa arka plandan ayrılmış maskeden birleşik nesne olarak mı ayırmanın gereksiz olduğunu belirten bir değer alır veya ayarlar.
ExportOptions { get; set; }Görüntü dışa aktarma seçeneklerini alır veya ayarlar.
FeatheringRadius { get; set; }Geçiş yumuşatma yarıçapını alır veya ayarlar.
MaskingArea { get; set; }Maskeleme alanını alır veya ayarlar.
Method { get; set; }Segmentasyon yöntemini alır veya ayarlar.

Örnekler

Görüntü boyutuna dayalı geçiş yumuşatma ile görüntü maskeleme sonucunu kaydetme. Görüntü maskeleme, otomatik olarak hesaplanan varsayılan vuruşlar kullanılarak gerçekleştirilir. AutoMaskingGraphCutOptions öğesinin Args özelliği, varsayılan konturlar sona yerleştirildiğinden atlanabilir.

[C#]

MaskingResult[] results;
using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                {
                                                    CalculateDefaultStrokes = true,
                                                    FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                    Method = SegmentationMethod.GraphCut,
                                                    Decompose = false,
                                                    ExportOptions =
                                                        new PngOptions()
                                                            {
                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                Source = new FileCreateSource("tempFile")
                                                            },
                                                    BackgroundReplacementColor = Color.Transparent
    };

    results = new ImageMasking(image).Decompose(options);
}

using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Görüntü boyutuna dayalı geçiş yumuşatma ile görüntü maskeleme sonucunu kaydetme. Görüntü maskeleme, otomatik olarak hesaplanan varsayılan vuruşlar kullanılarak gerçekleştirilir. Ek olarak, varsayılan iki nesnenin verileri de AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir.

[C#]

List<AssumedObjectData> assumedObjects = new List<AssumedObjectData>();
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    AutoMaskingGraphCutOptions options = new AutoMaskingGraphCutOptions
                                                {
                                                    AssumedObjects = assumedObjects,
                                                    CalculateDefaultStrokes = true,
                                                    FeatheringRadius = (Math.Max(image.Width, image.Height) / 500) + 1,
                                                    Method = SegmentationMethod.GraphCut,
                                                    Decompose = false,
                                                    ExportOptions =
                                                        new PngOptions()
                                                            {
                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                Source = new FileCreateSource("tempFile")
                                                            },
                                                    BackgroundReplacementColor = Color.Transparent
    };

    results = new ImageMasking(image).Decompose(options);
}

using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Grafik Kaydediliyor Geçiş yumuşatma 3’e ayarlıyken görüntü maskeleme sonucunu kesin. Görüntü maskeleme, belirtilen Point dizisi kullanılarak gerçekleştirilir.

[C#]

MaskingResult[] results;
using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    GraphCutMaskingOptions options = new GraphCutMaskingOptions()
                                                {
                                                    FeatheringRadius = 3,
                                                    Method = SegmentationMethod.GraphCut,
                                                    Decompose = false,
                                                    ExportOptions =
                                                        new PngOptions()
                                                            {
                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                Source = new FileCreateSource("tempFile")
                                                            },
                                                    BackgroundReplacementColor = Color.Transparent,
                                                    Args = new AutoMaskingArgs()
                                                            {
                                                                ObjectsPoints = new Point[][]
                                                                                    {
                                                                                        new Point[]
                                                                                            {
                                                                                                new Point(100, 100),
                                                                                            },
                                                                                    }
                                                            }
                                                };

    results = new ImageMasking(image).Decompose(options);
}

using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Görüntü boyutuna dayalı geçiş yumuşatma ile görüntü maskeleme sonucunu kaydetme ve yeni maskeleme yinelemesi için maskeleme seçeneklerini yeniden kullanma. Görüntü maskeleme, otomatik olarak hesaplanan varsayılan vuruşlar kullanılarak gerçekleştirilir. Ek olarak, varsayılan iki nesnenin verileri de AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucunu aldıktan sonra, uygulanan arka plan/ön plan vuruşları değiştirilir ve başka bir maskeleme yinelemesi gerçekleştirilir.

[C#]

List<AssumedObjectData> assumedObjects = new List<AssumedObjectData>();
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options;
using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    options = new AutoMaskingGraphCutOptions
                    {
                        AssumedObjects = assumedObjects,
                        CalculateDefaultStrokes = true,
                        FeatheringRadius = 3,
                        Method = SegmentationMethod.GraphCut,
                        Decompose = false,
                        ExportOptions =
                            new PngOptions()
                                {
                                    ColorType = PngColorType.TruecolorWithAlpha,
                                    Source = new FileCreateSource("tempFile")
                                },
                        BackgroundReplacementColor = Color.Transparent
                    };

    results = new ImageMasking(image).Decompose(options);
}

// Bu noktada uygulanan ön/arka plan vuruşları analiz edilebilir ve buna bağlı olarak ek 
// ön plan/arka plan vuruşları manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    // AutoMaskingGraphCutOptions'ı yeniden kullanarak, varsayılan vuruş hesaplamalarını ikinci kez gerçekleştirmeye gerek yoktur.
    options.CalculateDefaultStrokes = false;
    // AutoMaskingArgs'ın Args özelliğinde hem varsayılan konturlar hem de ObjectsPoints sağlandığında, Point dizileri birleştirilir.
    // İlk ObjectsPoints dizisi, arka plan noktaları dizisi olarak kabul edilir ve 
    // ikinci ObjectsPoints dizisi, bir ön plan noktaları dizisi olarak kabul edilir.
    // AutoMaskingArgs'ın Args özelliğinde hem DefaultObjectsRectangles hem de ObjectsRectangles sağlandığında, 
    // sadece Args'den gelen dizi kullanılıyor.
    options.Args = new AutoMaskingArgs()
                        {
                            ObjectsPoints = new Point[][]
                                                {
                                                    new Point[] { new Point(100, 100), new Point(150, 100) }, 
                                                    new Point[] { new Point(500, 200) }, 
                                                },
                            ObjectsRectangles = new Rectangle[]
                                                    {
                                                        new Rectangle(100, 100, 300, 300), 
                                                    }
                        };
    results = new ImageMasking(image).Decompose(options);
}

using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Görüntü boyutuna dayalı geçiş yumuşatma ile görüntü maskeleme sonucunu kaydetme, elde edilen varsayılan konturları değiştirme ve bunu yeni maskeleme yinelemesi için kullanma. Görüntü maskeleme, otomatik olarak hesaplanan varsayılan vuruşlar kullanılarak gerçekleştirilir. Ek olarak, varsayılan iki nesnenin verileri de AutoMaskingGraphCutOptions’ın AssumedObjects özelliğinde belirtilir. İlk maskeleme sonucunu aldıktan sonra, uygulanan arka plan/ön plan vuruşları değiştirilir ve yeni GraphCutMaskingOptions örneği kullanılarak başka bir maskeleme yinelemesi gerçekleştirilir.

[C#]

List<AssumedObjectData> assumedObjects = new List<AssumedObjectData>();
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Human, new Rectangle(100, 100, 150, 300)));
assumedObjects.Add(new AssumedObjectData(DetectedObjectType.Dog, new Rectangle(300, 100, 50, 30)));

MaskingResult[] results;
AutoMaskingGraphCutOptions options;

using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    options = new AutoMaskingGraphCutOptions
                    {
                        AssumedObjects = assumedObjects,
                        CalculateDefaultStrokes = true,
                        FeatheringRadius = 3,
                        Method = SegmentationMethod.GraphCut,
                        Decompose = false,
                        ExportOptions =
                            new PngOptions()
                                {
                                    ColorType = PngColorType.TruecolorWithAlpha,
                                    Source = new FileCreateSource("tempFile")
                                },
                        BackgroundReplacementColor = Color.Transparent
                    };

    results = new ImageMasking(image).Decompose(options);
}

// Bu noktada uygulanan ön/arka plan vuruşları analiz edilebilir ve buna bağlı olarak ek 
// ön plan/arka plan vuruşları manuel olarak sağlanabilir.
Point[] appliedBackgroundStrokes = options.DefaultBackgroundStrokes;
Point[] appliedForegroundStrokes = options.DefaultForegroundStrokes;
Rectangle[] appliedObjectRectangles = options.DefaultObjectsRectangles;
using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

appliedBackgroundStrokes[5] = new Point(100, 100);
appliedBackgroundStrokes[15] = new Point(150, 100);

appliedForegroundStrokes[1] = new Point(500, 200);

appliedObjectRectangles[0] = new Rectangle(100, 100, 300, 300);

using (RasterImage image = (RasterImage)Image.Load("input.jpg"))
{
    GraphCutMaskingOptions graphCutOptions = new GraphCutMaskingOptions()
                                                    {
                                                        FeatheringRadius = 3,
                                                        Method = SegmentationMethod.GraphCut,
                                                        Decompose = false,
                                                        ExportOptions = new PngOptions()
                                                                            {
                                                                                ColorType = PngColorType.TruecolorWithAlpha,
                                                                                Source = new FileCreateSource("tempFile")
                                                                            },
                                                        BackgroundReplacementColor = Color.Transparent,
                                                        Args = new AutoMaskingArgs()
                                                                {
                                                                    ObjectsPoints = new Point[][]
                                                                                        {
                                                                                            appliedBackgroundStrokes,
                                                                                            appliedForegroundStrokes
                                                                                        },
                                                                    ObjectsRectangles = appliedObjectRectangles
                                                                }
                                                    };
    results = new ImageMasking(image).Decompose(graphCutOptions);
}

using (RasterImage resultImage = (RasterImage)results[1].GetImage())
{
    resultImage.Save("output.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Ayrıca bakınız