Застосування фільтрів медіани та Вінера
Застосування фільтрів медіани та Вінера
Фільтр медіани - це нелінійний цифровий фільтр, який часто використовується для видалення шуму. Таке зменшення шуму є типовим кроком передобробки для поліпшення результатів подальшої обробки. Фільтр Вінера є оптимальним MSE (середньоквадратичне значення помилки) стаціонарним лінійним фільтром для зображень, зіпсованих адитивним шумом та розмиттям. Використовуючи Aspose.PSD для Java 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 для мови Java для застосування корекційних фільтрів до зображення. API Aspose.PSD мають ефективні та прості методи для досягнення цієї мети. Aspose.PSD для Java виклав класи BilateralSmoothingFilterOptions та SharpenFilterOptions для фільтрації. Клас BilateralSmoothingFilterOptions потребує ціле число як розмір. Кроки для виконання змін рядків, які прості, як наведено нижче:
- Завантажте зображення за допомогою методу завантаження, викладеного класом Image.
- Конвертувати зображення в RasterImage.
- Створіть екземпляри класів BilateralSmoothingFilterOptions та SharpenFilterOptions.
- Викличте метод RasterImage.Filter, вказавши прямокутник як межі зображення та екземпляр класу BilateralSmoothingFilterOptions.
- Викличте метод RasterImage.Filter, вказавши прямокутник як межі зображення та екземпляр класу 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"); | |
} |
Використання алгоритму порогового значення Бредлі
Порогове значення зображення використовується в графічних застосунках. Мета порогування зображення полягає в класифікації пікселів як “темні” або “світлі”. API Aspose.PSD дозволяє використовувати порог Бредлі під час конвертації зображень. Наведений нижче фрагмент коду показує, як визначити значення порогу, а потім викликати алгоритм порогування Бредлі.
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()); | |
} |