Применение медианного и Винеровского фильтров
Применение медианного и Винеровского фильтров
Медианный фильтр является нелинейной цифровой техникой фильтрации, часто используемой для удаления шума. Такое уменьшение шума является типичным предварительным этапом обработки для улучшения результатов последующей обработки. Фильтр Винера является оптимальным линейным стационарным фильтром среднеквадратической ошибки (MSE) для изображений, подвергшихся действию аддитивного шума и размытия. С помощью Aspose.PSD для API .NET разработчики могут применять медианный фильтр для уменьшения шума и могут применять гауссов фильтр Винера к изображениям. В этой статье демонстрируется, как медианный фильтр и гауссов фильтр Винера могут быть применены к изображениям.
Применение медианного фильтра
Aspose.PSD предоставляет класс MedianFilterOptions для применения фильтра к RasterImage. Приведенный ниже фрагмент кода демонстрирует, как применить медианный фильтр к растровому изображению.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"median_test_denoise_out.gif"; | |
// Load the noisy image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
// Cast the image into RasterImage | |
RasterImage rasterImage = image as RasterImage; | |
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.Bounds, options); | |
image.Save(destName, new GifOptions()); | |
} |
Применение гауссового фильтра Винера
Aspose.PSD предоставляет класс GaussWienerFilterOptions для применения фильтра к RasterImage. Приведенный ниже фрагмент кода демонстрирует, как применить гауссов фильтр Винера к растровому изображению.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"gauss_wiener_out.gif"; | |
// Load the noisy image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
RasterImage rasterImage = image as RasterImage; | |
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.Grayscale = true; | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.Filter(image.Bounds, options); | |
image.Save(destName, new GifOptions()); | |
} |
Применение гауссового фильтра Винера для цветного изображения
Aspose.PSD также предоставляет GaussWienerFilterOptionsдля цветных изображений. Приведенный ниже фрагмент кода демонстрирует, как применить гауссов фильтр Винера к цветному изображению.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"gauss_wiener_color_out.gif"; | |
// Load the noisy image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
// Cast the image into RasterImage | |
RasterImage rasterImage = image as RasterImage; | |
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.Brightness = 1; | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.Filter(image.Bounds, options); | |
image.Save(destName, new GifOptions()); | |
} |
Применение фильтра движущего гауссового фильтра Винера
Aspose.PSD предоставляет класс MotionWienerFilterOptions для применения фильтра к RasterImage. Приведенный ниже фрагмент кода демонстрирует, как применить фильтр движущего гауссового фильтра Винера к растровому изображению.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"motion_filter_out.gif"; | |
// Load the noisy image | |
using (Image image = Image.Load(sourceFile)) | |
{ | |
// Cast the image into RasterImage | |
RasterImage rasterImage = image as RasterImage; | |
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.Grayscale = true; | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.Filter(image.Bounds, options); | |
image.Save(destName, new GifOptions()); | |
} |
Применение коррекционного фильтра к изображению
Эта статья демонстрирует применение Aspose.PSD для .NET для выполнения коррекционных фильтров на изображении. API Aspose.PSD предоставляет эффективные и простые в использовании методы для достижения этой цели. В Aspose.PSD для .NET предоставлены классы BilateralSmoothingFilterOptions и SharpenFilterOptions для фильтрации. Класс BilateralSmoothingFilterOptions требует целое число в качестве размера. Шаги для выполнения изменений просты:
- Загрузите изображение с использованием фабричного метода Load, открытого классом Image.
- Преобразуйте изображение в RasterImage.
- Создайте экземпляры классов BilateralSmoothingFilterOptions и SharpenFilterOptions.
- Вызовите метод RasterImage.Filter, указав прямоугольник в качестве границ изображения и экземпляр класса BilateralSmoothingFilterOptions.
- Вызовите метод RasterImage.Filter, указав прямоугольник в качестве границ изображения и экземпляр класса SharpenFilterOptions.
- Настройте контраст.
- Установите яркость.
- Сохраните результат.
Использование алгоритма порога Брэдли
Пороговая обработка изображения используется в графических приложениях. Цель пороговой обработки изображения - классифицировать пиксели как “темные” или “светлые”. API Aspose.PSD позволяет использовать пороговую обработку по Брэдли при конвертации изображений. В следующем фрагменте кода показано, как определить пороговое значение, а затем вызвать алгоритм порога Брэдли.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"binarized_out.png"; | |
// Load the noisy image | |
// Load an image | |
using (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()); | |
} |