Увеличьте силу фильтра, радиально исходящую

В этом примере показано, как создать и применить фильтры, сила которых увеличивается радиально исходящий.

Считайте и отобразите изображение.

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)

Изображение Vignette Используя 1/R^2 Функцию взвешивания

Получите размер изображения.

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)

Смотрите также

|

Для просмотра документации необходимо авторизоваться на сайте