Vous êtes sur la page 1sur 48

Robótica Móvil

MCTG1008
Profesora: Lisbeth Karina Mena López
lismena@espol.edu.ec
lismena@fiec.espol.edu.ec
SENSORES PARTE 3
CAPÍTULO I

2
Contenido
1. Objetivo
2. Procesamiento de imágenes
3. Proceso de formación de imágenes
4. Representación de imágenes
5. Operaciones
6. Combinación de funciones
7. Aplicaciones
8. Ejemplo

3
1. Objetivos

 Conocer el comportamiento de los sensores para robots.


 Aprender los conceptos básicos del procesamiento de imágenes y sus aplicaciones.
 Realizar un ejemplo de procesamiento de imágenes.

4
2. Procesamiento de
imágenes

5
2. Procesamiento de imágenes
Procesamiento de imágenes: conjunto de métodos, técnicas y herramientas destinadas a la
manipulación y análisis de imágenes y vídeo digital.
Finalidades del procesamiento:
Mejora, restauración y eliminación de ruido.
Creación y manipulación de contenido.
Compresión y transmisión de imágenes y vídeo.
Comprensión y extracción de información.

6
Mejora, restauración y
2. Procesamiento de imágenes eliminación de ruido.

7
2. Procesamiento de imágenes
Mejora, restauración y eliminación de ruido.

8
2. Procesamiento de imágenes
Creación y manipulación de contenido.

9
3. Proceso de formación
de imágenes

10
3. Proceso de formación de imágenes
La formación de imágenes es un proceso mediante el cual una información luminosa 3D (la
escena) es proyectada en un plano 2D (la imagen).
Las cámaras imitan el proceso que tiene lugar en el ojo humano.

11
3. Proceso de formación de imágenes
El objetivo del modelo es que cada punto de la escena sea proyectado en un solo punto del plano
de imagen.
De esa manera la imagen estará enfocada.

Eje óptico

Mundo 3D
Plano de imagen
Apertura (fotodetectores)
Sistema óptico

12
3. Proceso de formación de imágenes
Podemos distinguir entre captura y digitalización.

Señal Señal digital


analógica

13
4. Representación de
imágenes

14
4. Representación de imágenes
Una imagen digital es una matriz, o array bi-dimensional, de números.
Cada celda de la matriz es un píxel.

15
4. Representación de imágenes

Un píxel

16
4. Representación de imágenes
Nº de columnas de la matriz: ancho de la imagen (width).
Nº de filas de la matriz: alto de la imagen (height).
Eje horizontal: eje x.
Eje vertical: eje y.
Normalmente el tamaño de la imagen se expresa como: ancho x alto
Ejemplo. Tamaños típicos:
320x240, 640x480,
800x600, 1024x768, ...
Si i es una imagen,
i[x, y] será el valor del píxel Height
en la columna x, fila y.

17
4. Representación de imágenes
Tipo de datos de cada celda de la matriz
Imagen binaria:
1 píxel = 1 bit
◦0 = negro; 1= blanco
Imagen en escala de grises:
1 píxel = 1 byte
◦Permite 256 niveles de gris
◦0 = negro; 255 = blanco
Imagen en color:
1 píxel = 3 bytes
◦Cada píxel consta de 3 valores:
(Rojo, Verde, Azul)
◦Un byte por color
◦16,7 millones de colores posibles

18
4. Representación de imágenes
Imágenes multicanal:
Cuando los píxeles representan magnitudes en distintos dominios físicos, decimos que la imagen
es multicanal.
Ejemplo. Imagen en color Imagen con 3 canales: canal R (rojo), canal G (verde), canal B (azul).

pixel = frame(2,3) 1 solo canal

pixel = frame(2,3,2) 3 canales

Canal que se
desea acceder

19
4. Representación de imágenes

20
4. Representación de imágenes
Histograma
Un histograma de la imagen es un gráfico que muestra la distribución de intensidades en una
imagen indexada o escala de grises.
Se puede utilizar la información en un histograma para elegir una operación mejora adecuada.

21
4. Representación de imágenes
Histograma

22
4. Representación de imágenes
Histograma

23
4. Representación de imágenes
Histograma

24
5. Operaciones

25
5. Operaciones
Recordatorio: ¡una imagen digital no es más que una matriz, o array bidimensional, de números!
Se puede aplicar las mismas operaciones que sobre cualquier número: sumar, restar, multiplicar,
dividir, aplicar and, or, máximo, mínimo, integrales, derivadas...

26
5. Operaciones
Operaciones de procesamiento global:
Aritméticas: sumar, restar, multiplicar, máximo, etc.
Unarias: una sola imagen y un valor constante.
Binarias: con dos imágenes.
Lógicas: and, or, not, etc.
Unarias: una sola imagen y una constante.
Binarias: con dos imágenes.
Otras transformaciones generales:
Transformaciones de histograma.
Transformaciones de color.
Binarización, etc.
Cada operación tendrá un significado, utilidad y aplicaciones específicos. +

27
5. Operaciones
Operaciones lógicas:

bw1 ~bw1

28
5. Operaciones
Operaciones Morfológicas:

Original Erosión Dilatación

29
5. Operaciones
Detección de bordes
Hallar aquellos puntos donde se produce una variación de intensidad

Original Sobel Canny

30
5. Operaciones
Localización y reconocimiento
1. Localizar objetos -> detección de contornos
2. Etiquetar objetos
3. Contar objetos
4. Características de regiones

31
5. Operaciones
Localización y reconocimiento

Detección de contornos Etiquetar/Contar objetos Características de regiones

32
6. Combinación de
funciones

33
6. Combinación de funciones
Adquisición
◦ Iluminación
◦ Área de trabajo

34
6. Combinación de funciones
Preprocesamiento y segmentación

35
6. Combinación de funciones
Reconocimiento

36
7. Aplicaciones

37
7. Aplicaciones
Visión artificial: reconocimiento de formas, interfaces perceptuales.
Interpretación de imágenes, video-vigilancia.
Detección de obstáculos
Etc.

38
8. Ejemplo

39
8. Ejemplo
OPENCV Y PYTHON
openCV 2.4
Python 2.7
Instalar python https://www.python.org/
www.youtube.com/watch?v=NEo4tDu6tU8
Instalar numpy
cmd
pip install numpy
Instalar Opencv
https://sourceforge.net/projects/opencvlibrary/files/
Conectar Python y OpenCV
Ir a opencv/build/python/2.7 copiar cv2.pyd a
C:/Python27/lib/site-packeges

40
8. Ejemplo
# Prueba opencv
import numpy as np
import cv2
from matplotlib import pyplot as plt

#leer y mostrar una imagen/mat


img = cv2.imread('C:/Users/lisbeth/Pictures/espol.jpg')
cv2.imshow('ventana',img)
cv2.waitKey(0)
#escala de gris
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('ventana2',gray)
cv2.waitKey(0)

41
8. Ejemplo
#tamanio de la imagen #canales
print img.shape b,g,r = cv2.split(img)
print img.size img_bgr = cv2.merge((b,g,r))
print img.dtype cv2.imshow('bgr_b',img_bgr[:,:,0])
cv2.waitKey(0)
print gray.shape
#pixeles de la imagen
px = img[100,100]
print px

px_g=gray[100,100]
print px_g

42
8. Ejemplo
#Histograma
hist = cv2.calcHist([gray],[0],None,[256],[0,256])
plt.subplot(121),plt.imshow(gray,'gray')
plt.subplot(122),plt.plot(hist)
plt.xlim([0,256])
plt.show()

43
8. Ejemplo
#Binario
ret, binario = cv2.threshold(gray,128,255,cv2.THRESH_BINARY)
cv2.imshow('binario',binario)
print "retval: "+ str(ret)

http://docs.opencv.org/2.4/doc/tutorials/imgproc/threshold/thresho
ld.html

44
8. Ejemplo
#Erosion dilatacion
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(binario,kernel)
cv2.imshow('erosion',erosion)

dilatacion = cv2.dilate(erosion,kernel,iterations=2)
cv2.imshow('dilatacion',dilatacion)

kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(dilatacion,kernel)
cv2.imshow('erosion',erosion)
cv2.waitKey(0)

45
8. Ejemplo
#bordes
edges_img = cv2.Canny(img,100,100)
edges_bin = cv2.Canny(binario,100,100)

cv2.imshow('bordes img',edges_img)
cv2.imshow('bordes binario',edges_bin)
cv2.waitKey(0)

46
8. Ejemplo
#contornos
contorno, jerarquia =
cv2.findContours(erosion,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
print "lista contornos:", len(contorno)
cnt = contorno[1] #leer cada contorno
cv2.drawContours(img, contorno,-1, (0,255,0),2) # grafica todos los contornos
(-1)
cv2.drawContours(img,[cnt],0,(0,255,0),2) #grafica el contorno cnt
cv2.drawContours(img, contorno, 1, (0,255,0), 3) #grafica el contorno cnt
cv2.imshow('contornos',img)
http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html
Modos y métodos:
http://docs.opencv.org/3.1.0/d3/dc0/group__imgproc__shape.html#ga4303f45752694956374734a03c54d5ff

47
8. Ejemplo
#propiedades de la region
#area:
area = cv2.contourArea(cnt)
print "Area: " + str(area)
cnt1 = contorno[1] #leer cada contorno
cnt3 = contorno[3] #leer cada contorno
area1 = cv2.contourArea(cnt1)
area3 = cv2.contourArea(cnt3)
print "Area1: " + str(area1)
print "Area3: " + str(area3)

48

Vous aimerez peut-être aussi