Está en la página 1de 12

PONTIFICIA UNIVERSIDAD CATLICA DEL PER

FACULTAD DE CIENCIAS E INGENIERA

MANUFACTURA INTEGRADA POR COMPUTADORA


ING301
GUA DE LABORATORIO

TEMA: VISIN MQUINA


2013 1

1.

Introduccin

La visin por computadora es un rea de conocimiento especializada en la


adquisicin y anlisis automtico de imgenes dentro de un computador para
extraer los datos necesarios para controlar o interpretar un proceso o actividad.

1.1

La Cmara digital

Es un dispositivo que consta de un sensor de imagen, el cual es un chip que


alberga gran cantidad de elementos fotosensibles ordenadas en una matriz.
Cada punto la imagen digital se forma dependiendo de la cantidad de luz que
recibe cada elemento. Algunas caractersticas fundamentales de una cmara
digital son su resolucin, su sensibilidad, y su rango dinmico.

Figura 1: Funcionamiento de cmara digital


2.

Parmetros Importantes en Cmaras Digitales

2.1
Resolucin
La resolucin de la cmara indica el nmero de pxeles que puede capturar. Se
determina multiplicando el nmero de pxeles horizontales de su sensor por el
nmero de pxeles verticales (HV). As, la cmara de la ilustracin posee una
resolucin de 3531 = 1085 pxeles (Figura 1). Las cmaras actuales poseen
resoluciones superiores a 1024768. Cuanto mayor sea la resolucin, mayor
ser la definicin de la imagen digital que la cmara puede capturar.

2.2
Sensibilidad
La sensibilidad se refiere a la capacidad de la cmara para capturar imgenes
con iluminacin muy tenue. Por ejemplo, la obtencin de imgenes de tejidos
tratados con agentes fluorescentes exige cmaras muy sensibles. La
sensibilidad es inversamente proporcional a la luminosidad mnima que la
cmara puede captar y que suele expresarse en unidades lux.

2.3
Rango dinmico
La luz incidente en la cmara digital induce un voltaje en el sensor. La luz cuya
intensidad est por debajo del umbral de sensibilidad de la cmara induce un
voltaje que no puede discriminarse del ruido generado internamente por el
sensor. La luz muy brillante satura el sensor. La luz cuya intensidad est entre
estos dos extremos inducir un voltaje til. Este es el rango dinmico del
sensor. Cuanto mayor sea este rango mejor ser la cmara. puede expresarse
en decibelios:

DR 10 log 10 ( Lmax / Lmin )


Donde:
Lmax : Luminosidad mxima antes de saturacin

Lmin : Luminosidad mnima diferenciable de ruido.


3.
Representacin de Imgenes Digitales
Cada punto de la imagen o pixel puede ser representado en color o en escala
de grises. En este ltimo caso, cada pxel posee un tono (o nivel) de gris
diferente. El nivel de gris de cada pxel se expresa mediante un nmero de N
dgitos en sistema binario (o bits). Por ejemplo una imagen codificada en 8 bits
el nmero binario 00000000 (equivalente al nmero 0 en el sistema decimal)
codifica el color negro. Por el contrario, el nmero binario 11111111
(equivalente al nmero 255 en el sistema decimal) codifica el color blanco.
Cualquier otra combinacin de ocho dgitos binarios indica un tono de gris
diferente entre el blanco y el negro. Con 8 bits, pueden conseguirse 28=256
tonos de gris diferentes.
La imagen digital tambin puede ser en color. Para capturar este tipo de
imgenes, los colores de la imagen original se descomponen en los tres
colores bsicos rojo (R), verde (G) y azul (B) mediante un prisma. La cmara
digital a color dispone de tres arreglos de sensores cada uno de lo cuales
recoge la imagen correspondiente a uno de los tres colores bsicos. La imagen
digital final se obtiene como la superposicin de estas tres imgenes. El color
final de un pxel en la imagen compuesta, se obtiene superponiendo los colores
correspondientes a dicho pxel en las capas componentes. Por ejemplo, para
obtener el color marrn del pxel de la ilustracin (Figura 2), es necesario
superponer los pxeles con cdigos 11000101 (R), 10001011 (G), y 01010001
(B). El color final del pxel se expresa mediante un cdigo RGB que no es ms
que el nmero binario que se obtiene al concatenar los cdigos R, G, y B. La
resolucin de cada una de las tres imgenes componentes es igual a la de la
imagen digital compuesta. Durante el anlisis de la imagen compuesta, es
posible trabajar con cada una de las tres imgenes componentes.

Figura 2: Representacin RGB de una imagen digital.


4.

Anlisis de Imgenes

4.1
Segmentacin:
La segmentacin es el primer paso en el proceso de anlisis de imagen por lo
que constituye una etapa crucial que en muchas ocasiones determina el xito.
Consiste en la divisin de imgenes en partes que la constituyen con el objetivo
de separar regiones similares de acuerdo a criterios establecidos. Dichos
criterios corresponden generalmente al punto de vista de la percepcin humana
tales como continuidad (contornos) y similitud (regiones).
4.2
Segmentacin por umbralizacin:
Dada una imagen F(x,y) definida en escala de grises (nivel de luminosidad) y el
valor umbral T se tiene la funcin binarizacin G(x,y) definida por:

4.2.1 Umbralizacin por valle de histograma


Se demuestra el uso de este mtodo mediante el siguiente ejemplo en Matlab:
I = imread('umb1.jpg'); % comando de lectura de imagen
I = rgb2gray(I); % conversion a escala de grises
figure
subplot(1,2,1); title('GrayScale'); imshow(I); % muestra imagen
subplot(1,2,2); imhist(I); title('Histograma '); % histograma de la
imagen

Se obtiene el siguiente resultado:

a)

b)

Figura 3:
a) Imagen en Escala de Grises
b) Histograma de la Imagen
El eje X del histograma representa la intensidad luminosa de cada pixel (de 0 a
255) de la imagen. El eje Y representa la frecuencia con que se encuentra una
determinada intensidad. El mtodo seala que es necesario identificar los
valores mximos en el histograma, que en este caso son para las intensidades
de 50 y 180 aproximadamente. A partir de ello se obtiene que el valle del
histograma se encuentra ubicado en el punto de intensidad 120. Por lo tanto
seleccionamos como umbral el valor T=120.
En Matlab:
%% calculando umbral manualmente:
thresh = 120/255; % valor normalizado a 1 (dividir entre 255)
I2=im2bw(I,thresh); % umbralizacion de la imagen
figure;
imshow(I2);
%% calculando umbral con funcin graythresh:
thresh2 = graythresh(I); % obtiene un valor umbral escalado entre 0.0
y 1.0
I3=im2bw(I,thresh2); % umbralizacion de la imagen
figure;
imshow(I3);
% El resultado obtenido es similar al del mtodo del valle

Se obtiene el siguiente resultado:

Figura 4: Resultado de Umbralizacin

4.3 Descomposicin de Imagen en Componentes R, G y B


En ocasiones resulta conveniente aislar una determinada componente de color
de una imagen con el objetivo de ubicar una regin de inters. En Matlab las
imgenes a color son representadas como una matriz tridimensional. Se
demuestra en el siguiente ejemplo el proceso de descomposicin de una
imagen:
clc
clear all
imagen_RGB=imread('D:\flores.jpg');
% lectura de imagen
figure(1)
% abro una venta para mostrar la imagen
imshow(imagen_RGB)
% muestra la imagen real
TITLE('Imagen RGB - Imagen original')
figure(2)
imagenRED=imagen_RGB(:,:,1);
imshow(imagenRED) % muestra la imagen en el mapa de color rojo
TITLE('Mapa de color Rojo')
figure(3)
imagenGREEN=imagen_RGB(:,:,2);
imshow(imagenGREEN) % muestra la imagen en el mapa de color verde
TITLE('Mapa de color verde')
figure(4)
imagenBLUE=imagen_RGB(:,:,3);
imshow(imagenBLUE) % muestra la imagen en el mapa de color azul
TITLE('Mapa de color azul')

El resultado obtenido es el siguiente:

Figura 5: Descomposicin de Imagen en capas R, G y B

4.4 Operaciones morfolgicas


4.4.1 Dilatacin
El resultado de esta operacin es el ensanchamiento de la imagen. Dada una
matriz imagen A y una matriz Kernel B, el operador conmutativo Dilatacin es
denotado por:

A B B A Ax
xB

El significado de este operador es que para cada pixel x que pertenece a B, A


es trasladado segn las coordenadas del kernel. La unin de estas traslaciones
es el resultado de la dilatacin. En la siguiente figura se observa este concepto
de manera grfica. Obsrvese el desplazamiento de A a lo largo de la
trayectoria del kernel B.

Figura 6: Operacin de Dilatacin


El cdigo utilizado en Matlab para realizar esta operacin es el siguiente:
imag = imread('ants.jpg'); % lectura de archivo de imagen
% definir patrn de dilatacin:
se = strel('diamond',3); % kernel en forma de diamante
dilat = imdilate(imag,se); % dilatacin de acuerdo al patrn

figure
subplot(1,2,1); imshow(imag); title('Original');
subplot(1,2,2); imshow(dilat); title('Dilatacin');

a)

b)

Figura 7:
a) Imagen original
b) Imagen Dilatada

4.4.2 Erosin

El resultado de esta operacin es el adelgazamiento de la imagen. Dada una


matriz imagen A y una matriz Kernel B, el operador Erosin de A por B
denotado por A B { : B A} Consiste en el desplazamiento del kernel B
sobre la imagen A encontrando todos las posiciones en que el kernel encaja
sobre la imagen. Para cada una de estas posiciones se marca la coordenada
del centro del kernel. El conjunto de todos estos puntos es la erosin de la
imagen. En la siguiente figura se observa este concepto de manera grfica:

Figura 8: Operacin de Erosin


El cdigo utilizado en Matlab para realizar esta operacin es el siguiente:
imag = imread('arroz.bmp'); % lectura de archivo de imagen
% definir patrn de erosin:
se = strel('diamond',3); % patrn en forma de diamante
erosion = imerode(imag,se); % erosin de acuerdo al patrn
figure
subplot(1,2,1); imshow(imag); title('Original');
subplot(1,2,2); imshow(erosion); title('Erosin');

Se obtiene el siguiente resultado:

a)

b)

Figura 9:
a) Imagen original
b) Imagen Erosionada

Valores de 8 bits

4.5
Operaciones Lineales entre imgenes
Consiste en la aplicacin de operaciones aritmticas entre pixel y pixel de cada
imagen por lo que estas deben ser del mismo tamao. Debe tomarse en cuenta
la posibilidad de saturacin de la imagen al realizar estas operaciones ya que
esto puede conducir a perdida de informacin en la misma. Supngase que
cada pixel de una imagen es representado por 8 bits de datos (nivel de luz de 0
a 255), en el caso de Matlab ningn pixel puede tener un valor mayor al
mximo por lo que ser saturado en caso se obtenga un resultado mayor en
una operacin. Esto se observa en la siguiente figura.

Valores de Salida de Operacin

Figura 10: Saturacin en Imgenes


Para evitar esta prdida de datos es preferible trabajar con datos del tipo doble
precisin en Matlab (comando im2double) y emplear las funciones
correspondientes para operar con imgenes.
El siguiente cdigo en Matlab muestra un ejemplo de suma de imgenes con
ruido gaussiano (aleatorio con media cero), al obtener el promedio de dichas
imgenes se recupera la imagen original:
Iori = imread('text.png'); % lectura de Imagen
Idob = im2double(Iori); % Imagen en formato doble precisin
figure; imshow(Idob); title('Imagen original');
Ruido = 0.3*randn(size(Idob)); % matriz de Ruido Gaussiano (media
cero) del tamao de la imagen
Iruido = imadd(Idob,Ruido);
figure; imshow(Iruido); title('Imagen con Ruido'); % imagen con ruido
gaussiano
Isum = Iruido;
%% suma y promedio de 20 imgenes con Ruido Gaussiano:
for k=1:20
Ruido = 0.3*randn(size(Iori));
% actualizacin de imagen con ruido:
Iruido = imadd(im2double(Iori),Ruido);
Isum = imadd(Isum,Iruido); % sumatoria de imagenes con ruido
end
Iprom = imdivide(Isum,k+1); % imagen promedio
figure; imshow(Iprom); title('Imagen Promedio');

Se obtiene El siguiente resultado:

a)

b)

c)

Figura 11:
a) Imagen Original
b) Imagen Con Ruido
c) Imagen Promedio
4.6
Teora de Momentos
En aplicaciones de identificacin y clasificacin de objetos por tamao,
orientacin y reconocimiento de patrones la informacin brindada por los
parmetros de regiones como el centroide, orientacin de objetos y reas es de
gran utilidad. Matlab cuenta con comandos para obtener estas y otras
propiedad de objetos en una imagen. Para obtener dichas propiedades es
necesario primero separar regiones y etiquetarlas Se muestra un ejemplo de
deteccin de regiones y marcado de centroides:
I = imread('figures.bmp');
%% Etiquetado de la imagen:
[L num] = bwlabel(I); % L:Imagen etiquetada, num:Nmero de Regiones
imshow(label2rgb(L));
%% Propiedades de las regiones:
centroide = regionprops(L,'centroid');
area = regionprops(L,'area');
orientacion = regionprops(L,'orientation');
%% dibujar centroides sobre la imagen
hold on;
for i=1:length(centroide)
x = centroide(i).Centroid(1);
y = centroide(i).Centroid(2);
plot(x,y,'*');
end

Se obtiene el siguiente resultado:

a)

b)

Figura 12:
a) Imagen Original
b) Imagen con Centroides Marcados
A partir de los centroides calculados pueden obtenerse la distancia entre los
objetos presentes en la imagen. En el caso de una fotografa puede aplicarse
9

una regla de proporcionalidad para obtener la distancia real entre 2 objetos,


esto ltimo asumiendo que la imagen haya sido tomada en la zona lineal de la
cmara.
5

Aplicaciones

5.1 Control de calidad


En este ejercicio se cuenta con una pieza la cual tiene 4 tornillos en los
extremos, como se muestra en la Figura 13, la tarea de Ud. Consiste en
codificar un programa basado en visin que permita determinar la cantidad de
tornillos faltantes en una serie de imgenes (ver Figura 14).

Figura 13: Ubicacin de los cuatro tornillos en la pieza

Figura 14: Imagen con 2 tornillos faltantes


Para ello Ud. ya cuenta con las imgenes adquiridas (carpeta control de
calidad), la cual tiene una imagen base (Imagen001.jpg) donde se puede
apreciar la ubicacin de los 4 tornillos. Antes de comenzar a realizar algn
programa, elabore un esquema de solucin en papel y mustrelo al jefe de
prctica.
Sugerencia: Utilice la imagen base para realizar la comparacin con el resto
de imgenes (consulte la funcion imabsdiff de Matlab), observe y determine
las coordenadas del centro de cada tornillo, emplee tcnicas de umbralizacin.

10

5.2 Metrologa
En los procesos industriales muchas veces es necesario determinar la posicin
y forma de objetos para que un robot pueda trabajar con ellos. Por ejemplo, se
tienen procesos de empaque en los que los productos llegan a travs de una
faja transportadora y se tiene un robot que los recoge y ordena en una caja.
Otro ejemplo son los sistemas de ensamble automatizados, en donde un
sistema de visin coordina y supervisa el correcto ensamble de un producto.
En el siguiente ejercicio se plantea desarrollar un sistema de visin que
determine la informacin necesaria para que un brazo robot pueda coger un
objeto determinado. Para ello se requiere desarrollar un algoritmo que permita
determinar las coordenadas de los centroides de un conjunto de objetos en
unidades mtricas a partir de un origen; adems de determinar la orientacin
que mejor conviene para que el brazo robot coja al objeto y por ltimo, hallar el
rea del objeto. El algoritmo debe brindar la informacin obtenida asociada por
el tipo de forma del objeto (cuadrado, rectngulo y crculo).

Figura 15: Imagen de propuesta para aplicacin de metrologa


Procedimiento sugerido:
1) Establecer la relacin entre unidad mtrica y pxeles de forma manual
(se mantiene para todas las imgenes)
2) Segmentar la imagen. Utilice la funcin not de Matlab para invertir los
colores en la imagen binarizada de ser necesario.
3) Aplicar operaciones morfolgicas
4) Etiquetar los objetos
5) Determinar los momentos de los objetos (centroide, rea y orientacin)
6) Asociar las propiedades segn el tipo de objeto
7) Determinar las caractersticas que se piden en unidades de magnitudes
fsicas (centroides, orientacin y reas) para cada una de las imgenes.

11

También podría gustarte