В этом примере показано, как создавать и применять фильтры, прочность которых увеличивается радиально наружу.
Чтение и отображение изображения.
I = imread('peppers.png');
I = im2double(I);
imshow(I)
Создайте размытую копию изображения с помощью гауссова фильтра со стандартным отклонением 2.
Iblurred = imgaussfilt(I,2); imshow(Iblurred)

Создайте весовое изображение в качестве гауссова фильтра того же размера. Чтобы увеличить часть изображения, которая выглядит резкой, увеличьте значение filterStrength.
filterStrength = 50;
weights = fspecial('gaussian',[size(I,1) size(I,2)],filterStrength);
imshow(weights,[])
Нормализуйте изображение веса к диапазону [0, 1] с помощью rescale функция.
weights = rescale(weights);
Создание взвешенного размытого изображения, представляющего собой взвешенную сумму исходного изображения и размытого изображения. MATLAB автоматически воспроизводит весовую матрицу для каждого из цветовых каналов R, G и B.
IweightedBlurred = I.*weights + Iblurred.*(1-weights);
Просмотрите результат. Изображение острое в центре и становится более размытым радиально наружу. Чтобы увеличить часть изображения, которая выглядит резкой, увеличьте значение
imshow(IweightedBlurred)

Получение размера изображения.
sizex = size(I,2); sizey = size(I,1);
Укажите центр виньетки.
xcenter = size(I,2)/2; ycenter = size(I,1)/2;
Определите координаты x и y поверхности.
[X,Y] = meshgrid((1:sizex)-xcenter,(1:sizey)-ycenter);
Определите радиус от центра в каждой координате (x, y).
R2 = X.^2 + Y.^2;
Определите весовую функцию как обратную R, масштабированную до диапазона [0, 1].
R2 = rescale(R2); weights = (1-R2); imshow(weights)

Примените функцию взвешивания к изображению и отобразите результат.
I2 = I.*weights; imshow(I2)
