Está en la página 1de 4

close all

clear all
clc;
%%Cargar Imagen
[nom direc]=uigetfile('*.jpg;*.png;*.bmp;','Imagen');
imagen=[direc,nom];
imagenrgb=imread([direc,nom]);
figure('Name','IMAGEN RGB','NumberTitle','off'); imshow(imagenrgb);
imag = rgb2gray(imagenrgb);
if nom==0
disp('NO SE CARGO NINGUNA IMAGEN')
return;
end

%%FFT Imagenes
[fil col] =size(imag(:,:));
R = imagenrgb(:,:,1);
R1=fft2(R);
R1=log(1+abs(R1));
R1=R1/max(R1(:));
R1=fftshift(R1);
figure('Name','FFT IMAGEN R','NumberTitle','off');
imshow(R1,[]);
%
[fil col] =size(imag(:,:));
G = imagenrgb(:,:,2);
G1=fft2(G);
G1=log(1+abs(G1));
G1=G1/max(G1(:));
G1=fftshift(G1);
figure('Name','FFT IMAGEN G','NumberTitle','off');
imshow(G1,[]);
%
[fil col] =size(imag(:,:));
B = imagenrgb(:,:,3);
B1=fft2(B);
B1=log(1+abs(B1));
B1=B1/max(B1(:));
B1=fftshift(B1);
figure('Name','FFT IMAGEN B','NumberTitle','off');
imshow(B1,[]);
%
%%Elegir Filtro
disp('�QUE FILTRO DESEA UTILIZAR?')
disp('1 FILTRO PROMEDIO')
disp('2 FILTRO PROMEDIO CIRCULAR')
disp('3 FILTRO GAUSSIANO')
disp('4 FILTRO DE MOVIMIENTO')
F=input(' ');
%
switch F
case 1
disp('FILTRO PROMEDIO')
disp('INGRESE EL TAMA�O DE LA VENTANA N*N')
TM=input('');
H=fspecial('average',[TM TM]);
HF=filter2(H,imag);
H1=fft2(H,fil,col);
H1=log(1+abs(H1));
H1=H1/max(H1(:));
H1=fftshift(H1);
figure('Name','FILTRO PROMEDIO','NumberTitle','off');
imshow(H1);

case 2
disp('FILTRO PROMEDIO CIRCULAR')
disp('INGRESE EL TAMA�O DEL RADIO')
RA=input('');
H=fspecial('disk',RA);
H1=fft2(H,fil,col);
H1=log(1+abs(H1));
H1=H1/max(H1(:));
H1=fftshift(H1);
figure('Name','FILTRO PROMEDIO CIRCULAR','NumberTitle','off');
imshow(H1);

case 3
disp('FILTRO GAUSSIANO')
disp('INGRESE EL TAMA�O DE LA VENTANA')
TV=input('');
disp('INGRESE El VALOR DE LA DESVIACION ESTANDAR')
DE=input('');
H=fspecial('gaussian',TV,DE);
H1=fft2(H,fil,col);
H1=fftshift(H1);
H1=abs(H1);
H1=log(1+H1);
figure('Name','FILTRO GAUSSIANO','NumberTitle','off');
imshow(H1);

case 4
disp('FILTRO DE MOVIMIENTO')
disp('INGRESE EL ANGULO')
AN=input('');
disp('INGRESE El VALOR DE LOS PIXELES')
ES=input('');
H=fspecial('motion',AN,ES);
H1=fft2(H,fil,col);
H1=fftshift(H1);
H1=abs(H1);
H1=log(1+H1);
figure('Name','FILTRO DE MOVIMIENTO','NumberTitle','off');
imshow(H1);
end

%%Elegir Componente RGB


disp('�QUE COMPONENTE DESEA APLICAR EL FILTRO?')
disp('1 COMPONENTE R')
disp('2 COMPONENTE G')
disp('3 COMPONENTE B')
disp('4 COMPONENTES R,G')
disp('5 COMPONENTE R,B')
disp('6 COMPONENTE G,B')
disp('7 COMPONENTE R,G,B')
N=input(' ');
%
switch N
case 1
FR=imfilter(R,H);
figure('Name','IMAGEN FILTRADA R','NumberTitle','off');
imshow(FR);
aux(:,:,1)=FR
aux(:,:,2)=G
aux(:,:,3)=B
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 2
FG=imfilter(G,H);
figure('Name','IMAGEN FILTRADA G','NumberTitle','off');
imshow(FG);
aux(:,:,1)=R
aux(:,:,2)=FG;
aux(:,:,3)=B
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 3
FB=imfilter(B,H);
figure('Name','IMAGEN FILTRADA B','NumberTitle','off');
imshow(FB);
aux(:,:,1)=R
aux(:,:,2)=G
aux(:,:,3)=FB
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 4
FR=imfilter(R,H);
FG=imfilter(G,H);
FRRG = FR + FG;
figure('Name','IMAGEN FILTRADA R,G','NumberTitle','off');
imshow(FRRG);
aux(:,:,1)=FR
aux(:,:,2)=FG
aux(:,:,3)=B
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 5
FR=imfilter(R,H);
FB=imfilter(B,H);
FRRB = FR + FB;
figure('Name','IMAGEN FILTRADA R,B','NumberTitle','off');
imshow(FRRB);
aux(:,:,1)=FR
aux(:,:,2)=G
aux(:,:,3)=FB
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 6
FG=imfilter(G,H);
FB=imfilter(B,H);
FRGB = FG + FB;
figure('Name','IMAGEN FILTRADA G,B','NumberTitle','off');
imshow(FRGB);
aux(:,:,1)=R
aux(:,:,2)=FG
aux(:,:,3)=FB
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);

case 7
FR=imfilter(R,H);
FG=imfilter(G,H);
FB=imfilter(B,H);
FRRGB = FR + FG + FB;
figure('Name','IMAGEN FILTRADA R,G,B','NumberTitle','off');
imshow(FRRGB);
aux(:,:,1)=FR
aux(:,:,2)=FG
aux(:,:,3)=FB
figure('Name','IMAGEN FILTRADA RECONSTRUIDA','NumberTitle','off');
imshow(aux);
end

También podría gustarte