Het toepassen van Median- en Wienerfilters
Het toepassen van Median- en Wienerfilters
Het median-filter is een niet-lineaire digitale filtertechniek die vaak wordt gebruikt om ruis te verwijderen. Een dergelijke ruisreductie is een typische voorbewerking om de resultaten van latere verwerking te verbeteren. Het Wiener-filter is de MSE (mean squared error) optimale stationaire lineaire filter voor beelden die zijn aangetast door additieve ruis en vervaging. Met Aspose.PSD voor Java API kunnen ontwikkelaars median-filter toepassen om ruis uit de afbeelding te verwijderen en de Gauss Wiener-filter op afbeeldingen toe te passen. In dit artikel wordt gedemonstreerd hoe het median-filter en Gauss Wiener-filter kunnen worden toegepast op afbeeldingen.
Het toepassen van het Median-filter
Aspose.PSD biedt de klasse MedianFilterOptions om een filter toe te passen op een RasterImage. Het onderstaande codefragment toont hoe het median-filter kan worden toegepast op een rasterafbeelding.
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()); | |
} |
Het toepassen van de Gauss Wiener-filter
Aspose.PSD biedt de klasse GaussWienerFilterOptions om een filter toe te passen op een RasterImage. Het onderstaande codefragment toont hoe de Gauss Wiener-filter kan worden toegepast op een rasterafbeelding.
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()); | |
} |
Het toepassen van de Gauss Wiener-filter op een gekleurde afbeelding
Aspose.PSD biedt ook GaussWienerFilterOptions voor gekleurde afbeeldingen. Het onderstaande codefragment toont hoe de Gauss Wiener-filter kan worden toegepast op een kleurenafbeelding.
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()); | |
} |
Het toepassen van de Motion Wiener-filter
Aspose.PSD biedt de klasse MotionWienerFilterOptions om een filter toe te passen op een RasterImage. Het onderstaande codefragment toont hoe de motion Wiener-filter kan worden toegepast op een rasterafbeelding.
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()); | |
} |
Het toepassen van een correctiefilter op een afbeelding
Dit artikel demonstreert het gebruik van Aspose.PSD voor Java om correctiefilters op een afbeelding toe te passen. Aspose.PSD API’s hebben efficiënte en gemakkelijk te gebruiken methoden blootgelegd om dit doel te bereiken. Aspose.PSD voor Java heeft de klassen BilateralSmoothingFilterOptions en SharpenFilterOptions blootgelegd voor filtratie. De BilateralSmoothingFilterOptions-klasse heeft een geheel getal als grootte nodig. De stappen om de grootte te wijzigen zijn als volgt:
- Laad een afbeelding met behulp van de fabrieksmethode Load blootgelegd door de Image-klasse.
- Converteer de afbeelding naar RasterImage.
- Maak exemplaren van de BilateralSmoothingFilterOptions- en SharpenFilterOptions-klassen.
- Roep de RasterImage.Filter-methode aan terwijl u het rechthoek als afbeeldingsgrenzen en een instantie van de BilateralSmoothingFilterOptions-klasse opgeeft.
- Roep de RasterImage.Filter-methode aan terwijl u het rechthoek als afbeeldingsgrenzen en een instantie van de SharpenFilterOptions-klasse opgeeft.
- Pas het contrast aan.
- Stel de helderheid in.
- Sla de resultaten op.
Het onderstaande codefragment toont je hoe je een correctiefilter kunt toepassen.
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"); | |
} |
Gebruik van Bradley-threshold algoritme
Beeldthresholding wordt gebruikt in grafische toepassingen. Het doel van het toepassen van een drempelwaarde op een afbeelding is om pixels te classificeren als “donker” of “licht”. Aspose.PSD API staat je toe om gebruik te maken van Bradley-thresholding bij het converteren van afbeeldingen. Het volgende codefragment toont je hoe je de drempelwaarde kunt definiëren en vervolgens het algoritme van de Bradley-threshold kunt oproepen.
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()); | |
} |