Está en la página 1de 7

Universidad Nacional de Quilmes Ing.

en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

Comandos de MatLab utilizados para el procesamiento de imgenes.


Cargar imgenes en matrices: A=double(imread(NombreImagen,Formato)); Donde NombreImagen representa el nombre de la imagen con el path completo y Formato representa el formato de la imagen. La funcin double se utiliza para poder realizar operaciones con la matriz A que implican nmeros decimales (hay ciertas operaciones que no se pueden hacer con variables del tipo uint8 como lo son los niveles de gris de las imgenes que utilizamos generalmente). El formato de imagen comnmente utilizado es el tif . Ejemplo: A=double(imread('C:\MATLAB6p5\toolbox\images\imdemos\circuit.tif','tif')); En el caso de imgenes en formato jpg, se debe hacer un paso ms para obtener la imagen 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); Visualizar imgenes a partir de una matriz: imshow(uint8(A)) Donde A es la matriz que representa la imagen y uint8 se utiliza para convertir los elementos de A en enteros de 8 bits (256 niveles de gris). Si la imagen ya est en formato uint8 no es necesario usar la funcin uint8. Visualizar ms de una imagen en una misma ventana: 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)) En este caso, se visualiza un arreglo de imgenes de 2x2. Lo mismo se puede hacer para ver otro tipo de grficos. Operaciones con matrices: u=[1 2 3 4]; u=[1;2;3;4]; % Crea un vector columna % Crea un vector fila 1

Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

A=[1 2 3;4 5 6]; A=ones(n,m); A=ones(n); [n,m]=size(A); B=ones(size(A)); A=zeros(n,m); A=zeros(n); B=zeros(size(A));

% Crea una matriz de 2x3 con los elementos indicados % Crea una matriz de 1s de nxm % Crea una matriz de 1s de orden n % Almacena en n y m el nmero de filas y columnas, respectivamente, de A % Crea una matriz de 1s del mismo tamao de A % Crea una matriz de 0s de nxm % Crea una matriz de 0s de orden n % Crea una matriz de 0s del mismo tamao de A

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 A=B+C; A=B-C; A=B.*C; B=(A>umbral)*k; % Suma de matrices % Resta de matrices % Multiplicacin elemento a elemento de matrices % B ser una matriz del mismo tamao de A cuyos elementos sern 0 o k dependiendo si los elementos anlogos de A son mayores que el umbral

A(i,j) representa el elemento de la fila i y la columna j de la matriz A A(i:j,u:v) es la matriz formada por los elementos de la matriz A que se encuentran entre las filas i y j y las columnas u y v. Ejemplo: 1 2 3 4 5 6 7 8 A= 9 10 11 12 13 14 15 16 7 8 A( 2 : 3,3 : 4) = 11 12

Algunas sentencias: Bucle for Generalmente se utiliza en la siguiente forma: for Variable=ValorInicial:Incremento:ValorFinal .... end
Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

Ejemplos: nU=10; u=zeros(1,nU); for i=2:2:nU u(i)=u(i-1)+i; end Luego, u=[0 2 0 4 0 6 0 8 0 10]. # Si el incremento es 1 no es necesario explicitarlo (for i=2:nU). Al igual que en la mayora de los lenguajes de programacin se pueden anidar los bucles for. Por ejemplo, for i=1:nA for j=1:mA ........... end end Para establecer los lmites y el incremento de la variable que rige el bucle se pueden utilizar expresiones (siempre utilizando parntesis, 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 Su forma general es la que sigue: if Expresin .... elseif Expresin .... else .... end Donde Expresin representa la condicin (o condiciones) que debe cumplirse para que se ejecuten las instrucciones que siguen a continuacin. elseif se utiliza para evitar colocar varios if...end. Tanto elseif como else son opcionales. Para construir la Expresin se pueden utilizar los siguientes operadores: ==, <, >, <=, >=, o ~= (distinto). Ejemplos:
Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1; else A(I,J) = 0; end Tambin 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 Funciones y comandos relacionados con las transformadas: Transformada discreta de Fourier en dos dimensiones Fa=fft2(A); Esta funcin mapea las frecuencias altas en el centro del espectro mientras que las frecuencias ms bajas se encuentran en la periferia. Para colocar la frecuencia cero en el centro del espectro se debe utilizar, adems, la funcin fftshift de la siguiente forma: Fa=fft2(A); Fa=fftshift(Fa); o Fa=fftshift(fft2(A)); Antitransformada discreta de Fourier en dos dimensiones A=ifft2(Fa); Debido a que Fa es una matriz compleja, al antitransformar pueden quedar ciertos residuos de nmeros imaginarios que se deben a la precisin limitada del clculo. Esto hace que la imagen resultante est constituida por algunos pxeles con nivel de gris complejo, algo que es absurdo. Para evitar esto, se utiliza la funcin abs que devuelve el mdulo de los elementos de una matriz. A=abs(ifft2(Fa));

Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

Visualizacin de la transformada discreta de Fourier En realidad, lo que se grafica en tres dimensiones es la magnitud de la transformada discreta de Fourier. mesh(abs(Fa)) Como en la mayora de los casos, se utiliza una escala logartmica en el espacio de frecuencias. Esto se realiza de la siguiente forma: mesh(log(abs(Fa))) Filtro Digital: Y= filter2(B,X); La funcin filter2 filtra los datos en X con el ncleo dado por la matriz B. El resultado, Y, es calculado por medio de una correlacin en dos dimensiones y es del mismo tamao que X. Generalmente, se debe pasar a la funcin un parmetro adicional para que devuelva la parte central de la correlacin: Y= filter2(B,X,same); Filtro de Mediana: B=medfilt2(A,[M N]); Realiza el filtro de mediana sobre la imagen B. M y N son el nmero de filas y el de columnas de la mscara

Algunas funciones especiales: b=fix(a); c=round(a); % Toma la parte entera del nmero a % Redondea al entero ms cercano

B=min(B,100); % En este ejemplo, min devuelve el valor ms bajo entre B y 100

255 45 178 B= 12 100 99 27 89 0


B=max(B,50);

B = min( B,100)

100 45 100 B= 12 100 99 27 89 0

% En este ejemplo, max devuelve el valor ms alto entre B y 50

100 45 100 B= 12 100 99 27 89 0

B = max(B,100)

100 50 100 B= 50 100 99 50 50 89

Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

v=mean(u); b=mean(A); b=mean(mean(A)); v=sum(u); b=sum(A); b=sum(sum(A)); [I,J]=find(A); pixval

% Calcula el promedio del vector u % Calcula los promedios de las columnas de A. B es un vector fila % Calcula el promedio de la matriz A % Calcula la suma de los elementos del vector u % Calcula la suma de las columnas de A. B es un vector fila % Calcula la suma de los elementos de A % Devuelve los ndices de las filas y columnas de los elementos distintos de cero de la matriz A % Muestra las coordenadas y el nivel de gris del pxel sealado por el puntero del mouse cuando ste se ubica sobre la imagen en una figura % Calcula el histograma de A. A debe estar en formato uint8, de lo contrario, se debe convertir: uint8(A) % Muestra en una figura el histograma de A (que debe ser un array uint8) % Realza la imagen A (que debe ser una matriz de uint8) % AND lgica % OR lgico

H=hist(A); imhist(A) Aeq=histeq(A); c=and(a,b); c=and(a>1,b~=0); c=or(a,b); 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
Comandos comunes de Matlab para el procesamiento de imgenes

Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005

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

Comandos comunes de Matlab para el procesamiento de imgenes

También podría gustarte