В этом примере показано, как применить различные фильтры сглаживания Гауссова к изображениям с помощью imgaussfilt
. Гауссовы сглаживающие фильтры обычно используются для уменьшения шума.
Чтение изображения в рабочую область.
I = imread('cameraman.tif');
Фильтрация изображения с помощью изотропных Гауссовых сглаживающих ядер увеличивающихся стандартных отклонений. Гауссовы фильтры обычно изотропны, то есть имеют одинаковое стандартное отклонение по обеим размерностям. Изображение может быть отфильтровано изотропным Гауссовым фильтром путем определения скалярного значения для sigma
.
Iblur1 = imgaussfilt(I,2); Iblur2 = imgaussfilt(I,4); Iblur3 = imgaussfilt(I,8);
Отобразите оригинальное изображение и все отфильтрованные изображения.
figure
imshow(I)
title('Original image')
figure
imshow(Iblur1)
title('Smoothed image, \sigma = 2')
figure
imshow(Iblur2)
title('Smoothed image, \sigma = 4')
figure
imshow(Iblur3)
title('Smoothed image, \sigma = 8')
Фильтрация изображения с помощью анизотропных Гауссовых сглаживающих ядер. imgaussfilt
позволяет Гауссову ядру иметь различные стандартные отклонения по размерностям строки и столбца. Они называются выровненными по оси анизотропными Гауссовыми фильтрами. Задайте вектор с 2 элементами для sigma
при использовании анизотропных фильтров.
IblurX1 = imgaussfilt(I,[4 1]); IblurX2 = imgaussfilt(I,[8 1]); IblurY1 = imgaussfilt(I,[1 4]); IblurY2 = imgaussfilt(I,[1 8]);
Отобразите отфильтрованные изображения.
figure
imshow(IblurX1)
title('Smoothed image, \sigma_x = 4, \sigma_y = 1')
figure
imshow(IblurX2)
title('Smoothed image, \sigma_x = 8, \sigma_y = 1')
figure
imshow(IblurY1)
title('Smoothed image, \sigma_x = 1, \sigma_y = 4')
figure
imshow(IblurY2)
title('Smoothed image, \sigma_x = 1, \sigma_y = 8')
Подавьте горизонтальные полосы, видимые в области неба оригинального изображения. Анизотропные Гауссовы фильтры могут подавлять горизонтальные или вертикальные функции на изображении. Извлеките сечение области неба изображения и используйте Гауссов фильтр с более высоким стандартным отклонением вдоль оси X (направление увеличивающихся столбцов).
I_sky = imadjust(I(20:50,10:70)); IblurX1_sky = imadjust(IblurX1(20:50,10:70));
Отображение исходной закрашенной фигуры неба с отфильтрованной версией.
figure
imshow(I_sky), title('Sky in original image')
figure
imshow(IblurX1_sky), title('Sky in filtered image')