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)
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)
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,[])
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)
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)
Aplique la función de ponderación a la imagen y muestre el resultado.
I2 = I.*weights; imshow(I2)