تطبيق فلتر المتوسط وفلتر وينر

تطبيق فلتر المتوسط وفلتر وينر

يعد فلتر المتوسط تقنية تصفية رقمية غير خطية، وعادة ما يُستخدم لإزالة الضوضاء. إن تقليل هذه الضوضاء هو خطوة مسبقة نموذجية لتحسين نتائج المعالجة لاحقًا. فلتر وينر هو أمثلية خطية ثابتة للأخطاء بالمتوسط ​​للصور المتدهورة بواسطة الضوضاء الإضافية والتشويش. يمكن لمطوري واجهة برمجة التطبيقات لـ Java من Aspose.PSD تطبيق فلتر المتوسط ​​لإزالة الضوضاء من الصورة ويمكنهم تطبيق فلتر وينر جاوسي على الصور. يوضح هذا المقال كيف يمكن تطبيق فلتر المتوسط ​​وفلتر وينر جاوسي على الصور.

تطبيق فلتر المتوسط

توفر 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 لـ Java لتنفيذ فلاتر التصحيح على الصورة. API لـ Aspose.PSD قد قدمت أساليب فعالة وسهلة الاستخدام لتحقيق هذا الهدف. لـ Aspose.PSD لـ Java، تمت تعريض فئتي BilateralSmoothingFilterOptions و SharpenFilterOptions للتصفية. تحتاج فئة BilateralSmoothingFilterOptions إلى عدد صحيح كحجم. تكون خطوات تنفيذ تغيير الحجم بسيطة كما يلي:

١. تحميل صورة باستخدام الطريقة الفعالة التي قدمتها فئة Image. ١. تحويل الصورة إلى RasterImage. ١. إنشاء مثيلات لفئتي BilateralSmoothingFilterOptions و SharpenFilterOptions. ١. استدعاء طريقة Filter من RasterImage مع تحديد المستطيل كحدود صورة ومثيل فئة BilateralSmoothingFilterOptions. ١. استدعاء طريقة Filter من RasterImage مع تحديد المستطيل كحدود صورة ومثيل فئة SharpenFilterOptions. ١. ضبط التباين. ١. تعيين السطوع. ١. حفظ النتائج.

الكود البرمجي التالي يوضح لك كيفية تطبيق فلتر التصحيح.

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 threshold

يُستخدم تحديد العتبة في تطبيقات الرسومات. الهدف من تحديد عتبة الصورة هو تصنيف البكسلات إما كـ “داكنة” أو “فاتحة”. تسمح واجهة برمجة التطبيقات لـ 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());
}