Anwendung von Median- und Wiener-Filtern
Anwendung von Median- und Wiener-Filtern
Der Medianfilter ist eine nichtlineare digitale Filtertechnik, die häufig zur Rauschunterdrückung verwendet wird. Diese Rauschreduktion ist ein typischer Preprocessing-Schritt, um die Ergebnisse der späteren Verarbeitung zu verbessern. Der Wienerfilter ist der MSE (Mean Squared Error) optimale stationäre lineare Filter für Bilder, die durch additive Rauschen und Unschärfe verschlechtert wurden. Mithilfe der Aspose.PSD für Java API können Entwickler den Medianfilter zur Rauschunterdrückung auf das Bild anwenden und den Gaußschen Wienerfilter auf Bilder anwenden. Dieser Artikel zeigt, wie der Medianfilter und der Gaußsche Wienerfilter auf Bilder angewendet werden können.
Anwendung des Medianfilters
Aspose.PSD bietet die Klasse MedianFilterOptions, um den Filter auf ein Rasterbild anzuwenden. Der folgende Code-Ausschnitt zeigt, wie der Medianfilter auf ein Rasterbild angewendet wird.
String dataDir = Utils.getDataDir(ApplyMedianAndWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "median_test_denoise_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
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.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
Anwendung des Gaußschen Wienerfilters
Aspose.PSD bietet die Klasse GaussWienerFilterOptions, um den Filter auf ein Rasterbild anzuwenden. Der folgende Code-Ausschnitt zeigt, wie der Gaußsche Wienerfilter auf ein Rasterbild angewendet wird.
String dataDir = Utils.getDataDir(ApplyGausWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "gauss_wiener_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
RasterImage rasterImage = (RasterImage) image) { | |
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.setGrayscale(true); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
Anwendung des Gaußschen Wienerfilters auf Farbbilder
Aspose.PSD bietet auch GaussWienerFilterOptions für Farbbilder. Der folgende Code-Ausschnitt zeigt, wie der Gaußsche Wienerfilter auf ein Farbbild angewendet wird.
String dataDir = Utils.getDataDir(ApplyGausWienerFiltersForColorImage.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "gauss_wiener_color_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
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.setBrightness(1); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
Anwendung des Motion Wienerfilters
Aspose.PSD bietet die Klasse MotionWienerFilterOptions, um den Filter auf ein Rasterbild anzuwenden. Der folgende Code-Ausschnitt zeigt, wie der Bewegungs-Wienerfilter auf ein Rasterbild angewendet wird.
String dataDir = Utils.getDataDir(ApplyMotionWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "motion_filter_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
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.setGrayscale(true); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
Anwendung von Korrekturfiltern auf ein Bild
Dieser Artikel zeigt die Verwendung von Aspose.PSD für Java zur Durchführung von Korrekturfiltern auf ein Bild. Die Aspose.PSD APIs haben effiziente und einfach zu verwendende Methoden zur Erreichung dieses Ziels bereitgestellt. Aspose.PSD für Java hat die Klassen BilateralSmoothingFilterOptions und SharpenFilterOptions für die Filtration freigelegt. Die Klasse BilateralSmoothingFilterOptions benötigt eine Ganzzahl als Größe. Die Schritte zum Durchführen der Größenänderung sind so einfach wie unten beschrieben:
- Laden Sie ein Bild mit der von der Klasse Image bereitgestellten Methode Load.
- Konvertieren Sie das Bild in ein Rasterbild.
- Erstellen Sie Instanzen der Klassen BilateralSmoothingFilterOptions und SharpenFilterOptions.
- Rufen Sie die RasterImage.Filter-Methode auf, wobei Sie das Rechteck als Bildgrenzen und die Instanz der Klasse BilateralSmoothingFilterOptions angeben.
- Rufen Sie die RasterImage.Filter-Methode auf, wobei Sie das Rechteck als Bildgrenzen und die Instanz der Klasse SharpenFilterOptions angeben.
- Kontrast anpassen
- Helligkeit einstellen
- Speichern Sie die Ergebnisse.
Der folgende Code-Ausschnitt zeigt Ihnen, wie der Korrekturfilter angewendet wird.
try (Image image = Image.load(dataDir + "sample.psd"); | |
// Convert the image into RasterImage. | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Get Bounds[rectangle] of image. | |
Rectangle rect = image.getBounds(); | |
// Create an instance of BilateralSmoothingFilterOptions class with size | |
// parameter. | |
BilateralSmoothingFilterOptions bilateralOptions = new BilateralSmoothingFilterOptions(3); | |
// Create an instance of SharpenFilterOptions class. | |
SharpenFilterOptions sharpenOptions = new SharpenFilterOptions(); | |
// Supply the filters to raster image. | |
rasterImage.filter(rect, bilateralOptions); | |
rasterImage.filter(rect, sharpenOptions); | |
// Adjust the contrast accordingly. | |
rasterImage.adjustContrast(-10); | |
// Set brightness using Binarize Bradley | |
rasterImage.binarizeBradley(80); | |
// Save the results to output path. | |
rasterImage.save(dataDir + "a1_out.jpg"); | |
} |
Verwendung des Bradley-Schwellenalgorithmus
Die Bildschwellwertbestimmung wird in Grafikanwendungen verwendet. Das Ziel der Schwellwertbestimmung eines Bildes besteht darin, Pixel entweder als “dunkel” oder “hell” zu klassifizieren. Die Aspose.PSD API ermöglicht es Ihnen, den Bradley-Schwellenwert zu verwenden, während Sie Bilder konvertieren. Der folgende Code-Ausschnitt zeigt Ihnen, wie Sie den Schwellenwertwert definieren und dann den Bradley-Schwellenalgorithmus aufrufen.
String dataDir = Utils.getDataDir(Bradleythreshold.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "binarized_out.png"; | |
// Load an image | |
try (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()); | |
} |