اعمال فیلترهای میانگین و وینر

اعمال فیلترهای میانگین و وینر

فیلتر میانگین یک تکنیک فیلترینگ دیجیتال غیرخطی است که اغلب برای حذف نویز استفاده می‌شود. این کاهش نویز یک مرحله پیش‌پردازش معمولی برای بهبود نتایج پردازش‌های بعدی است. فیلتر وینر فیلتر بهینه MSE (خطا مربعات میانگین) خطی و ایستان برای تصاویری است که توسط نویز افزایشی و ابهام‌زایی دچار تغییر شده اند. با استفاده از Aspose.PSD برای توسعه‌دهندگان API جاوا، امکان اعمال فیلتر میانگین برای حذف نویز تصویر و اعمال فیلتر وینر گاوس بر روی تصاویر وجود دارد. این مقاله نشان می‌دهد که چگونه فیلتر میانگین و فیلتر گاوس وینر روی تصاویر قابل اعمال است.

اعمال فیلتر میانگین

Aspose.PSD کلاس MedianFilterOptions را برای اعمال فیلتر بر روی یک RasterImage ارائه می‌دهد. تکه کد زیر نشان می‌دهد چگونه می‌توان فیلتر میانگین را بر روی یک تصویر راستری اعمال کرد.

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

اعمال فیلتر گاوس وینر

Aspose.PSD کلاس GaussWienerFilterOptions را برای اعمال فیلتر بر روی RasterImage فراهم می‌کند. تکه کد زیر نشان می‌دهد چگونه می‌توان فیلتر گاوس وینر را بر روی یک تصویر راستری اعمال کرد.

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

اعمال فیلتر گاوس وینر بر روی تصویر رنگی

Aspose.PSD برای تصاویر رنگی هم GaussWienerFilterOptions را ارائه می‌دهد. تکه کد زیر نشان می‌دهد چگونه می‌توان فیلتر گاوس وینر را بر روی یک تصویر رنگی اعمال کرد.

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

اعمال فیلتر موشن وینر

Aspose.PSD کلاس MotionWienerFilterOptions را برای اعمال فیلتر بر روی یک RasterImage فراهم می‌کند. تکه کد زیر نشان می‌دهد چگونه می‌توان فیلتر موشن وینر را بر روی یک تصویر راستری اعمال کرد.

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

اعمال فیلتر اصلاحی بر روی یک تصویر

این مقاله نشان می‌دهد چگونه از Aspose.PSD برای جاوا برای انجام فیلترهای اصلاحی بر روی یک تصویر استفاده کنید. API‌های Aspose.PSD متداول و ساده برای دست‌یابی به این هدف ارائه کرده‌اند. Aspose.PSD برای جاوا کلاس‌ BilateralSmoothingFilterOptions و SharpenFilterOptions را برای اعمال فیلتر به تصاویر فراهم کرده است. کلاس BilateralSmoothingFilterOptions نیاز به یک عدد صحیح به عنوان اندازه دارد. مراحل انجام تغییرات به سادگی به صورت زیر است:

  1. تصویر را با استفاده از متد کارخانه Load کلاس Image بارگذاری کنید.
  2. تصویر را به RasterImage تبدیل کنید.
  3. نمونه‌هایی از BilateralSmoothingFilterOptions و SharpenFilterOptions بسازید.
  4. متدFilter کلاس RasterImage را با مشخص کردن مستطیل به عنوان مرزهای تصویر و نمونه کلاس BilateralSmoothingFilterOptions فراخوانی کنید.
  5. متدFilter کلاس RasterImage را با مشخص کردن مستطیل به عنوان مرزهای تصویر و نمونه کلاس SharpenFilterOptions فراخوانی کنید.
  6. کنتراست را تنظیم کنید.
  7. روشنایی را تنظیم کنید.
  8. نتایج را ذخیره کنید.

تکه کد زیر نشان می‌دهد چگونه می‌توان فیلتر اصلاحی را اعمال کرد.

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

استفاده از الگوریتم آستانه Bradley

آستانه‌گذاری تصویر در برنامه‌های گرافیکی استفاده می‌شود. هدف از آستانه‌گذاری تصویر، طبقه‌بندی پیکسل‌ها به عنوان “تاریک” یا “روشن” است. API Aspose.PSD به شما امکان استفاده از آستانه‌گذاری Bradley را هنگام تبدیل تصاویر می‌دهد. تکه کد زیر نشان می‌دهد چگونه می‌توانید مقدار آستانه را تعریف کرده و سپس الگوریتم آستانه 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());
}