Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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));
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)
B = max(B,100)
Universidad Nacional de Quilmes Ing. en Automatizacin y Control Industrial Ctedra: Visin Artificial Septiembre de 2005
% 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
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