exponenta event banner

Увеличение прочности фильтра радиально наружу

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

Чтение и отображение изображения.

I = imread('peppers.png');
I = im2double(I);
imshow(I)

Figure contains an axes. The axes contains an object of type image.

Размытие изображения с использованием функции взвешивания Гаусса

Создайте размытую копию изображения с помощью гауссова фильтра со стандартным отклонением 2.

Iblurred = imgaussfilt(I,2);
imshow(Iblurred)

Figure contains an axes. The axes contains an object of type image.

Создайте весовое изображение в качестве гауссова фильтра того же размера. Чтобы увеличить часть изображения, которая выглядит резкой, увеличьте значение filterStrength.

filterStrength = 50;
weights = fspecial('gaussian',[size(I,1) size(I,2)],filterStrength);
imshow(weights,[])

Figure contains an axes. The axes contains an object of type image.

Нормализуйте изображение веса к диапазону [0, 1] с помощью rescale функция.

weights = rescale(weights);

Создание взвешенного размытого изображения, представляющего собой взвешенную сумму исходного изображения и размытого изображения. MATLAB автоматически воспроизводит весовую матрицу для каждого из цветовых каналов R, G и B.

IweightedBlurred = I.*weights + Iblurred.*(1-weights);

Просмотрите результат. Изображение острое в центре и становится более размытым радиально наружу. Чтобы увеличить часть изображения, которая выглядит резкой, увеличьте значение

imshow(IweightedBlurred)

Figure contains an axes. The axes contains an object of type image.

Изображение виньетки с использованием функции взвешивания 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)

Figure contains an axes. The axes contains an object of type image.

Примените функцию взвешивания к изображению и отобразите результат.

I2 = I.*weights;
imshow(I2)

Figure contains an axes. The axes contains an object of type image.

См. также

|