Menerapkan Filter Median dan Wiener

Menerapkan Filter Median dan Wiener

Filter median adalah teknik penyaringan digital nonlinier, sering digunakan untuk menghilangkan noise. Pengurangan noise seperti ini adalah langkah pra-pemrosesan khas untuk meningkatkan hasil pemrosesan selanjutnya. Filter Wiener adalah filter linier stasioner optimal MSE (mean squared error) untuk gambar yang terdegradasi oleh noise tambahan dan kabur. Dengan menggunakan Aspose.PSD untuk para pengembang API Java, kita dapat menerapkan filter median untuk membersihkan noise pada gambar dan dapat menerapkan filter Gauss Wiener pada gambar-gambar. Artikel ini mendemonstrasikan bagaimana filter median dan filter Gauss Wiener dapat diterapkan pada gambar.

Menerapkan Filter Median

Aspose.PSD menyediakan kelas MedianFilterOptions untuk menerapkan filter pada RasterImage. Potongan kode di bawah ini mendemonstrasikan cara menerapkan filter median pada gambar raster.

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());
}

Menerapkan Filter Gauss Wiener

Aspose.PSD menyediakan kelas GaussWienerFilterOptions untuk menerapkan filter pada RasterImage. Potongan kode di bawah ini mendemonstrasikan cara menerapkan filter Gauss Wiener pada gambar raster.

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());
}

Menerapkan Filter Gauss Wiener Untuk Gambar Berwarna

Aspose.PSD menyediakan GaussWienerFilterOptions untuk gambar berwarna juga. Potongan kode di bawah ini mendemonstrasikan cara menerapkan filter Gauss Wiener pada gambar berwarna.

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());
}

Menerapkan Filter Wiener Gerak

Aspose.PSD menyediakan kelas MotionWienerFilterOptions untuk menerapkan filter pada RasterImage. Potongan kode di bawah ini mendemonstrasikan cara menerapkan filter Wiener gerak pada gambar raster.

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());
}

Menerapkan Filter Koreksi Pada Sebuah Gambar

Artikel ini mendemonstrasikan penggunaan Aspose.PSD untuk Java untuk melakukan filter koreksi pada sebuah gambar. API Aspose.PSD telah mengekspos metode-metode yang efisien dan mudah digunakan untuk mencapai tujuan ini. Aspose.PSD untuk Java telah mengekspos kelas BilateralSmoothingFilterOptions dan SharpenFilterOptions untuk filtrasi. Kelas BilateralSmoothingFilterOptions membutuhkan tipe data integer sebagai ukuran. Langkah-langkah untuk melakukan Resize adalah sebagai berikut:

  1. Muat gambar menggunakan metode pabrik Load yang diekspos oleh kelas Image.
  2. Konversi gambar menjadi RasterImage.
  3. Buat instance dari kelas BilateralSmoothingFilterOptions dan SharpenFilterOptions.
  4. Panggil metode RasterImage.Filter sambil menentukan persegi panjang sebagai batas gambar dan instance kelas BilateralSmoothingFilterOptions.
  5. Panggil metode RasterImage.Filter sambil menentukan persegi panjang sebagai batas gambar dan instance kelas SharpenFilterOptions.
  6. Sesuaikan kontras
  7. Atur kecerahan
  8. Simpan hasil.

Potongan kode berikut menunjukkan bagaimana menerapkan filter koreksi.

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");
}

Menggunakan algoritma ambang Bradley threshold

Pemambangan gambar digunakan dalam aplikasi grafis. Tujuan dari pemambangan gambar adalah mengklasifikasikan piksel sebagai “gelap” atau “terang”. API Aspose.PSD memungkinkan Anda menggunakan ambang Bradley saat mengonversi gambar. Potongan kode berikut menunjukkan cara mendefinisikan nilai ambang dan kemudian memanggil algoritma ambang Bradley.

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());
}