Escolar Documentos
Profissional Documentos
Cultura Documentos
VISIN ARTIFICIAL Y
REDES NEURONALES
RECONOCIMIENTO DE
UNA PERSONA/GATO
INTRODUCCIN
En la desesperada bsqueda que en los ltimos aos ha emprendido el hombre
(ingeniero), para desarrollar sistemas computacionales basados en modelos de otras
reas del conocimiento como la medicina (biolgicos) bajo el nombre de una disciplina
llamada Inteligencia Artificial; se ha encontrado con miles de retos al desarrollar
algoritmos humanizados como las redes neuronales, sistemas expertos, algoritmos
genticos etc.
Tracking de objetos.
Pgina 1 de 27
Pre-procesado de la imagen.
Este proceso prepara la imagen para facilitar la deteccin de regiones u objetos.
Se consigue a partir de la reduccin del ruido y simplificacin de la imagen.
Aumenta la precisin y eficiencia de la segmentacin porque reduce problemas
como imgenes desenfocadas, mala iluminacin, fallos en la cmara, etc.
Segmentacin.
El objetivo de este proceso es localizar el objeto o regin considerada como
elemento importante a detectar. Por tanto, es necesario aislarlo del resto de la
imagen. Se detectan los bordes del objeto y se agrupan los pxeles que
pertenecen al mismo grupo.
El objetivo es binarizar la imagen, es decir, marcar como 1 si el pxel pertenece
a un objeto o regin importante y 0 si el pxel no pertenece a un objeto o regin
determinada (fondo). Un ejemplo es la deteccin de objetos: los objetos quedan
separados de la imagen para poder detectarlos posteriormente en otra imagen.
Reconocimiento e interpretacin.
En esta fase se comparan los descriptores de ambos objetos/regiones para
determinar si son iguales a partir de la vecindad de los vectores de
caractersticas. Una vez reconocidos se debern interpretar segn el objetivo de
la aplicacin. Tambin se incluyen los procesos de optimizacin para mejorar el
reconocimiento (descartar falsos positivos, aislar objetos, etc.). Por ejemplo, en
una aplicacin para detectar seales de trfico, si se detecta y reconoce una
Pgina 2 de 27
Las etapas anteriormente descritas siguen siendo necesarias para la aplicacin de este
proyecto. Es por ello que debemos conocer las tcnicas y algoritmos que existen en la
actualidad y para decidir por el ms adecuado.
Las anteriores etapas se pueden agrupar en dos grandes fases; caracterizacin del
objeto y reconocimiento:
CARACTERIZACIN
DE LA IMGEN
RECONOCIMIENTO
Las inspecciones realizadas por los seres humanos, a menudo no pueden cumplir con
los requisitos de la industria moderna respecto a la velocidad de produccin, calidad de
producto y costes de produccin. Los humanos se cansan, cometen errores y los
criterios que se aplican durante las inspecciones son inevitablemente subjetivos. En
algunos casos, no es humanamente posible llevar a cabo la tarea de inspeccin debido
a las condiciones ambientales. Las cmaras y los sistemas que componen un sistema
de visin artificial, por el contrario, llevan a cabo las mediciones con una precisin
constante y a un ritmo que es establecido de acuerdo a los requerimientos o
necesidades. Estas ventajas han llevado a una creciente aceptacin de la visin artificial
por todo el mundo.
El reconocimiento de caracteres se puede basar en tcnicas de correlacin simple
(comparacin), sin conocimientos especializados de la forma en que los caracteres
individuales se forman, o se pueden usar algoritmos ms avanzados de inteligencia
artificial.
Los sistemas de visin tambin pueden ser usados para leer cdigos de barras con un
mayor grado de confianza que un escner lser. Incluso si una gran parte del cdigo de
barras est oculto por suciedad, un sistema de visin, por lo general, puede leerlo,
mientras que un lector de cdigos de barras convencional no.
Pgina 4 de 27
5.1.
1. MOSTRAR IMAGEN:
En el cdigo mostrado a continuacin permite al usuario seleccionar una imagen
dentro de un listado y poderlo visualizar en el formulario.
Public Class frmVisionArti
Private Sub btnMostarImg_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnMostarImg.Click
Dim img As Graphics = Me.CreateGraphics
Dim puntoimg As New Point(0, 0)
Dim myBitmap As Bitmap
Dim archivo As String
archivo = "..\"
archivo = archivo + lstImg.SelectedItem
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
End Sub
Pgina 5 de 27
2. GATO/PERSONA
El siguiente cdigo nos permite listar las imagines en el listbox para posteriormente
ser seleccionad.
Private Sub frmVisionArti_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim i As Integer
Dim personaImg As String
Dim gatoImg As String
personaImg = "persona"
For i = 1 To 20
Me.lstImg.Items.Add(personaImg + Trim(Str(i)) + ".bmp")
Next
gatoImg = "gato"
For i = 1 To 20
Me.lstImg.Items.Add(gatoImg + Trim(Str(i)) + ".bmp")
Next
personaImg = "redupersona"
For i = 1 To 20
Me.lstImg.Items.Add(personaImg + Trim(Str(i)) + ".bmp")
Next
gatoImg = "redugato"
For i = 1 To 20
Me.lstImg.Items.Add(gatoImg + Trim(Str(i)) + ".bmp")
Next
End Sub
3. SUAVIZADO:
El siguiente cdigo de suavizado nos permite reconocer la imagen y lograr la
transformacin de la misma a blanco y negro dependiendo de la intensidad que
esta posea.
Private Sub btnSuaviUmbral_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSuaviUmbral.Click
Dim img As Graphics = Me.CreateGraphics
Dim puntoimg As New Point(0, 0)
Dim myBitmap, mybitmapf As Bitmap
Dim pixelColor, pixelColor1 As Color
Dim alfas, azuls, rojos, verdes As Integer
Dim resx, resy, x, y, xi, yi As Integer
Dim archivo As String
Dim alfa(25), rojo(25), verde(25), azul(25) As Integer
Dim personaImg As String
Dim i, j, figuras As Integer
Dim T As Integer
MsgBox("Procesando
For figuras = 1 To
If figuras = 1
personaImg
Else
personaImg
End If
For j = 1 To 20
Pgina 6 de 27
archivo = "..\"
archivo = archivo + personaImg + lstImg.GetItemText(j) + ".bmp"
myBitmap = Bitmap.FromFile(archivo)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
For x = 2 To resx - 3
For y = 2 To resy - 3
For i = 1 To 25
Select Case i
Case 1
xi = x
yi = y
Case 2
xi = x
yi = y
Case 3
xi = x
yi = y
Case 4
xi = x
yi = y
Case 5
xi = x
yi = y
Case 6
xi = x
yi = y
Case 7
xi = x
yi = y
Case 8
xi = x
yi = y
Case 9
xi = x
yi = y
Case 10
xi = x
yi = y
Case 11
xi = x
yi = y
Case 12
xi = x
yi = y
Case 13
xi = x
yi = y
Case 14
xi = x
yi = y
Case 15
xi = x
yi = y
Case 16
xi = x
yi = y
- 2
- 2
- 1
- 2
- 2
+ 1
- 2
+ 2
- 2
- 2
- 1
- 1
- 1
- 1
+ 1
- 1
+ 2
- 1
- 2
- 1
+ 1
+ 2
- 2
+ 1
Pgina 7 de 27
Case 17
xi =
yi =
Case 18
xi =
yi =
Case 19
xi =
yi =
Case 20
xi =
yi =
Case 21
xi =
yi =
Case 22
xi =
yi =
Case 23
xi =
yi =
Case 24
xi =
yi =
Case 25
xi =
yi =
End Select
x - 1
y + 1
x
y + 1
x + 1
y + 1
x + 2
y + 1
x - 2
y + 2
x - 1
y + 2
x
y + 2
x + 1
y + 2
x + 2
y + 2
Pgina 8 de 27
pixelColor = myBitmap.GetPixel(x, y)
alfas = pixelColor.A
azuls = pixelColor.B
verdes = pixelColor.G
rojos = pixelColor.R
If azuls > T And verdes > T And rojos > T Then
alfas = 255
azuls = 255
verdes = 255
rojos = 255
Else
alfas = 0
azuls = 0
verdes = 0
rojos = 0
End If
mybitmapf.SetPixel(x, y, Color.FromArgb(rojos, verdes,
azuls))
Next
Next
img.Clear(Color.DarkSalmon)
img.DrawImage(mybitmapf, puntoimg)
archivo = "..\"
archivo = archivo + "final" + personaImg + lstImg.GetItemText(j)
+ ".bmp"
mybitmapf.Save(archivo)
Next j
Next figuras
MsgBox("Proceso Termin!" & lstImg.Text)
End Sub
4. REDUCCION:
El siguiente cdigo, permite reducir la imagen seleccionada con el propsito de
trabajar con un menor nmero de bits.
Private Sub btnReducirImg_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnReducirImg.Click
Dim img As Graphics = Me.CreateGraphics
Dim figuras, j As Integer
Dim personavgatoImg, archivo As String
Dim mipunto As New Point(0, 0)
MsgBox("Procesando la Reduccin de las Imagenes!" & lstImg.Text)
For figuras = 1 To 2
If figuras = 1 Then
personavgatoImg = "persona"
Else
personavgatoImg = "gato"
End If
For j = 1 To 20
archivo = "..\"
archivo = archivo + "final" + personavgatoImg +
lstImg.GetItemText(j) + ".bmp"
Pgina 9 de 27
5. GENERAR ARCHIVO:
El siguiente cdigo, permite generar
posteriormente ser ingresado al
patrones.
Private Sub btnGeneraArch_Click(sender As Object, e As EventArgs) Handles
btnGeneraArch.Click
Dim img As Graphics = Me.CreateGraphics
Dim puntoimg As New Point(0, 0)
Dim myBitmap, mybitmapf As Bitmap
Dim pixelColor, pixelColor1 As Color
Dim alfa, azul, rojo, verde As Integer
Dim Galfa, Gazul, Grojo, Gverde As Integer
Dim imgcad As String
Dim T As Integer
Dim resx, resy, x, y, xi, yi As Integer
Dim archivo As String
Dim i As Integer
Dim personaImg As String
Dim gatoImg As String
Pgina 10 de 27
imgcad = ""
For y = 0 To resy - 1
For x = 0 To resx - 1
pixelColor = myBitmap.GetPixel(x, y)
alfa = pixelColor.A
azul = pixelColor.B
verde = pixelColor.G
rojo = pixelColor.R
If azul > T And verde > T And rojo > T Then
alfa = 255
azul = 255
verde = 255
rojo = 255
imgcad = imgcad + " 1"
Else
alfa = 0
azul = 0
verde = 0
rojo = 0
imgcad = imgcad + " 0"
End If
mybitmapf.SetPixel(x, y, Color.FromArgb(rojo, verde,
azul))
Next
Next
imgcad = imgcad + " 1"
sw.WriteLine(imgcad)
Next
gatoImg = ""
For i = 1 To 20
archivo = "..\"
archivo = archivo + "redugato" + gatoImg + lstImg.GetItemText(i)
+ ".bmp"
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
T = 122
imgcad = ""
For y = 0 To resy - 1
For x = 0 To resx - 1
pixelColor = myBitmap.GetPixel(x, y)
alfa = pixelColor.A
azul = pixelColor.B
verde = pixelColor.G
rojo = pixelColor.R
If azul > T And verde > T And rojo > T Then
Pgina 11 de 27
alfa = 255
azul = 255
verde = 255
rojo = 255
imgcad = imgcad + " 1"
Else
alfa = 0
azul = 0
verde = 0
rojo = 0
imgcad = imgcad + " 0"
End If
mybitmapf.SetPixel(x, y, Color.FromArgb(rojo, verde,
azul))
Next
Next
imgcad = imgcad + " 2"
sw.WriteLine(imgcad)
Next
personaImg = ""
For i = 1 To 20
archivo = "..\"
archivo = archivo + "redupersona" + personaImg +
lstImg.GetItemText(i) + ".bmp"
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
T = 127
imgcad = ""
For y = 0 To resy - 1
For x = 0 To resx - 1
pixelColor = myBitmap.GetPixel(x, y)
alfa = pixelColor.A
azul = pixelColor.B
verde = pixelColor.G
rojo = pixelColor.R
If azul > T And verde > T And rojo > T Then
alfa = 255
azul = 255
verde = 255
rojo = 255
imgcad = imgcad + " 1"
Else
alfa = 0
azul = 0
verde = 0
Pgina 12 de 27
rojo = 0
imgcad = imgcad + " 0"
End If
mybitmapf.SetPixel(x, y, Color.FromArgb(rojo, verde,
azul))
Next
Next
imgcad = imgcad + " 1"
sw.WriteLine(imgcad)
Next
gatoImg = ""
For i = 1 To 20
archivo = "..\"
archivo = archivo + "redugato" + gatoImg + lstImg.GetItemText(i)
+ ".bmp"
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
T = 122
imgcad = ""
For y = 0 To resy - 1
For x = 0 To resx - 1
pixelColor = myBitmap.GetPixel(x, y)
alfa = pixelColor.A
azul = pixelColor.B
verde = pixelColor.G
rojo = pixelColor.R
If azul > T And verde > T And rojo > T Then
alfa = 255
azul = 255
verde = 255
rojo = 255
imgcad = imgcad + " 1"
Else
alfa = 0
azul = 0
verde = 0
rojo = 0
imgcad = imgcad + " 0"
End If
mybitmapf.SetPixel(x, y, Color.FromArgb(rojo, verde,
azul))
Next
Next
imgcad = imgcad + " 2"
sw.WriteLine(imgcad)
Next
sw.Close()
End Using
Pgina 13 de 27
img.Clear(Color.DarkSlateGray)
MsgBox("Hecho!" & lblMensaje.Text)
img.DrawImage(mybitmapf, puntoimg)
End Sub
Pgina 14 de 27
azul = 0
verde = 0
rojo = 0
en(indice) = 0
End If
Next
Next
Call Fire_PATRONPG(en, sa)
Pgina 15 de 27
xi =
yi =
Case 3
xi =
yi =
Case 4
xi =
yi =
Case 5
xi =
yi =
Case 6
xi =
yi =
Case 7
xi =
yi =
Case 8
xi =
yi =
Case 9
xi =
yi =
Case 10
xi =
yi =
Case 11
xi =
yi =
Case 12
xi =
yi =
Case 13
xi =
yi =
Case 14
xi =
yi =
Case 15
xi =
yi =
Case 16
xi =
yi =
Case 17
xi =
yi =
Case 18
xi =
yi =
Case 19
xi =
yi =
Case 20
xi =
yi =
Case 21
xi =
yi =
Case 22
xi =
yi =
x - 1
y - 2
x
y - 2
x + 1
y - 2
x + 2
y - 2
x - 2
y - 1
x - 1
y - 1
x
y - 1
x + 1
y - 1
x + 2
y - 1
x - 2
y
x - 1
y
x
y
x + 1
y
x + 2
y
x - 2
y + 1
x - 1
y + 1
x
y + 1
x + 1
y + 1
x + 2
y + 1
x - 2
y + 2
x - 1
y + 2
Pgina 16 de 27
Case 23
xi =
yi =
Case 24
xi =
yi =
Case 25
xi =
yi =
End Select
x
y + 2
x + 1
y + 2
x + 2
y + 2
Pgina 17 de 27
Pgina 18 de 27
End If
Next
Next
Call Fire_PATRONPG(en, sa)
8. ENTRENAMIENTO
Este cdigo es exportado de los patrones de estudio resultantes del neuro Shell
.El cual es llamado al momento de realizar un reconocimiento, comparando los
patrones estudiados con el de la imagen a fin de saber si la imagen es de una
persona o un gato.
Pgina 19 de 27
5.2.
Una vez seleccionada la imagen se busca generar un patrn por lo cual primero se
realiza un suavizado y bordes de la imagen con el objetivo que resaltar los colores ms
intensos mientras que los ms opacos se pondrn de color blanco.
Pgina 20 de 27
Una vez obtenido el archivo con el suavizado y los bordes umbral, se reduce la imagen
y se guarda con un archivo nuevo.
Se repite el mismo proceso con las 20 imgenes que se tiene, una vez obtenida las
imgenes se tiende a llevar a 1 y 0 con el propsito de generar un archivo de
entrenamiento, posteriormente el cual ser importado en el neuro Shell.
Pgina 21 de 27
NEURO SHELL:
Pgina 22 de 27
Pgina 23 de 27
Una vez obtenido el mnimo y mximo adems de la desviacin estndar del archivo
de entrenamiento, se contina eligiendo un mtodo de extraccin de patrones.
Pgina 25 de 27
En la imagen se muestra a una persona, pero lo que buscamos es que el programa nos
diga si es una persona o un gato, es por ello que con ayuda de los patrones de
entrenamiento, podremos obtener una respuesta.
Pgina 26 de 27
VI. CONCLUSION :
La aplicacin realizada en el presente trabajo fue realizada con la finalidad de que pueda
reconocer patrones en representaciones digitales (imgenes), en este caso un gato y
una persona, ello a partir del entrenamiento de redes neuronales. El objetivo de este
entrenamiento era conseguir que la red reconociera de forma consistente patrones de
una imagen determinada que nosotros los humanos conocemos como, por ejemplo, el
fonema d o la imagen de un perro. Esto se parece mucho a la forma en que un nio
aprende qu es un perro mediante la observacin de los detalles de la forma de la
cabeza, el comportamiento y otras caractersticas en animales peludos y que ladran,
conocidos por las personas como perros.
La red es sensible a los conceptos de alto nivel como las caras de gato y el cuerpo
humano. A partir de estas caractersticas adquiridas, se realiz dicho entrenamiento
utilizando diferentes posiciones o perfiles de las imgenes presentadas (gato, persona),
llegndose a obtener una total precisin en el reconocimiento de lo que se requera.
Sin embargo, al momento de la realizacin del trabajo se presentaron ciertas
deficiencias, que generaron ciertas lecciones, como por ejemplo, el tiempo de
reconocimiento del objeto indicado dentro de la imagen es menor cuando esta se
encuentra reducida, en cambio cuando se encuentra en su tamao normal el tiempo de
respuesta es mayor (en pocos segundos); aparte, el reconocimiento del objeto es mejor
cuando el fondo de la imagen sea de un color claro y el objeto a reconocer posea mayor
intensidad de color. Pues de dicho modo, algunas de las redes neuronales artificiales
de hoy da pueden ser entrenadas para reconocer patrones mucho ms complejos.
Pgina 27 de 27