Použití mediánového a Wienerova filtru

Použití mediánového a Wienerova filtru

Mediánový filtr je nelineární digitální filtrační technika, často používaná k odstranění šumu. Takové snížení šumu je typickým předběžným krokem ke zlepšení výsledků pozdějšího zpracování. Wienerův filtr je optimálním stacionárním lineárním filtrem MSE (střední kvadratická chyba) pro obrázky znehodnocené aditivním šumem a rozmazáním. Pomocí Aspose.PSD pro .NET API mohou vývojáři aplikovat mediánový filtr k odstranění šumu z obrázku a mohou aplikovat gauss wiener filtr na obrázky. Tento článek ukazuje, jak mohou být mediánový filtr a gauss wiener filtr aplikovány na obrázky.

Použití Mediánového Filtru

Aspose.PSD poskytuje třídu MedianFilterOptions k použití filtru na RasterImage. Následující ukázka kódu ukazuje, jak aplikovat mediánový filtr na rastrový obrázek.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"median_test_denoise_out.gif";
// Load the noisy image
using (Image image = Image.Load(sourceFile))
{
// Cast the image into RasterImage
RasterImage rasterImage = image as RasterImage;
if (rasterImage == null)
{
return;
}
// Create an instance of MedianFilterOptions class and set the size, Apply MedianFilterOptions filter to RasterImage object and Save the resultant image
MedianFilterOptions options = new MedianFilterOptions(4);
rasterImage.Filter(image.Bounds, options);
image.Save(destName, new GifOptions());
}

Použití Gauss Wiener Filtru

Aspose.PSD poskytuje třídu GaussWienerFilterOptions k použití filtru na RasterImage. Následující ukázka kódu ukazuje, jak aplikovat gauss wiener filtr na rastrový obrázek.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"gauss_wiener_out.gif";
// Load the noisy image
using (Image image = Image.Load(sourceFile))
{
RasterImage rasterImage = image as RasterImage;
if (rasterImage == null)
{
return;
}
// Create an instance of GaussWienerFilterOptions class and set the radius size and smooth value.
GaussWienerFilterOptions options = new GaussWienerFilterOptions(12, 3);
options.Grayscale = true;
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image
rasterImage.Filter(image.Bounds, options);
image.Save(destName, new GifOptions());
}

Použití Gauss Wiener Filtru Pro Barevný obrázek

Aspose.PSD poskytuje třídu GaussWienerFilterOptions i pro barevné obrázky. Následující ukázka kódu ukazuje, jak aplikovat gauss wiener filtr na barevný obrázek.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"gauss_wiener_color_out.gif";
// Load the noisy image
using (Image image = Image.Load(sourceFile))
{
// Cast the image into RasterImage
RasterImage rasterImage = image as RasterImage;
if (rasterImage == null)
{
return;
}
// Create an instance of GaussWienerFilterOptions class and set the radius size and smooth value.
GaussWienerFilterOptions options = new GaussWienerFilterOptions(5, 1.5);
options.Brightness = 1;
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image
rasterImage.Filter(image.Bounds, options);
image.Save(destName, new GifOptions());
}

Použití Motion Wiener Filtru

Aspose.PSD poskytuje třídu MotionWienerFilterOptions k použití filtru na RasterImage. Následující ukázka kódu ukazuje, jak aplikovat motion wiener filtr na rastrový obrázek.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"motion_filter_out.gif";
// Load the noisy image
using (Image image = Image.Load(sourceFile))
{
// Cast the image into RasterImage
RasterImage rasterImage = image as RasterImage;
if (rasterImage == null)
{
return;
}
// Create an instance of MotionWienerFilterOptions class and set the length, smooth value and angle.
MotionWienerFilterOptions options = new MotionWienerFilterOptions(50, 9, 90);
options.Grayscale = true;
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image
rasterImage.Filter(image.Bounds, options);
image.Save(destName, new GifOptions());
}

Aplikovat korekční filtr na obrázek

Tento článek ukazuje použití Aspose.PSD pro .NET k provedení korekčních filtrů na obrázku. API Aspose.PSD poskytuje efektivní a snadno použitelné metody k dosažení tohoto cíle. Aspose.PSD pro .NET vystavil třídy BilateralSmoothingFilterOptions a SharpenFilterOptions pro filtrace. Třída BilateralSmoothingFilterOptions vyžaduje celé číslo jako velikost. Kroky k provedení změn jsou jednoduché, jak je uvedeno níže:

  1. Načtěte obrázek pomocí tovární metody Load vystavené třídou Image.
  2. Převeďte obrázek na RasterImage.
  3. Vytvořte instanci tříd BilateralSmoothingFilterOptions a SharpenFilterOptions.
  4. Zavolejte metodu RasterImage.Filter a zároveň specifikujte obdélník jako ohraničení obrázku a instanci třídy BilateralSmoothingFilterOptions.
  5. Zavolejte metodu RasterImage.Filter a zároveň specifikujte obdélník jako ohraničení obrázku a instanci třídy SharpenFilterOptions.
  6. Upravte kontrast.
  7. Nastavte jas.
  8. Uložte výsledky.

Použijte algoritmus prahování Bradley

Prahování obrázků se používá v grafických aplikacích. Cílem prahování obrázku je klasifikovat pixely jako „tmavé“ nebo „světlé“. API Aspose.PSD vám umožňuje použít Bradleyské prahování při převodu obrázků. Následující ukázka kódu ukazuje, jak definovat hodnotu prahu a pak spustit Bradleyský prahovací algoritmus.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFile = dataDir + @"sample.psd";
string destName = dataDir + @"binarized_out.png";
// Load the noisy image
// Load an image
using (PsdImage image = (PsdImage)Image.Load(sourceFile))
{
// Define threshold value, Call BinarizeBradley method and pass the threshold value as parameter and Save the output image
double threshold = 0.15;
image.BinarizeBradley(threshold);
image.Save(destName, new PngOptions());
}