Sie sind auf Seite 1von 18

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA

ASIGNATURA:
SISTEMAS DE VISIÓN ARTIFICIAL

TRABAJO:
PROBLEMAS Y PROYECTOS CAPÍTULOS 1 Y 2

ALUMNOS:
DENNIS ANGEL RAMOS ARIAS
QUINTANILLA CHAVEZ NICKOLAE
DOCENTE:
Ing. PEDRO RODRIGUEZ

HORARIO:
Lunes 17:00 a 18:30 hrs.

Arequipa – Perú
2019
Problemas y proyecto capítulo 1 del libro “Visión
Computacional”
1. ¿Qué es visión? ¿Que es procesamiento de imágenes? ¿Cuál es la diferencia entre
ambos?

Visión Artificial

Es el campo de la inteligencia artificial que, mediante la utilización de las técnicas


adecuadas, permite la obtención, procesamiento y análisis de cualquier tipo de
información especial obtenida a través de imágenes digitales. La visión artificial la
componen un conjunto de procesos destinados a realizar el análisis de imágenes. Estos
procesos son: captación de imágenes, memorización de la información, procesado e
interpretación de los resultados. Con la visión artificial se puede realizar las siguientes
tareas:

 Automatizar tareas repetitivas realizadas por operadores en la industria.


 Realizar mejores controles de calidad de productos que no era posible verificar
por métodos tradicionales.
 Realizar inspecciones de objetos sin contacto físico.
 Realizar la inspección de un producto a gran velocidad.
 Reducir el tiempo de ciclo en procesos automatizados.
 Realizar inspecciones en procesos donde existe diversidad de piezas con
cambios frecuentes de producción.

EJEMPLO

Proceso para el reconocimiento de objetos

>>a=imread(‘imagen.jpg’)

>>det_rectangulo=visión.CascadeObjectDetector(‘imagen.jpg’

Procesamiento de Imágenes
2. Da dos ejemplos de problemas que se pueden resolver utilizando procesamiento de
imágenes y dos que correspondan a visión.

Visión Artificial

 Conteo de productos de un almacén


 Selección de objetivos en movimiento en la calle de una ciudad

Procesamiento de imágenes

 Corrección de una fotografía borrosa a través de algoritmos de corrección de


imágenes
 Corregir el zoom de una imagen distorsionada por el movimiento de la cámara

3. Demuestra usando análisis de Fourier el teorema del muestreo.

Según el enunciado se tiene que S(w) = 0 cuando |w| > wm (está limitada en banda),
donde wm = 2π fm sería la máxima componente de frecuencia angular de s(t).

Gráficamente:

El proceso de muestreo se modela matemáticamente mediante la multiplicación de s(t) con


un tren de impulsos unitarios δTs(t) de periodo Ts.

Sea ss(t) = s(t)δTs(t)

la señal resultante de dicho producto


Ts = 2π ws

es el periodo de muestreo, siendo

ws = 2πfs

la frecuencia de muestreo angular expresada en radianes/segundo

ℱ[δTs(t)] = ΔTs(w) = wsδws(w).

Teniendo en cuenta que la multiplicación de dos funciones en el dominio del tiempo


equivale a la convolución de sus espectros, se tiene que:

Ss(w) = 1 2πS(w) ∗ wsδws(w).

Al substituir ws = 2π Ts, obtenemos que

Ss(w) = 1 Ts(S(w) ∗ δws(w))

que por definición de δws(w) es:

= 1 TsS(w) ∗∑ n=−∞∞δ(w − nw s)
= 1 Ts ∑ n=−∞∞S(w) ∗ δ(w − nw s)
= 1 Ts ∑ n=−∞∞S(w − nw s).

Por tanto, el espectro de una señal muestreada es igual a la replicación


cada ws radianes/segundo del espectro de la señal original. Gráficamente:

Como se puede deducir de la representación gráfica de Ss(w), podemos recuperar s(t) a


partir de ss(t) si filtramos las componentes de frecuencia superiores a wm. Esto puede
hacerse si multiplicamos Ss(w) (en el dominio de la frecuencia, claro) por una función
pulso rectangular
Esta función es en realidad la función de transferencia1 de un filtro paso bajo con frecuencia de
corte wm y ganancia Ts.

El Teorema del Muestreo Uniforme indica que para que la señal s(t) sea recuperable a partir de
la señal ss(t) debe cumplirse que

ws ≥ 2wm.

La demostración de esto en virtud de los resultados obtenidos es muy sencilla. En el caso de


que ws < 2wm entonces sería imposible aislar el espectro de ss(t) mediante el filtro paso bajo y
por tanto, no podríamos reconstruir s(t) porque los espectros vecinos de s(t) se solaparían.
Gráficamente:

4. Al digitalizar una imagen ¿qué tan “cerca” deben estar las muestras y porque? ¿Qué pasa
si no hay la suficiente resolución?

5. Considerando que cada pixel en una imagen se represente con 8 bits, y además se
transmite un bit de inicio y uno de fin por “paquete” (pixel), cuántos segundos se requieren
para transmitir una imagen de 1024 x 1024 pixels para una velocidad de transmisión de (a)
300 baud (bits por segundo), (b) 9600 baud, (c) 1 Mega baud.

1024 x 1024=1048576 x 10 = 10485760 bytes

a) para 300 baudios


T=10485760/300 = 34952,53 s

b) 9600 baudios

T=10485760/9600= 1092,26 s

c)1 Mega baudios = 10^6 baudios

T=10485760/1000000=10,48 s

6. Repite el problema anterior para im´agenes a color, con 8 bits por banda, considerando
que cada pixel es un paquete.

1024 x 1024=1048576 x 8 = 8388608

a) para 300 baudios

T=8388608/300 = 27962,026 s

b) 9600 baudios

T=8388608/9600= 873,81 s

c)1 Mega baudios = 10^6 baudios

T=8388608/1000000=8,39 s

7. Define una métrica para distancia en arreglos de celdas rectangulares y hexagonales.

• rectangular = [nxm]= [1 2 3 4 5; 6 0 2 3 8; 55 22 13 65 90]

>>[1 2 3 4 5; 6 0 2 3 8; 55 22 13 65 90]

1 2 3 4 5

6 0 2 3 8

55 22 13 65 90

• hexagonal.

>> [0 0 0 1 0 0 0 ; 0 0 1 1 1 0 0 ; 0 1 1 1 1 1 0; 0 0 1 1 1 0 0 ; 0 0 0 1 0 0 0]

00010 00

00111 00

011111 0
00111 00

0001000

8. Analiza un proceso computacional de acuerdo a los niveles de analisis de Marr y describe

cada uno de estos.

Ejemplo:

Teoría computacional - El objetivo del proceso computacional, sus metas y las estrategias

adecuadas para realizarlo (¿Qué?).

1.- Sistema de visión que identifica objetivos en movimiento (personas)

Representación y algoritmo - la descripción del proceso computacional, el representar las


entradas y salidas, proponer el algoritmo para lograr dicha transformación (¿Como? -
concepto).

2.- El algoritmo que usaremos es el tracking u algoritmo para identificar patrones de los
objetivos en movimiento, según su forma y color

Implementación - Como se realiza físicamente dicho proceso (¿Como? - físico).

3.- El hardware a utilizar es una cámara de alta resolución 1080pi

9. Describe los tres principales niveles de visión. Especifica las entradas y salidas a cada nivel,
como la información adicional que se requiera en cada uno.

10. Un proceso computacional lo podemos considerar desde tres puntos de vista: teoría
computacional, algoritmo e implementación. Describe el proceso general de visión desde los
tres aspectos.
1. Instala y prueba el “laboratorio de visión” en tu computadora. Prueba cargar y desplegar

Diferentes imágenes en diferentes formatos.

Utilizando matlab cargamos una imagen

>> f = imread ('D:\frutas.jpg');

>> imshow(f)

Y cargamos la imagen en diferentes formatos:

Color escala de grises:

>> g=rgb2gray(f);

>> imshow(g)
Color blanco y negro:

>> g=im2bw(f);

>> imshow(g)

Transformación en gamma (negativo)

>> g=imadjust(f, [0 1 ], [1 0]);

>> imshow(g)
>> g=rgb2gray(f);

>> h=imadjust(g, [0.5 0.75], [0 1]);

>> imshow(h)

>> h=imadjust(g, [0.5 0.75], [0 1],3);

>> imshow(h)
>> h=imadjust(g, [0.5 0.75], [0 1],0.2);

>> imshow(h)

Problemas y proyectos capítulo 2 del libro “Visión


Computacional”

Capítulo 2
1. Una forma de transformación es obtener una imagen por cada “bit” del valor del pixel
en binario. Suponiendo cada pixel representado por un byte (8 bits), se tendrían 8
“planos” que representarían a la imagen a diferentes niveles de detalle. Definir la
función de transformación para obtener estas imágenes de salida.

2|
𝑇(𝑥, 𝑦) = 𝑒 −|(128/2𝜋𝜎

2. ¿Qué es ecualización por histograma? ¿Qué efecto tiene en la imagen?


Es la distribución de cada nivel de intensidad dentro de la imagen, es decir, nos da un
estimado de la probabilidad de ocurrencia de cada nivel de gris (r). El histograma nos
presenta una descripción global de la imagen y sobre todo nos da una indicación del
contraste en la imagen. De aquí que, si modificamos el histograma, podemos controlar
el contraste en la imagen.
3. ¿Cuál es la diferencia entre el filtrado en el dominio de la frecuencia y el filtrado en el
dominio espacial? ¿Qué ventajas y desventajas tienen los dos enfoques?
En el caso de filtrado en el dominio de la frecuencia se hace una transformación de la
imagen utilizando la transformada de Fourier.
Las técnicas o filtros en el dominio espacial operan directamente sobre los pixeles de la
imagen. Operan en la vecindad de los pixeles, generalmente mediante una máscara
cuadrada o rectangular.
4. Demuestra que, si volvemos a ecualizar por histograma una imagen previamente
ecualizada, el resultado es el mismo (no hay cambio).
Por que una imagen ya ecualizada por histograma ya tiene muy buenos resultados de
contraste así que volver a ecualizarla no tendría cambios notorios.
5. ¿Qué objetivos tiene el filtrado que elimina altas frecuencias y el que las acentúa? Da
ejemplos de máscaras para ambos tipos de filtros.
El filtrado de acentuamiento o pasa altos presenta solo las discontinuidades, atenuando
fuertemente las bajas frecuencias y haciendo que “desaparezcan” las regiones
homogéneas.
Un tipo de filtro que aún acentuando las altas frecuencias preserva las bajas es el filtro
“énfasis de altas frecuencias”.
6. Obtén las máscaras para un filtro Gaussiano de 5 x 5 pixeles, y d.s. = 1 y 3 pixeles.
Es similar al filtro de media, pero se usa una máscara diferente, modelizando la función
gaussiana:

Ejemplo de 5 x 5 pixeles y d.s.=1:


7. Considera una imagen de 8 x 8 con 8 niveles de gris, que tiene un fondo negro (0) y un
cuadrado de 4 x 4 con nivel 4 al centro. Ilustra la aplicación de un filtro pasa-bajos
(promedio) y pasa-altos a dicha imagen, obteniendo la nueva imagen.

Imagen original Filtro pasa-bajos Filtro pasa-altos


8. Considera la siguiente imagen (binaria):

Da el resultado (como imagen) de aplicar un filtro de mediana a dicha imagen.


Especifica que consideraste para el “borde” de la imagen.

Al ser una imagen binaria solo tenemos 2 contrastes, entonces para el borde lleno de
0’s se los dejó sin contraste.
9. Comenta que pasa en el límite al aplicar repetidamente un filtro pasa bajos espacial
de 3 x 3 a una imagen (puedes despreciar el efecto de las orillas de la imagen).
Los filtros pasa-baja atenúan las componentes de medias-bajas frecuencias y dejan
intactas las bajas en función de la frecuencia de corte que se elija. Se usan para eliminar
ruido de alta frecuencia, o eliminar todo lo que no sean variaciones suaves de nivel de
gris. Entonces al aplicar repetidas veces filtro pasa bajos la imagen se vuelve más
grisácea.

II. PROYECTOS
Los siguientes proyectos fueron realizados en MatLab.

2D Filtrado de Gauss Impgaussfilt

Filtrado de Gauss para imágenes 2d

Sintaxis
B = imgaussfilt(A)
B = imgaussfilt(A,sigma)
B = imgaussfilt(___,Name,Value,...)
gpuarrayB = imgaussfilt(gpuarrayA,___)

Descripción
B = imgaussfilt(A) filtra la imagen A con un kernel alisador 2-D de Gauss con desviación
estándar de 0,5. Devuelve B, la imagen filtrada.

B = imgaussfilt(A,sigma) filtra la imagen A con un kernel alisador 2-D de Gauss con


desviación estándar especificada por sigma.

B = imgaussfilt(___,Name,Value,...) filtra la imagen A con pares nombre-valor utilizados


para controlar aspectos del filtrado.

gpuarrayB = imgaussfilt(gpuarrayA,___) realiza la operación de filtrado en una GPU. La


imagen de entrada debe ser un gpuArray. La función devuelve un gpuArray. Esta sintaxis
requiere el Parallel Computing Toolbox™.

Ejemplos

Imagen lisa con filtro de Gauss

I = imread('cameraman.tif'); //Lea la imagen que desea filtrar.

Iblur = imgaussfilt(I, 2); //Filtrar la imagen con un filtro de Gauss con desviación
estándar de 2.

subplot(1,2,1) imshow(I) title('Original Image'); subplot(1,2,2) imshow(Iblur)


title('Gaussian filtered image, \sigma = 2') //Mostrar todos los resultados para la
comparación.

Convertir imagen RGB a grises rgb2gray

Convertir imagen RGB o colores a escala de grises

Sintaxis

I = rgb2gray(RGB)
newmap = rgb2gray(map)

Descripción
I = rgb2gray(RGB) convierte la imagen truecolor RGB en la imagen de intensidad de escala de
grises I. La función rgb2gray convierte las imágenes RGB en escala de grises eliminando la
información de matiz y saturación mientras conserva la luminancia. Si tiene instalado Parallel
Computing Toolbox™ , rgb2gray puede realizar esta conversión en una GPU.

newmap = rgb2gray(map) devuelve un colores de escala de grises equivalente a map.

Ejemplos

RGB = imread('peppers.png');
imshow(RGB)
//Lea el archivo de ejemplo, peppers.pngy muestre la imagen RGB.
I = rgb2gray(RGB);
figure
imshow(I)
//Convertir la imagen RGB en una imagen en escala de grises y mostrarla.

Ajustar valores de intensidad de imagen o colores imadjust

Sintaxis
J = imadjust(I)
J = imadjust(I,[low_in high_in],[low_out high_out])
J = imadjust(I,[low_in high_in],[low_out high_out],gamma)
newmap = imadjust(map,___)
RGB2 = imadjust(RGB,___)
gpuarrayB = imadjust(gpuarrayA,___)

Descripción
J = imadjust(I) asigna los valores de intensidad de la imagen en escala de grises I a nuevos
valores en J. De forma predeterminada, imadjust satura el 1% inferior y el 1% superior de todos
los valores de píxel. Esta operación aumenta el contraste de la imagen de salida J. Esta sintaxis
equivale a imadjust(I,stretchlim(I)).

J = imadjust(I,[low_in high_in],[low_out high_out]) asigna valores de intensidad


en I a nuevos valores en J , de manera que los valores entre low_in y high_in se asignan a
valores entre low_out y high_out. Puede omitir el argumento [low_out high_out] , en cuyo
caso, imadjust utiliza el [0 1]predeterminado.

J = imadjust(I,[low_in high_in],[low_out high_out],gamma) asigna valores de


intensidad en I a nuevos valores en J, donde gamma especifica la forma de la curva que describe
la relación entre los valores de I y J.

newmap = imadjust(map,___) ajusta el array m-por-3 colores asociado a una imagen indexada.
Puede aplicar la misma asignación a cada canal del colores o especificar asignaciones únicas
para cada canal.

RGB2 = imadjust(RGB,___) realiza el ajuste en cada plano (rojo, verde, y azul) del RGBde la
imagen de la intensidad del RGB. Puede aplicar la misma asignación a los componentes rojo,
verde y azul de la imagen o especificar asignaciones únicas para cada componente de color.

gpuarrayB = imadjust(gpuarrayA,___) realiza el ajuste de contraste en una GPU. La entrada


gpuArray gpuarrayA es una imagen de intensidad, imagen RGB o un colores. La salida
gpuArray gpuarrayB es la misma que la imagen de entrada. Esta sintaxis requiere el Parallel
Computing Toolbox™.

Ejemplos

I = imread('pout.tif'); imshow(I)
//leer la imagen
J = imadjust(I); figure imshow(J)
//Ajuste el contraste de la imagen para que el 1% de los datos se satura a intensidades bajas y
altas, y se muestra.
RGB = imread('football.jpg'); imshow(RGB)
//Leer una imagen RGB en el espacio de trabajo y mostrarla.
RGB2 = imadjust(RGB,[.2 .3 0; .6 .7 1],[]); figure imshow(RGB2)
//Ajuste el contraste de la imagen RGB, especificando límites de contraste.

Das könnte Ihnen auch gefallen