EL PIXEL RE-VISITADO IMAGEN MINING Y VISUALIZACION

Anuncio
X Jornadas de Data Mining & BI
Octubre 2015
Martin Volpacchio ** *
Co-Founder Pi Analytical Solvers
** Profesor FI MDM Universidad Austral
** MS Math Economics
Data Sci, Mg Sc.
Analytics Research CDR
EL PIXEL RE-VISITADO
IMAGEN MINING
Y
VISUALIZACION DINAMICA
Complex
Made Easy
TEMARIO
0. Porque es importante?
1. Videos Gráficos en R
2. Procesamientos de imágenes
3. Ejemplos
3.1 Recuperar imagines borrosas
3.2 Aplicaciones en Diagnóstico
4. Conclusiones
0. POR QUE ES IMPORTANTE?
…DONDE APLICA?
The Complex
Made Easy
IMPORTANCIA 3 ASPECTOS…
 Visualización: Facilitar el entendimiento de procesos dinámicos…Gráficos.
Machine Learning, estadística, procesos matemáticos…posee naturaleza
dinámica, aplica convergencia, evolución, perturbaciones, etc,
 Image Mining: Capturar y entender patrones en imágenes y videos. Múltiples
posibilidades en Salud, Biología, redes sociales…
 Procesamiento de imágenes/Visión por computadora: Mejorar el Sistema Visual
Humano artificialmente…astronomía, seguridad, Trafico…
1. VIDEO GRAFICOS?
…BE DISRUPTIVE
The Complex
Made Easy
BASICS …
VIDEOS GRAFICOS
Presentan espacial información que cambia
sobre el tiempo o presentar otra dimensión a
la imagen estatica
UN EJEMPLO DE
VIDEO PLOT
UN EJEMPLO CON ACTIVEPRESENTER…PRIMITIVE PERO
ILUSTRATIVO
SLIDE 1
UN EJEMPLO DE
VIDEO PLOT
UN EJEMPLO CON FFMGEP…UN POCO MAS SOFISTICADO….
Los Frame
.png
El
intervalo
de Tiempo
El
programa
FFmpeg
El Video
PLot
UN EJEMPLO DE
VIDEO PLOT
2. PROCESAMIENTO DE IMAGENES
…EJEMPLOS
The Complex
Made Easy
HERRAMIENTAS
BASICAS
OPEN SOURCE…
Lenguajes




C++
Java
Python
Entre otros…
Librerias




Aforge.net
Cimg (http://cimg.sourceforge.net/)
OPencv
Entre otros…
BASICS …
EN
PROCESAMIENTO
DE IMAGENES…
LOS RASTER SON ALMACENADOS EN
ARCHIVOS DE IMÁGENES (JPG, TIFF, PNG, GIF, BMP
DICOM, ENTRE OTROS)
Matriz
Raster

LOS RASTER SON CARACTERIZADO POR ALTURA,
ANCHO Y CANTIDAD DE BIT POR PIXEL

70 A 130 PIXEL POR PULGADAS CUADRADA (2,53CM)

EL MODELO RGB ES EL MODO MAS USUAL QUE USAN
LOS COMPUTADORAS PARA GENERAR ADITIVAMENTE,
A PARTIR DEL ROJO, VERDE Y AZUL, UNA GRAN
VARIEDAD DE COLORES

RGB TRIPLO ( R, G, B). CADA COLOR ES UN ENTERO
ENTRE 0 Y 255 EN EL CASO 3 VECTORES DE 8 BIT (24 BIT),
PERO PUEDE EXTENDERSE A 10 (1023), A 16 (0 A 65535) Y
MAS, EN ALTA RESOLUCIÓN
3 Pixeles
SEGMENTACION
SEPARAR REGIONES DE INTERÉS (ROI)…
img = cv2.imread(‘paisaje.jpg')
screen_res = 1280, 720
scale_width = screen_res[0] / img.shape[1]
scale_height = screen_res[1] / img.shape[0]
scale = min(scale_width, scale_height)
window_width = int(img.shape[1] * scale)
window_height = int(img.shape[0] * scale)
cv2.namedWindow('dst_rt', cv2.WINDOW_NORMAL)
##cv2.resizeWindow('dst_rt', window_width, window_height)
cv2.imshow( 'dst_rt', img )
print img.shape[1]
print img[1,2,2]
f=img.shape[0]
c=img.shape[1]
m2=0
count=0
for i in range(0,f):
for j in range(0,c):
m1=(img[i,j,0]+img[i,j,1]+img[i,j,2])
m2=m2+m1
count=count+1
m2 = m2/count
for i in range(0,f):
for j in range(0,c):
for k in (0,1,2):
if (img[i,j,k] < m2):
img[i,j,k] = 0
else:
img[i,j,k] = 255
cv2.namedWindow('grey', cv2.WINDOW_NORMAL)
cv2.imshow( 'grey', img )
Filtro
DETECCION DE
FRONTERAS
EXISTEN MUCHOS METODOS…VEAMOS EL GRADIENTE EN SU VERSIÓN MAS
SIMPLIFICADA
__author__ = 'Martin: PseudoCodigo
original
import Librerias
Cargar imagen en IMG (Grey NO
RGB)
Calcular Gradiente
for i in range(1,f-1):
for j in range(1,c-1):
0,4
0,8
dx=(img[i,j]-img[i+1,j])
dy=(img[i,j]-img[i,j+1])
z=(dx*dx+dy*dy)**(.5)
Aplicar threshold de gradiente
Mostrar resultados con Bordes.
0,6
0,9
3 . EJEMPLOS AVANZADOS
…POWERED BY
The Complex
Made Easy
EJEMPLO I
…DETECTAR INFRACTORES DE TRANSITO
The Complex
Made Easy
RECUPERAR IMÁGENES BORROSAS
…BLUR+MOVIMIENTO+FOCO
The Complex
Made Easy
PROBLEMA CUAL ES EL NUMERO DE PATENTE?
Debemos eliminar el Blur+Movimiento+foco…
BLUR QUE ES?
Efecto de iluminar y esconder ciertos elementos de una imagen
def blur_edge(img, d=31):
Kernel Usado
h, w = img.shape[:2]
img_pad = cv2.copyMakeBorder(img, d, d, d, d, cv2.BORDER_WRAP)
img_blur = cv2.GaussianBlur(img_pad, (2*d+1, 2*d+1), -1)[d:-d,d:-d]
y, x = np.indices((h, w))
dist = np.dstack([x, w-x-1, y, h-y-1]).min(-1)
w = np.minimum(np.float32(dist)/d, 1.0)
return img*w + img_blur*(1-w)
BLUR QUE ES?
BLUR Convolución de la imagen con el kernel
gausiano…desmitificado!
Kernel Usado
ELIMINAR
TRANSFORMACION AFIN DE UNA IMAGEN…
MOVIMIENTO
Es una transformacion de la imagen que preserva puntos, lineas y planos de la imagen
def motion_kernel(angle, d, sz=65):
kern = np.ones((1, d), np.float32)
c, s = np.cos(angle), np.sin(angle)
A = np.float32([[c, -s, 0], [s, c, 0]])
sz2 = sz // 2
A[:,2] = (sz2, sz2) - np.dot(A[:,:2], ((d-1)*0.5, 0))
kern = cv2.warpAffine(kern, A, (sz, sz), flags=cv2.INTER_CUBIC)
return kern
SLIDE 1
ACELERANDO
LUEGO DE UNOS PASOS ADICIONALES (OMITIDOS)…APLICAMOS UNA
TRANSFORMACIÓN DE WEINER…
RESULTADO PYTHON+OPENCV….
EJEMPLO II
…DETECTAR PATOLOGÍAS EN IMÁGENES MEDICAS
The Complex
Made Easy
SCREENING DE MAMOGRAFIAS
…CDR RESEARCH
The Complex
Made Easy
CAD
 Iniciamos contacto con Radboud University Nijmegen, uno de los
centros mas avanzados en CAD
 CDR existe una de las plataformas mas importantes de imágenes de
Latam.
CONCLUSIONES
The Complex
Made Easy
ACELERANDO
1. Entender I : Es critico dominar el Data Set de imágenes, sus
transformaciones y las técnicas de procesamiento
2. Entender II : Herramientas de procesamiento de imágenes
3. Entender III: sinergias con especialistas del dominio de aplicación
 Thank

 You
Martin@AnalyticsSolvers.com
Descargar