Примените гауссовы фильтры сглаживания к изображениям

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