You are on page 1of 32

AFORGE.NET Y ACCORD.

NET
FRAMEWORKS DE
DESARROLLO AVANZADO
Ing. Carlos M. Jaramillo C. Mg. Sc.
UNIVERSIDAD NACIONAL DE LOJA
AFORGE .NET
 Es un framework de código abierto C # diseñado para desarrolladores e
investigadores en los campos de visión artificial e inteligencia artificial:
procesamiento de imágenes, redes neuronales, algoritmos genéticos, lógica
difusa, aprendizaje automático, robótica, etc.
 El marco está compuesto por el conjunto de bibliotecas y aplicaciones de
muestra, que demuestran sus características:
 AForge.Imaging - biblioteca con rutinas y filtros de procesamiento de imágenes;
 AForge.Vision - biblioteca de visión por computadora;
 AForge.Video - conjunto de bibliotecas para procesamiento de video;
 AForge.Neuro - biblioteca de computación de redes neuronales;
 AForge.Genetic - biblioteca de programación de evolución;
 AForge.Fuzzy - biblioteca de computación difusa;
 AForge.Robotics - biblioteca que proporciona soporte de algunos kits de robótica;
 AForge.MachineLearning - biblioteca de aprendizaje automático;
 etc.
LICENCIA

 A partir de la versión 2.0.0 (incluida la versión beta), AForge.NET Framework


se publica bajo la licencia LGPL v3 . La única excepción es el componente
AForge.Video.FFMPEG que se publica bajo la licencia GPL v3 , ya que
depende de la compilación GPL de la biblioteca FFMPEG. Así que ten
cuidado: si la licencia GPL no es adecuada para tu proyecto, entonces no
uses este componente.

 Todas las versiones anteriores de AForge.NET Framework (1.xx) se publican


bajo la licencia GPL v3 .
 AForge.Imaging , que es la biblioteca más grande del framework hasta
ahora, contiene diferentes rutinas de procesamiento de imágenes, que
están destinadas a ayudar como en el mejoramiento / procesamiento de
la imagen, como en algunas tareas de visión por computadora:
 Filtros de corrección de color lineal (corrección RGB / HSL / YCbCr, corrección
de brillo / contraste / saturación);
 Filtros de corrección de color no lineales (estiramiento de contraste,
ecualización de histograma, reasignación de color, corrección de gamma);
 Filtros para volver a colorear la imagen (escala de grises, sepia, modificador de
tono, rotar canales, invertir);
 Filtrado de píxeles por color (espacios de color RGB, HSL, YCbCr);
 Manipulaciones de canales de color (espacios de color RGB e YCbCr);
 Reducción de color (incluido el difuminado de color);
 Filtros de binarización (umbral, umbral con acarreo, tramado ordenado,
tramado de Bayer, tramado Floyd-Steinberg, tramado de Burkes, tramado de
Jarvis-Judice-Ninke, tramado de Sierra, tramado Stucki);
 Binarización adaptativa (estadísticas de imágenes simples, umbralización
iterativa, umbralización de Otsu);
 Umbral local adaptable ;
 Filtros de convolución (media, desenfoque, nitidez, bordes, desenfoque
gaussiano, filtros de convolución personalizados);
 Filtros de morfología matemática (erosión, dilatación, apertura, cierre, sombrero
de copa, sombrero de abajo, fallar);
 Detectores de bordes (homogeneidad, diferencia, sobel, astuto);
 2 filtros de fuente (fusionar, intersecar, sumar, restar, diferenciar, avanzar hacia,
morph, diferencia de umbral , diferencia euclidiana acotada );
 Procesamiento de blobs (conteo, extracción, filtrado, etiquetado de
componentes conectados);
 Llenando agujeros en imágenes binarias;
 Detectores de esquinas (Moravec, Susan);
 Transformación cuadrilátera y hallazgos de esquinas;
 Cambio de tamaño y rotación (vecino más cercano, bilineal, bicúbico);
 Transformación a / desde coordenadas polares ;
 Transformación de Hough ( transformaciones de línea y círculo);
 Plantilla exhaustiva y matchin de bloque ;
 Estadísticas de color de la imagen (RGB, HSL, YCbCr) y estadísticas verticales /
horizontales (RGB);
 Filtros suavizantes (mediana, media, suavizado conservador, suavizado
adaptativo, bilateral);
 Generadores de texturas (nubes, mármol, madera, laberinto, textiles);
 Filtros de textura (texturizado, fusión, filtrado);
 Más efectos , como pixelado, jittering, pintura al óleo, onda de agua,
deformación de imagen, etc .;
 Generadores de ruido (aditivo, sal y papper);
 Documente el corrector oblicuo para verificar la rotación de los documentos
escaneados;
 Creación de imagen anaglifo estéreo ;
 Filtros de relleno de inundación (usando el color especificado o calcula el
color medio del área);
 Corrección de iluminación de campo plano, esqueletización simple,
encogimiento, recorte / relleno / movimiento de lienzo, reflejo, filtro de
Bayer, filtro de máscara / máscara;
 Transformación de Fourier (filtros de paso bajo y de paso alto);
 Algunos decodificadores de imágenes para formatos de imagen
personalizados ( PNM , FITS );
 etc.
UMBRAL LOCAL ADAPTABLE
// crea el filtro BradleyLocalThresholding filter = new BradleyLocalThresholding ();
// aplica el filtro filter.ApplyInPlace (imagen);

Imagen inicial: Imagen del resultado:


DETECTOR DE BORDES
// crear filtro HomogenityEdgeDetector filter = new HomogenityEdgeDetector ();
// aplica el filtro filter.ApplyInPlace (imagen);

Imagen inicial: Imagen del resultado:


TRANSFORMACIÓN CUADRILATERAL Y
HALLAZGO
/ definir las esquinas del cuadrilátero
Lista <IntPoint> esquinas = nueva Lista <IntPoint> ();
esquinas.Agregar ( nuevo IntPoint ( 99 , 99 ));
esquinas. Añadir ( nuevo IntPoint ( 156 , 79 ));
esquinas. Añadir ( nuevo IntPoint ( 184 , 126 ));
esquinas. Añadir ( nuevo IntPoint ( 122 , 150 ));
// crear filtro
QuadrilateralTransformation filter = nueva Transformación Cuadrilateral (esquinas, 200 , 200 );
// aplicar el filtro Bitmap newImage = filter.Apply (image);

Imagen inicial: Imagen del resultado:


ANAGLIFO ESTEREO IMAGEN EN 3D
// crear filtro
StereoAnaglyph filter = new StereoAnaglyph ();
// configura la imagen derecha como superposición
filter.Overlay = rightImage
// aplicar el filtro (proporcionando imagen izquierda)
Bitmap resultImage = filter.Apply (leftImage);

Imagen de origen Imagen de superposición Imagen del resultado:


(izquierda): (derecha):
 La biblioteca AForge.Vision consta de diferentes rutinas de detección de
movimiento y procesamiento de movimiento.
 La biblioteca AForge.Math contiene diferentes algoritmos relacionados con
las matemáticas, que el marco de trabajo utiliza internamente, ya que
pueden ser utilizados por los usuarios. Algunos de los algoritmos más
interesantes son:
 Estimación de postura en 3D usando los algoritmos POSIT y POSTA
Coplanar(ver artículo dedicado );
 Comprobador de forma simple (ver artículo dedicado );
 Algoritmo de casco convexo Graham ;
 etc.
COMPROBADOR DE FORMA SIMPLE
// ubicar objetos usando el contador de blobs
BlobCounter blobCounter = new BlobCounter ();
blobCounter.ProcessImage (mapa de bits);
Blob [] blobs = blobCounter.GetObjectsInformation ();
// crear un objeto Graphics para dibujar en la imagen y un bolígrafo
Graphics g = Graphics.FromImage (mapa de bits);
Pen bluePen = nuevo Pen (Color.Blue, 2);
// verifica cada objeto y dibuja un círculo alrededor de los objetos, que son reconocidos como círculos
for (int i = 0, n = blobs.Length; i <n; i ++) {
List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints (blobs [i]);
List <IntPoint> corners = PointsCloud.FindQuadrilateralCorners (edgePoints);
g.DrawPolygon (bluePen, ToPointsArray (esquinas));
}
bluePen.Dispose (); g.Dispose ();
DETECTOR DE MOVIMIENTO
// crear detector de movimiento Detector
MotionDetector = nuevo MotionDetector ( new TwoFramesDifferenceDetector (), new MotionAreaHighlighting ());
// alimenta continuamente cuadros de video al detector de movimiento
while (...) {
// procesa un nuevo cuadro de video y verifica el nivel de movimiento
if (detector.Profetagrama (videoFrame)> 0.02 )
{ // suena la alarma o hace algo más }
}
 La biblioteca AForge.Video contiene diferentes clases, que proporcionan
acceso a datos de video. Es bueno tenerlo teniendo en cuenta la
cantidad de material de procesamiento de imágenes en el marco.
 Acceso a las transmisiones JPEG y MJPEG , que permite el acceso a cámaras IP;
 Acceso a cámaras web USB , dispositivos de captura y archivos de video a
través de la interfaz DirectShow;
 Lectura / escritura de archivos AVI usando la interfaz Audio para Windows;
 Lectura / escritura de archivos de video usando la biblioteca FFmpeg ;
 Soporte del sensor de Microsoft Kinect;
 Soporte de cámaras XIMEA;
 Contenedor de fuente de video asincrónico .
 La biblioteca AForge.Robotics contiene algunas clases para manipular
algunos kits de robótica:
 Lego Mindstorm RCX Robotics kit;
 Lego Mindstorm NXT Robotics kit ;.
 Tablero de robótica Qwerk ;
 Robot Surveyor SRV-1 Blackfin ;
 Tablero de robótica Surveyor Stereo Vision System .
 La biblioteca AForge.Neuro consiste en algunas implementaciones
comunes de arquitecturas de redes neuronales y sus algoritmos de
aprendizaje:
 Redes de avance de múltiples capas que utilizan la función de activación;
 Redes de distancia (Kohonen SOM, por ejemplo);
 Aprendizaje simple del perceptrón, aprendizaje de la regla Delta, aprendizaje
de la propagación de la espalda, aprendizaje SOM de Kohonen, aprendizaje
evolutivo basado en el algoritmo genético;
 Funciones de activación (umbral, sigmoide, sigmoide bipolar).
 La biblioteca de AForge.Genetic consta de clases destinadas a resolver
diferentes tareas de las áreas de Algoritmos Genéticos (GA), Programación
Genética (GP) y Programación de Expresión Génica (GEP):
 Cromosomas GA (matriz binaria, matriz corta, matriz doble), cromosoma basado en
el árbol GP y cromosoma GEP;
 Algoritmos de selección (élite, ruleta, rango);
 Funciones de ejercicio comunes (optimización de funciones 1 / 2D, regresión
simbólica, predicción de series temporales).
 Clase de población para manejar cromosomas.
 La biblioteca AForge.Fuzzy consiste en clases para realizar diferentes cálculos
borrosos, comenzando con el uso de conjuntos difusos básicos y variables
lingüísticas y continuando con un sistema de inferencia completo, que es
capaz de ejecutar un conjunto de reglas difusas evaluando la variable difusa
solicitada.
 La biblioteca AForge.MachineLearning contiene algunas clases del área de
aprendizaje automático:
 Algoritmos de aprendizaje QLearning y Sarsa;
 Epsilon codicioso, Boltzmann, ruleta y las políticas de exploración Tabu Search.
Socios del proyecto AForge.NET
Framework
 XIMEA desarrolla, fabrica y suministra sistemas integrados de visión
artificial, cámaras inteligentes con PC en el interior, CCD, CMOS, USB,
IEE1394, cámaras IP67 industriales protegidas, cámaras subminiatura,
cámaras de rayos X y de poca luz, soluciones de imágenes
personalizadas, software de procesamiento de imágenes integrado .

 La visión de GEN2 ROBOTICS es ser el proveedor líder de tecnología


excelente, innovación de vanguardia y productos de calidad
excepcional para los mercados de inspección, aplicación de la ley,
video aéreo, fotografía aérea y cine en todo el mundo.
Proyectos y aplicaciones que utilizan
AForge.NET Framework
 Gatos Ojos Alarma Disparador por Spangenberger Sebastien. La herramienta
Cats Eyes Alarms Trigger es una herramienta de detección de movimiento
multicámara.
 HatchView de Digital Metrology Solutions.
 Universe Sandbox - Software interactivo de astronomía para todos.
 Accord.NET Framework por Cesar Roberto de Souza. Accord.NET Framework es
un framework C # que amplía el Framework AForge.NET con nuevas
herramientas y bibliotecas.
 iSpy por Sean Tearney. iSpy es un software de detección de movimiento,
detección de sonido, transmisión en vivo y notificación.
 Kinovea por Joan Charmant. Kinovea es un software de análisis de video
gratuito y de código abierto para entrenadores, atletas y profesionales
médicos.
Proyectos y aplicaciones que utilizan
AForge.NET Framework
 Waterhobo - Ever Diligent Ever Watching de Tim Higgins.
 Sentry Gun por Diederick Kavelaars. Sentry Gun es un proyecto que
proporciona instrucciones y software para construir su propio dispensador de
arma de fuego / torreta / pistola de agua / teddybear completamente
automático y completamente autónomo.
 Sinapse : un programa de código abierto para el entrenamiento de redes
neuronales para realizar tareas simples, como la aproximación de funciones, el
reconocimiento de patrones, la clasificación y más.
 Grabador de video TimeLapse activado por movimiento por Igor Moochnick.
 Espejo retrovisor de Sumit Khanna.
 Sustitución de carteles en videos de fútbol de Stephan Petzl.
 NeurApp es un software intuitivo para explorar la aproximación mediante redes
neuronales artificiales. Manual .
 El marco Accord.NET es un marco .NET de aprendizaje automático se
combina con las bibliotecas de audio y procesamiento de imagen
completamente escrito en C # basado en Aforge.Net.
 Accord.NET es un marco para la informática científica en .NET. El marco
está compuesto por bibliotecas múltiples que abarcan una amplia gama
de aplicaciones informáticas científicas, tales como procesamiento de
datos estadísticos, aprendizaje automático, reconocimiento de patrones,
que incluyen, entre otros, visión artificial y audición por computadora.
 El marco ofrece una gran cantidad de distribuciones de probabilidad,
pruebas de hipótesis, funciones del kernel y soporte para las técnicas de
medición de rendimiento más populares.
 El marco se divide en bibliotecas que incluyen:
 Computación científica
 Accord.Math Contiene una biblioteca de extensión de la matriz, junto con un
conjunto de métodos de descomposición de matriz numéricos , algoritmos de
optimización numérica para restringidos y problemas sin restricciones,
funciones especiales y otras herramientas para aplicaciones científicas.
 Accord.Statistics Distribuciones de probabilidad, modelos estadísticos y
métodos tales como regresión lineal y logística, modelos de Markov ocultos,
campos aleatorios condicionales (ocultos), análisis de componentes
principales, mínimos cuadrados parciales, análisis discriminante, métodos y
funciones de Kernel y muchas otras técnicas relacionadas.
 Accord.MachineLearning Support Vector Machines, Decision Trees, Naive
Bayesian models, K-means, Gaussian Mixture models y algoritmos generales
como RANSAC, Cross-validation y Grid-Search para aplicaciones de
aprendizaje automático.
 Accord.Neuro tales como Levenberg-Marquardt (LM) , Backpropagation
Resiliente Paralelo , Aprendizaje Profundo, Máquinas Boltzmann Restringidas ,
procedimientos de inicialización como Nguyen-Widrow y otros métodos
relacionados con redes neuronales.
 Procesamiento de señales e imágenes
 Accord.Imaging Detectores de puntos de interés (Harris, SURF y FAST),
emparejamiento de imágenes y métodos de costura de
imágenes. Puede crear imágenes integrales y otras transformaciones
de imagen, además de filtros de imagen adicionales para el
procesamiento de imágenes de aplicaciones.
 Accord.Audio Procesa, transforma, filtra y maneja señales de audio
para aprendizaje automático y aplicaciones estadísticas.
 Accord.Vision Detección y seguimiento de rostros en tiempo real, así
como métodos generales para detectar, rastrear y transformar objetos
en secuencias de imágenes. Contiene definiciones de cascada,
seguidores Camshift y Dynamic Template Matching.
 Bibliotecas de soporte
 Accord.Controles histogramas, diagramas de dispersión y visores de
datos tabulares para aplicaciones científicas.
 Accord.Controls.Imaging Controles de Windows Forms para mostrar y
manejar imágenes. Contiene un control conveniente ImageBox que
imita el comportamiento tradicional de MessageBox para mostrar o
inspeccionar imágenes rápidamente.
 Accord.Controls.Audio Windows Forms controla para mostrar formas de
onda e información relacionada con el audio.
 Accord.Controls.Vision Windows Forma componentes y controles para
rastrear movimientos de cabeza, cara y mano y otras tareas
relacionadas con la visión por computadora.
 Adicionales
 Algunas características que pueden interesarle:
 Una biblioteca matricial basada en métodos de extensión sobre
estructuras .NET estándar , dando espacio para una mayor reutilización
del código y permitiendo el cambio gradual de algoritmos ya
existentes;
 Más de 40 distribuciones estadísticas diferentes que pueden ser
conectadas a los métodos estadísticos más variados, como Hidden
Markov Models y los modelos de mezcla;
 Más de 30 pruebas de hipótesis , que incluyen pruebas de una muestra,
dos muestras, muestras múltiples, pruebas de tablas de contingencia
para la evaluación del rendimiento y pruebas ANOVA;
 Más de 38 funciones del kernel listas para ser conectadas a cualquiera
de los métodos del kernel disponibles, como Kernel Support Vector
Machines, Kernel Principal Components y Kernel Discriminant Analysis.
Links de descarga de framework

http://www.aforgenet.com/framework/

http://accord-framework.net/index.html
DEMOSTRACIÓN DE FRAMEWORKS
La creatividad es la fuerza más constructiva
del planeta, tus límites solo los pones tú.

Investiga, innova, inventa. Una idea puede


cambiar tu vida y la del resto del mundo.
GRACIAS POR SU
ATENCIÓN
Correo: litosjc_21@hotmail.com
Facebook:
https://www.facebook.com/carlos.m.jaramillo.54

You might also like