Академический Документы
Профессиональный Документы
Культура Документы
A=double(imread(NombreImagen,Formato));
Ejemplo:
A=double(imread('C:\MATLAB6p5\toolbox\images\imdemos\circuit.tif','tif'));
En el caso de imágenes en formato jpg, se debe hacer un paso más para obtener la i-
magen en escala de grises (debido a la forma en que se almacena la imagen jpg).
Ejemplo:
A=double(imread('C:\MATLAB6p5\toolbox\images\imdemos\football.jpg','jpg'));
A=A(:,:,1);
imshow(uint8(A))
Donde A es la matriz que representa la imagen y uint8 se utiliza para convertir los ele-
mentos de A en enteros de 8 bits (256 niveles de gris). Si la imagen ya está en formato
uint8 no es necesario usar la función ‘uint8’.
subplot(2,2,1);imshow(uint8(A))
subplot(2,2,2);imshow(uint8(B))
subplot(2,2,3);imshow(uint8(C))
subplot(2,2,4);imshow(uint8(D))
A=[1 2 3;4 5 6]; % Crea una matriz de 2x3 con los elementos indicados
C=A.’; % C es la transpuesta de A
# Cuando se trabaja con matrices que no son reales se puede utilizar lo siguiente
C=A’; % C es la transpuesta conjugada de A
Ejemplo: 1 2 3 4
5 6 7 8 7 8
A= ⇒ A( 2 : 3,3 : 4) =
9 10 11 12 11 12
13 14 15 16
Algunas sentencias:
Bucle for
for Variable=ValorInicial:Incremento:ValorFinal
....
end
Ejemplos:
nU=10;
u=zeros(1,nU);
for i=2:2:nU
u(i)=u(i-1)+i;
end
Al igual que en la mayoría de los lenguajes de programación se pueden anidar los bu-
cles for. Por ejemplo,
for i=1:nA
for j=1:mA
...........
end
end
Para establecer los límites y el incremento de la variable que rige el bucle se pueden u-
tilizar expresiones (siempre utilizando paréntesis, como se indica en el ejemplo):
i=1;
j=1;
nU=10;
u=zeros(1,nU);
for i=(i+j):2:nU
u(i)=u(i-1)+i;
end
Condicional if
if Expresión
....
elseif Expresión
....
else
....
end
Donde Expresión representa la condición (o condiciones) que debe cumplirse para que
se ejecuten las instrucciones que siguen a continuación. elseif se utiliza para evitar
colocar varios if...end. Tanto elseif como else son opcionales.
Para construir la Expresión se pueden utilizar los siguientes operadores: ==, <, >, <=,
>=, o ~= (distinto). Ejemplos:
if I == J
A(I,J) = 2;
elseif abs(I-J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end
También se pueden utilizar los operadores | o & que representan las operaciones or y
and, respectivamente. Ejemplo:
for i=1:nC
for j=1:mC
if (Ruido(i,j)<200 | Ruido(i,j)>255)
Ruido(i,j)=0;
end
end
end
Fa=fft2(A);
Esta función mapea las frecuencias altas en el centro del espectro mientras que las
frecuencias más bajas se encuentran en la periferia. Para colocar la frecuencia cero en el
centro del espectro se debe utilizar, además, la función fftshift de la siguiente forma:
Fa=fft2(A);
Fa=fftshift(Fa);
o
Fa=fftshift(fft2(A));
A=ifft2(Fa);
Debido a que Fa es una matriz compleja, al antitransformar pueden quedar ciertos resi-
duos de números imaginarios que se deben a la precisión limitada del cálculo. Esto hace
que la imagen resultante esté constituida por algunos píxeles con nivel de gris complejo,
algo que es absurdo.
Para evitar esto, se utiliza la función abs que devuelve el módulo de los elementos de
una matriz.
A=abs(ifft2(Fa));
mesh(abs(Fa))
mesh(log(abs(Fa)))
La función filter2 filtra los datos en X con el núcleo dado por la matriz B. El resultado, Y,
es calculado por medio de una correlación en dos dimensiones y es del mismo tamaño
que X.
Y= filter2(B,X,’same’);
Filtro de Mediana:
B=min(B,100); % En este ejemplo, min devuelve el valor más bajo entre B y 100
c=or(a,b); % OR lógico
c=or(a>1,b~=0);
Algunos ejemplos:
for i=2:f-2
for j=2:col-2
C(i,j)=abs([1 1 1]*A((i-1):(i+1),j-1)-[1 1 1]*A((i-1):(i+1),j+1));
end
end
for i=2:f-2
for j=2:col-2
D(i,j)=abs([1 1 1]*(A(i,(j-1):(j+1)))'-[1 1 1]*(A(i+1,(j-1):(j+1)))');
end
end
for i=2:f-2
for j=2:col-2
E(i,j)=max(C(i,j),D(i,j));
end
end
N2=ones(5)/25;
for i=4:f-4
for j=4:col-4
Aux=N2.*A((i-2):(i+2),(j-2):(j+2));
Aux1=0;
for h=1:25
Aux1=Aux(h)+Aux1;
end
H(i,j)=Aux1;
end
end