В этом примере показано, как применить различные Гауссовы фильтры сглаживания к изображениям с помощью 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')