exponenta event banner

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

В этом примере показано, как применять различные гауссовы сглаживающие фильтры к изображениям с помощью 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 contains an axes. The axes with title Original image contains an object of type image.

figure
imshow(Iblur1)
title('Smoothed image, \sigma = 2')

Figure contains an axes. The axes with title Smoothed image, \sigma = 2 contains an object of type image.

figure
imshow(Iblur2)
title('Smoothed image, \sigma = 4')

Figure contains an axes. The axes with title Smoothed image, \sigma = 4 contains an object of type image.

figure
imshow(Iblur3)
title('Smoothed image, \sigma = 8')

Figure contains an axes. The axes with title Smoothed image, \sigma = 8 contains an object of type image.

Фильтрация изображения анизотропными гауссовыми сглаживающими ядрами. 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 contains an axes. The axes with title Smoothed image, \sigma_x = 4, \sigma_y = 1 contains an object of type image.

figure
imshow(IblurX2)
title('Smoothed image, \sigma_x = 8, \sigma_y = 1')

Figure contains an axes. The axes with title Smoothed image, \sigma_x = 8, \sigma_y = 1 contains an object of type image.

figure
imshow(IblurY1)
title('Smoothed image, \sigma_x = 1, \sigma_y = 4')

Figure contains an axes. The axes with title Smoothed image, \sigma_x = 1, \sigma_y = 4 contains an object of type image.

figure
imshow(IblurY2)
title('Smoothed image, \sigma_x = 1, \sigma_y = 8')

Figure contains an axes. The axes with title Smoothed image, \sigma_x = 1, \sigma_y = 8 contains an object of type image.

Подавление горизонтальных областей, видимых в области неба исходного изображения. Анизотропные гауссовы фильтры могут подавлять горизонтальные или вертикальные элементы изображения. Извлеките участок небесной области изображения и используйте фильтр Гаусса с более высоким стандартным отклонением вдоль оси 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 contains an axes. The axes with title Sky in original image contains an object of type image.

figure
imshow(IblurX1_sky), title('Sky in filtered image')

Figure contains an axes. The axes with title Sky in filtered image contains an object of type image.