Está en la página 1de 7

I.

INTRODUCCIN
En sta sesin se utiliza el software Matlab para el procesamiento de imgenes.
II. CAPACIDADES
1. Utiliza Matlab para visualizar el histograma.
2. Detecta los bordes de una figura utilizando diferentes operadores

III. PROCEDIMIENTO
Importante: Para consultar sobre cualquier comando en matlab, escriba: help comando
Ejemplo: help imread
Para leer una imagen
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
Indagando sus dimensiones
[M N]=size(J)
Para visualizar la imagen
imshow(J)
image(J);
Otra funcin interesante a la hora de procesar y trabajar con imgenes es rgb2gray(), como su
nombre indica, convierte una imagen de tipo RGB a escala de grises, eliminando el matiz y la
saturacin y manteniendo la luminancia. Un ejemplo de su uso podra ser este:
G = rgb2gray(J);
Para visualizar la imagen
LABORATORIO N 01

OPERACIONES ARITMETICAS CON IMAGENES
imshow(G)
Para grabar una imagen en un fichero, escribimos utilizando el formato.
imwrite(var, nombrefichero)

imwrite(im,'foto.jpg');
para visualizar el histograma utilizamos
imhist(G)
si queremos visualizar ambas imgenes escribimos
subplot(2,1,1),subimage(J),title('Imagen original');
subplot(2,1,2),imhist(G),title('Histograma');
Para equalizar la imagen utilizamos
histeq(G)
Geq=histeq(G);
Ahora visualizaremos todo
subplot(2,2,1),subimage(J),title('Imagen original');
subplot(2,2,2),imhist(G),title('Histograma');
subplot(2,2,3),subimage(Geq),title('Imagen equalizada');
subplot(2,2,4),imhist(Geq),title('Histograma equalizado');
Si queremos invertir el nivel de gris de la imagen
I=255-G;
figure;imshow(I);
segmentacin de una imagen por umbral
umbral=128
U=I>umbral;
figure;imshow(U);


OPERACIONES DE PIXEL EN MATLAB
A=G+50;
figure;imshow(A);
B=G*2;
figure;imshow(B)
AJUSTAR UNA IMAGEN
A=imadjust(G,[0 1],[1 0]);
imshow(A);
B=imadjust(G,[],[0 0.4]);
figure;imshow(B)
C=imadjust(G,[0 0.7],[]);
figure;imshow(C)
D=imadjust(G,[0.2 0.7],[0.4 0.6]);
figure;imshow(D)
E=imadjust(G,[],[],0.3);
figure;imshow(E);
F=imadjust(G,[],[],3);
figure;imshow(F);

Imagen: como una matriz
Cambiar el tamao de una imagen:imresize

valor = imresize(imagen,escala)

si escala> 1.0, se amplia la imagen
si escala<1 la disminuye
b = imresize(G,0.5);
imshow(b);


Cortar un trozo de imagen
I2= IMCROP(I,RECT)
RECT =[xmin,ymin,anchura, altura]

b= imcrop(G,[20,30,100,100]);
b=imcrop(b);

Manipular matrices

Seleccionar un trozo de la matriz:
B=A(i:j,n:m) crear una matriz B compuesta por los elementos en las filas [i,j] y las columnas [m,n]
Operador : selecciona toda una fila o toda una columna (permite tambin pasar de matriz a
vector columna)


Operaciones aritmticas
Sumar una constante: R(x, y):= A(x, y) + a
Restar una constante: R(x, y):= A(x, y) - a
Multiplicar por una constante: R(x, y):= bA(x, y)
Dividir por una constante: R(x, y):= A(x, y)/b
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
G = rgb2gray(J);
G=G+50;
Imshow(G);



DETECCIN DE BORDES.

Los bordes de una imagen digital se pueden definir como transiciones entre dos regiones de
niveles de gris significativamente distintos. Suministran una valiosa informacin sobre las
fronteras de los objetos y puede ser utilizada para segmentar la imagen, reconocer objetos, etc.
La mayora de las tcnicas para detectar bordes emplean operadores locales basados en distintas
aproximaciones discretas de la primera y segunda derivada de los niveles de grises de la imagen.

En Matlab la funcin que detecta bordes es edge.
Operador de Sobel
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
G = rgb2gray(J);
b1=edge(G,'sobel','vertical');
b2=edge(G,'sobel','horizontal');
b3=edge(G,'sobel');
subplot(2,2,1),subimage(G),Title('Imagen Original');
subplot(2,2,2),subimage(b1),Title('Sobel Vertical');
subplot(2,2,3),subimage(b2),Title('Sobel Horizontal');
subplot(2,2,4),subimage(b3),Title('Sobel');

Operador de Prewitt
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
G = rgb2gray(J);
imshow(G);pause;
imgBorde=edge(G,'prewitt');imshow(imgBorde);


Operador de Robert
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
G = rgb2gray(J);
imshow(G);pause;
imgBorde=edge(G,'robert');imshow(imgBorde);

Operador de Canny
J=imread('C:\Users\TITO\Documents\MATLAB\transistores.jpg');
G = rgb2gray(J);
imshow(G);pause;
imgBorde=edge(G,'canny');imshow(imgBorde);

Negativo en blanco y negro de la imagen
tam=size(G);
I6=double(G);
for u=1:tam(1)
for v=1:tam(2)
I6(u,v,1)=255-I6(u,v,1); %Imagen en negativo
end
end
I7=uint8(I6);
figure;
imshow(I7);


ACTIVIDAD
Descargue dos imgenes cualesquiera y realice cada operacin de la gua. Anote sus
observaciones
Muestre en un solo grafico los 4 operadores

IV. EQUIPOS Y MATERIALES
Gua de laboratorio
Computadora personal
Matlab


Cdigo pa mostrar los 4 operadores en un pantalla
b1=edge(G, 'sobel');
b2=edge(G,'prewitt');
b3=edge(G,'robert');
b4=edge(G,'canny');
subplot(2,2,1),subimage(b1),Title('sobel');
subplot(2,2,2),subimage(b2),Title('prewitt');
subplot(2,2,3),subimage(b3),Title('robert');
subplot(2,2,4),subimage(b4),Title('canny');







Codigo1

i=imread('C:\Users\ALUMNO\Desktop\figura2.jpg');// cambian de direcion
G = rgb2gray(i);
b1=edge(G,'sobel','vertical');
b2=edge(G,'sobel','horizontal');
b3=edge(G,'sobel');
subplot(2,2,1),subimage(G),Title('Imagen Original');
subplot(2,2,2),subimage(b1),Title('Sobel Vertical');
subplot(2,2,3),subimage(b2),Title('Sobel Horizontal');
subplot(2,2,4),subimage(b3),Title('Sobel');
>> imshow(G);pause;
imgBorde=edge(G,'prewitt');imshow(imgBorde);
>> imshow(G);pause;
imgBorde=edge(G,'robert');imshow(imgBorde);
>> imshow(G);pause;
imgBorde=edge(G,'canny');imshow(imgBorde);
>> tam=size(G);
I6=double(G);
for u=1:tam(1)
for v=1:tam(2)
I6(u,v,1)=255-I6(u,v,1); %Imagen en negativo
end
end
I7=uint8(I6);
figure;
imshow(I7);
>> b1=edge(G, 'sobel');
b2=edge(G,'prewitt');
b3=edge(G,'robert');
b4=edge(G,'canny');
subplot(2,2,1),subimage(b1),Title('sobel');
subplot(2,2,2),subimage(b2),Title('prewitt');
subplot(2,2,3),subimage(b3),Title('robert');
subplot(2,2,4),subimage(b4),Title('canny');

También podría gustarte