Você está na página 1de 28

[Ao]

VISIN ARTIFICIAL Y
REDES NEURONALES
RECONOCIMIENTO DE
UNA PERSONA/GATO

TPICOS DE INTELIGENCIA ARTIFICIAL


INTEGRANTES:
CHAHUAYO HUAMAN JIM PAUL
GUILLERMO INGA ANDREA YOSSY
LIMAYMANTA HINOSTROZA DANIEL
ROCA ADAUTO ANGELA DAYANA

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.

Pero ningn reto ms motivador, encantador y exigente, como el de sustituir el ojo


humano por una maquina computacional, o por lo menos dotar del sentido de la visin
(el ms complejo) a dicha mquina.

La visin artificial es una rama de la inteligencia artificial y sta de la robtica. La idea


de la visin artificial es tener un sistema computarizado que simule el sistema visual
humano para entender imgenes; ello con ayuda de las redes neuronales, las cuales
son entrenadas para diferentes tareas, tales como:

Segmentacin e interpretacin de una imagen.

Reconocimiento de objetos incluyendo los reconocimientos faciales.

Tracking de objetos.

Generacin de panormicas (stitching).

Se utiliza cada vez ms en la industria y robtica y ha avanzado en los ltimos aos


pero sigue siendo una tecnologa que est en continuo crecimiento y a medida que pase
el tiempo cobrar ms importancia.

El presente trabajo desarrolla un modelo de reconocimiento de objetos (una persona y


un gato) basado en la forma de los mismos; se aplicarn las tcnicas de procesamiento
de seales actuales para reconocer objetos en una imagen, se explicara el cdigo y los
programas utilizados para el logro de tal objetivo y las figuras de toda la realizacin del
trabajo.

Pgina 1 de 27

I. VISIN ARTIFICIAL PARA EL RECONOCIMIENTO DE OBJETOS.:


Toda aplicacin mediante visin artificial requiere una serie de procesos. Los cuales
son:

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.

Extraccin de las caractersticas


Una vez segmentado el objeto o regin y/o realzado los bordes, el siguiente paso
es extraer las caractersticas que describen al objeto o regin. Estas
caractersticas se pueden basar en el rea, orientacin, permetro, etc. Se deben
poder detectar en otras imgenes si aparece el mismo objeto o regin pero con
cambios en la escala (ms cerca o alejado de la cmara por ejemplo), rotacin
e iluminacin. Se trata de obtener una definicin de una imagen que sirva para
diferenciarla del resto. El uso de estas caractersticas depender en el siguiente
proceso.

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

seal de lmite de velocidad el sistema enviara un aviso al conductor si est


sobrepasando la velocidad (o bloquear el lmite de velocidad).

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

El proceso debe comenzar en la adquisicin de la imagen de muestra donde est el


objeto a buscar. Esta imagen debe ser preprocesada y despus segmentada para
detectar el objeto. Hasta aqu se formara la caracterizacin del objeto. Dicha
caracterizacin se debe hacer tambin con todas las imgenes que entran despus para
ser comparadas.
A continuacin se aplicara el proceso de reconocimiento donde compararemos esas
caractersticas con los objetos localizados en otras imgenes. El proceso de
reconocimiento debe ser lo ms fiable y optimizado posible para reducir tiempo de
clculo.
II. REDES NEURONALES :
La definicin ms general considera una RNA como una estructura formada por muchos
procesadores simples llamados nodos o neuronas, conectados por medio de canales
de comunicacin o conexiones. Cada una de ellas tiene una cantidad de memoria local,
operando solamente con sus datos locales y sobre las entradas que recibe a travs de
esas conexiones.
Las RNAs llevan asociadas algn tipo de regla de aprendizaje o entrenamiento particular
por la cual esas conexiones son ajustadas acorde a los ejemplos proporcionados. En
otras palabras, las RNAs aprenden a partir de ejemplos, y muestran alguna capacidad
para generalizar ms all de esos datos mostrados.
De manera general las redes neuronales presentan tres principales caractersticas:
aprendizaje, generalizacin, adaptabilidad.
Pgina 3 de 27

La caracterstica de aprendizaje se refiere a que al igual que el cerebro humano, una


red neuronal tiene la capacidad de almacenar conocimiento mediante un proceso de
aprendizaje (entrenamiento). Este conocimiento es almacenado por los pesos de las
conexiones entre los neurones que conforman a la red neuronal.
Por otra parte, la capacidad de generalizacin significa que se pueden obtener salidas
razonables cuando se usan entradas diferentes a las utilizadas durante el proceso de
entrenamiento.
Por ltimo, la caracterstica de adaptabilidad significa que una red neuronal puede ser
reentrenada para funcionar adecuadamente ante cambios en su medio ambiente.

III. PLANTEAMIENTO DEL PROBLEMA :


La reproduccin artificial del sentido de la vista, es un campo en el cual el hombre
encuentra solucin a muchos de sus problemas que involucra reconocimiento
automtico para deteccin de objetos, clasificadores de calidad o simplemente
reconocimiento de patrones. El objetivo de un sistema de inspeccin por visin artificial
suele ser comprobar la conformidad de una pieza con ciertos requisitos.

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

El problema de reconocer la forma de un objeto para su debida clasificacin, por medio


de un computador, se puede solucionar, o por lo menos as se intent solucionar en el
presente trabajo, mediante algoritmos de visin artificial con redes neuronales.
IV. OBJETIVO:
El presente proyecto tiene como objetivo reconocer una persona o un gato dentro de
una fotografa. Es necesario entrenar a las redes neuronales para que puedan reconocer
formas de objetos y poder clasificarlos correctamente.
V. APLICACIN:
La aplicacin ofrece una interfaz grfica para que se pueda seleccionar el tipo de
entrada del objeto a buscar y desde dnde se efectuar la lectura correspondiente.

Cada recuadro de imagen aparece en una pantalla encuadrada y dimensionada para un


correcto seguimiento.
Adems, se genera un fichero plano (Informe.txt) en el mismo directorio que se est
ejecutando el archivo binario de la aplicacin, donde contiene toda la informacin de las
imgenes. La implementacin ha sido realizada con ayuda de los programas .net y
neuroshell. Se han diseado los experimentos y se muestran los resultados del correcto
reconocimiento de un gato y una persona dentro de la imagen.

5.1.

ESTRUCTURA DEL CODIGO

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

la Peticin!" & lstImg.Text)


2
Then
= "persona"
= "gato"

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

pixelColor = myBitmap.GetPixel(xi, yi)


alfa(i) = pixelColor.A
azul(i) = pixelColor.B
verde(i) = pixelColor.G
rojo(i) = pixelColor.R
Next i
Array.Sort(alfa)
Array.Sort(azul)
Array.Sort(rojo)
Array.Sort(verde)
mybitmapf.SetPixel(x, y, pixelColor1.FromArgb(alfa(13),
rojo(13), verde(13), azul(13)))
Next
Next
img.Clear(Color.Cyan)
img.DrawImage(mybitmapf, puntoimg)
archivo = "..\"
archivo = archivo + "temp" + personaImg + lstImg.GetItemText(j) +
".bmp"
mybitmapf.Save(archivo)
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
T = 122
For x = 0 To resx - 1
For y = 0 To resy - 1

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

Dim imagen As New Bitmap(New Bitmap(archivo), 18, 12)


archivo = "..\"
archivo = archivo + "redu" + personavgatoImg +
lstImg.GetItemText(j) + ".bmp"
imagen.Save(archivo)
img.Clear(Color.DarkMagenta)
img.DrawImage(imagen, mipunto)
Next j
Next figuras
MsgBox("Termin el Proceso!" & lstImg.Text)
End Sub

5. GENERAR ARCHIVO:
El siguiente cdigo, permite generar
posteriormente ser ingresado al

el archivo de entrenamiento, el cual

neuro Shell para generar el cdigo de

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

Using sw As StreamWriter = New StreamWriter("imgPG.txt")


imgcad = ""
For i = 1 To 18 * 12
imgcad = imgcad + "x" + Trim(Str(i)) + " "
Next
imgcad = imgcad + "salida"
sw.WriteLine(imgcad)
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 = 122

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

6. RECONOCER IMAGEN REDUCIDA


El siguiente cdigo, permite reconocer el archivo de imagen reducida

analizando con el patrn y reconociendo si la imagen es de una persona o un


gato o algn otro objeto.
Private Sub btnReconocerImgReduc_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnReconocerImgReduc.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 cad As String
Dim T As Integer
Dim resx, resy, x, y, xi, yi As Integer
Dim archivo As String
Dim i As Integer
archivo = "..\"
archivo = archivo + lstImg.SelectedItem
myBitmap = Bitmap.FromFile(archivo)
img.DrawImage(myBitmap, puntoimg)
resy = myBitmap.Height
resx = myBitmap.Width
Dim en(resy * resx) As Double
Dim sa(1) As Double
Dim indice As Integer
T = 122
cad = ""
indice = 0
For y = 0 To resy - 1
For x = 0 To resx - 1
indice = indice + 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
en(indice) = 1
Else
alfa = 0

Pgina 14 de 27

azul = 0
verde = 0
rojo = 0
en(indice) = 0
End If
Next
Next
Call Fire_PATRONPG(en, sa)

If sa(1) > 0.9 And sa(1) < 1.1 Then


txtQueEs.Text = "Es una Persona!"
Else
If sa(1) > 1.9 And sa(1) < 2.1 Then
txtQueEs.Text = "Es un Gato!"
Else
txtQueEs.Text = "No se identifica"
End If
End If
End Sub

7. RECONOCER IMAGEN SIN REDUCIR


Este cdigo, permite reconocer un archivo de imagen e identificar al sujeto u
objeto en l, con ayuda del patrn entrenado en el neuro Shell.
Private Sub btnReconocerImgSinRed_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnReconocerImgSinRed.Click
Dim g As Graphics = Me.CreateGraphics
Dim puntoimg As New Point(0, 0)
Dim myBitmap, mybitmapf As Bitmap
Dim pixelColor 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 personacad As String
Dim i, j As Integer
Dim T As Integer
archivo = "..\"
archivo = archivo + lstImg.SelectedItem
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, puntoimg)
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 - 2
yi = y - 2
Case 2

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

pixelColor = myBitmap.GetPixel(xi, yi)


alfa(i) = pixelColor.A
azul(i) = pixelColor.B
verde(i) = pixelColor.G
rojo(i) = pixelColor.R
Next i
Array.Sort(alfa)
Array.Sort(azul)
Array.Sort(rojo)
Array.Sort(verde)
mybitmapf.SetPixel(x, y, Color.FromArgb(alfa(13), rojo(13),
verde(13), azul(13)))
Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, puntoimg)
archivo = "temp" + lstImg.SelectedItem
mybitmapf.Save(archivo)
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, puntoimg)
mybitmapf = myBitmap
resy = myBitmap.Height
resx = myBitmap.Width
T = 122
For x = 0 To resx - 1
For y = 0 To resy - 1
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

Pgina 17 de 27

mybitmapf.SetPixel(x, y, Color.FromArgb(rojos, verdes, azuls))


Next
Next
g.Clear(Color.Cyan)
g.DrawImage(mybitmapf, puntoimg)
archivo = "final" + lstImg.SelectedItem
mybitmapf.Save(archivo)
archivo = "final" + lstImg.SelectedItem
Dim imagen As New Bitmap(New Bitmap(archivo), 18, 12)
archivo = "redu" + lstImg.SelectedItem
imagen.Save(archivo)
g.Clear(Color.Gray)
g.DrawImage(imagen, puntoimg)
Dim cad As String
archivo = "redu" + lstImg.SelectedItem
myBitmap = Bitmap.FromFile(archivo)
g.DrawImage(myBitmap, puntoimg)
resy = myBitmap.Height
resx = myBitmap.Width
Dim en(resy * resx) As Double
Dim sa(1) As Double
Dim indice As Integer
T = 122
cad = ""
indice = 0
For y = 0 To resy - 1
For x = 0 To resx - 1
indice = indice + 1
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
en(indice) = 1
Else
alfas = 0
azuls = 0
verdes = 0
rojos = 0
en(indice) = 0

Pgina 18 de 27

End If
Next
Next
Call Fire_PATRONPG(en, sa)

If sa(1) > 0.9 And sa(1) < 1.1 Then


txtQueEs.Text = "Es una Persona!"
Else
If sa(1) > 1.9 And sa(1) < 2.1 Then
txtQueEs.Text = "Es un Gato!"
Else
txtQueEs.Text = "No se identifica"
End If
End If
End Sub

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.

INTERFAZ DEL APLICATIVO:

El primer botn es para mostrar la imagen seleccionada del listado mostrado

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

Una vez obtenido el archivo de entrenamiento imgPG.txt , se procede a importar y


generar nuestros patrones de estudio con ayuda del neuro Shell.

NEURO SHELL:

Este aplicativo , permite generar un cdigo


de entrenamiento el cual ser exportado al
final .

Primeramente se procede a importar el patrn obtenido, por eso se accede a


beginners system

Pgina 22 de 27

Donde se procede a configurar los


parmetros e importar el archivo.

Se ingresa a la tabla de ingreso/ salidas


y se asigna un valor de input a las 216
celdas y output a la celda final.

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.

Una vez realizado la prueba establecida de extraccin, se proceder a realizar el


entrenamiento de los patrones extrados.

Una vez terminado el entrenamiento y


la comprobacin de la red de procesamiento de patrones, se proceder a generar el
Pgina 24 de 27

cdigo de entrenamiento en V.B. el cual ser incluido para realizar el reconocimiento


de imgenes.

Generado el cdigo, se proceder al reconocimiento de las imgenes.

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.

Otro caso sera la imagen de un gato

Con ayuda del mismo proceso la respuesta ser:

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

Você também pode gostar