Contenido principal

Cambiar la intensidad de un filtro radialmente hacia afuera

Este ejemplo muestra cómo crear filtros que difuminen y oscurezcan los píxeles en proporción a la distancia del centro de la imagen.

Lea y muestre una imagen.

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

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

Desenfocar una imagen utilizando la función de ponderación gaussiana

Cree una copia desenfocada de la imagen utilizando un filtro gaussiano con desviación estándar de 2.

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

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

Cree una imagen ponderada como un filtro gaussiano del mismo tamaño de la imagen. Para aumentar la porción de la imagen que aparece nítida, aumente el valor de filterStrength.

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

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

Normalice la imagen ponderada con respecto al intervalo [0, 1] utilizando la función rescale.

weights = rescale(weights);

Cree una imagen desenfocada ponderada que sea una suma ponderada de la imagen original y la imagen desenfocada. MATLAB® replica automáticamente la matriz de ponderación para cada uno de los canales de color R, G y B.

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

Muestre el resultado. La imagen es nítida en el centro y se vuelve más desenfocada radialmente hacia afuera.

imshow(IweightedBlurred)

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

Viñetear una imagen utilizando la función de ponderación 1/R^2

Obtenga el tamaño de la imagen.

sizex = size(I,2);
sizey = size(I,1);

Especifique el centro de la viñeta.

xcenter = size(I,2)/2;
ycenter = size(I,1)/2;

Defina las coordenadas x e y de la superficie.

[X,Y] = meshgrid((1:sizex)-xcenter,(1:sizey)-ycenter);

Defina el radio desde el centro en cada coordenada (x,y).

R2 = X.^2 + Y.^2;

Defina la función de ponderación como la inversa de R, escalada al intervalo [0, 1].

R2 = rescale(R2);
weights = (1-R2);
imshow(weights)

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

Aplique la función de ponderación a la imagen y muestre el resultado.

I2 = I.*weights;
imshow(I2)

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

Consulte también

|