lunes, 25 de mayo de 2009

CODIGO BACKPROPAGATION



package redesneuronales;
//import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//import java.lang.String;
//import javax.vecmath.Matrix3d;

public class Backpropagation {

public int k=0;

//Numero de neuronas a la entrada y la saldida de la red
int numEntradas, numSalidas;

// Numero de capas en la red
int numCapas;

// Numero de neuronas por capa
int numNeuronas_Capas [];
Matriz coefCompen [];

Matriz mPesos [];

Matriz outCapa[] = new Matriz [numCapas+1];
Matriz delta_propa[] = new Matriz[numCapas+1];
JRadioButton jRadioButton1 = new JRadioButton();
JButton jButton1 = new JButton();

public Backpropagation(){
String aux = JOptionPane.showInputDialog(null,
"Ingrese el numero de elementos de entrada",
"",JOptionPane.DEFAULT_OPTION);


numEntradas = Integer.parseInt(aux);
aux = JOptionPane.showInputDialog(null,
"Ingrese el numero de capas de la red",
"",JOptionPane.DEFAULT_OPTION);

numCapas = Integer.parseInt(aux);

aux = JOptionPane.showInputDialog(null,
"Ingrese el numero de elementos a la salida",
"",JOptionPane.DEFAULT_OPTION);

numSalidas = Integer.parseInt(aux);


// Llena el vector con el nuemro de neuronas por capa
numNeuronas_Capas = new int[numCapas];
for (int i = 0 ; i < numCapas; i++){
aux = JOptionPane.showInputDialog(null,
"ingrese el nuemro de neuronas para la capa " + (i+1)
,"",
JOptionPane.DEFAULT_OPTION);
numNeuronas_Capas[i] = Integer.parseInt(aux);
}


// Matriz de coeficientes de activacion
coefCompen = new Matriz [numCapas+1];
for (int i= 0; i < numCapas; i++)
coefCompen[i] = new Matriz(numNeuronas_Capas[i],1,-1,1);
coefCompen[numCapas] = new Matriz(numSalidas,1,-1,1);

// Matriz de pesos aleatorios
mPesos = new Matriz [numCapas+1];
for (int i = 0; i < numCapas; i++){
if (i == 0)
mPesos[i] = new Matriz (numNeuronas_Capas[i],numEntradas,-3,3);
else
mPesos[i] = new Matriz(numNeuronas_Capas[i],numNeuronas_Capas[i-1],-3,3);
}
mPesos[numCapas] = new Matriz ( numSalidas, numNeuronas_Capas[numCapas-1],-3,3);

}

// Propagacion directa
public Matriz [] propagacionDirecta(Matriz entrada){
Matriz salidaCapa[] = new Matriz [numCapas+1];

int i;
salidaCapa[0] = ((mPesos[0].multiplica(entrada)).suma(coefCompen[0])).logsigActivacion();
for (i = 1 ; i <= numCapas; i++){
salidaCapa[i] = ((mPesos[i].multiplica(salidaCapa[i-1])).suma(coefCompen[i])).logsigActivacion();
}
outCapa = salidaCapa;

return salidaCapa;
}

public Matriz calculoError(Matriz entrada, Matriz salida_real){
Matriz error2 = new Matriz();
Matriz error = new Matriz();
error = salida_real.resta(propagacionDirecta(entrada)[numCapas]);
error2 = (error.trans()).multiplica(error);

return error;
}

public Matriz [] propagacionInversa(Matriz errorSalida){
Matriz m[] = new Matriz[numCapas+1];
Matriz delta [] = new Matriz [numCapas+1];
Matriz ones = new Matriz(errorSalida.numFilas,errorSalida.numCols,"ones");
Matriz net_inv = new Matriz();

for (int i = 0; i <= numCapas; i++){
m[i] = mPesos[i].trans();
}

delta[numCapas] = errorSalida.multComponente(
(outCapa[numCapas]).multComponente((ones.resta(outCapa[numCapas]))));
net_inv = m[numCapas].multiplica(delta[numCapas]);
for (int i = numCapas-1; i >= 0 ; i--){
ones = new Matriz(net_inv.numFilas,net_inv.numCols,"ones");
delta[i] = net_inv.multComponente(
(outCapa[i]).multComponente((ones.resta(outCapa[i]))));
net_inv = m[i].multiplica(delta[i]);
}
delta_propa = delta;

return delta;
}

/**
* Actualiza los pesos luego que el se ha propagado el error
*
* @param entrada Matriz la entrada
* @param rata double la rata de aprendizaje
* @return Matriz[] regresa las matrices de vada capa ya actualizados
*/
public Matriz [] actuliazacionPesos(Matriz entrada,double rata){
Matriz temp[] = new Matriz [numCapas+1];
Matriz t[] = new Matriz [numCapas+1];

rata = 2*rata;
temp[0] = mPesos[0].suma(
(delta_propa[0].productoEscalarMatriz(rata)).multiplica(entrada.trans()));
t[0] = coefCompen[0].suma(delta_propa[0].productoEscalarMatriz(rata));

for (int i = 1 ; i <= numCapas; i++){
temp[i] = mPesos[i].suma(
(delta_propa[i].productoEscalarMatriz(rata)).multiplica((outCapa[i-1].trans())));
t[i] = coefCompen[i].suma(delta_propa[i].productoEscalarMatriz(rata));
}
mPesos = temp;
coefCompen = t;
return temp;
}

/**
* Simula la red neuronal dependiendo de la entrada presentada a la red
*
* @param patronesEntrada Matriz el patron de entrada
* @param aux String
* @return Matriz[]
*/
public Matriz [] simulacion(Matriz patronesEntrada,String aux){
Matriz p [] = new Matriz [patronesEntrada.numCols];
Matriz t[] = new Matriz [patronesEntrada.numCols];
Matriz salidaCapa[] = new Matriz [numCapas+1];

for (int j = 0; j < patronesEntrada.numCols;j++){
p[j] = new Matriz(patronesEntrada.numFilas,1);
for (int i = 0; i < patronesEntrada.numFilas;i++)
p[j].matrizDbl[i][0] = patronesEntrada.matrizDbl[i][0];
salidaCapa = propagacionDirecta(p[j]);
t[j] = salidaCapa[numCapas];
}
for (int j = 0; j < patronesEntrada.numCols; j++){
System.out.print("entradas\n"+p[j].toString());
System.out.print("salidas\n"+t[j].toString());
}
return t;
}

/**
* devuelva la salida real de la red neuronal cuando de le presenta el
* patron p
* @param p Matriz patron de entrada
* @return Matriz patron de salida a
*/
public Matriz simulacion(Matriz p){
Matriz salida = new Matriz (numSalidas,1);
salida = propagacionDirecta(p)[numCapas];

return salida;
}



public void entrenamientoOnLine(Matriz [] patronEntrada,Matriz [] salida){

Matriz e = new Matriz();
Matriz error2 = new Matriz(1,1);

double errorDouble = 0;

for (int i = 0; i < patronEntrada.length; i++){
e = salida[i].resta(simulacion(patronEntrada[i]));
error2 = (e.trans()).multiplica(e);
errorDouble = error2.matrizDbl[0][0];

while (Math.sqrt(errorDouble) > 0.001){
//System.out.println(i);
this.propagacionInversa(e);
this.actuliazacionPesos(patronEntrada[i],0.1);
k += 1;
//System.out.println(error2.toString());
e = salida[i].resta(simulacion(patronEntrada[i]));
error2 = (e.trans()).multiplica(e);
errorDouble = error2.matrizDbl[0][0];
i = 0;
//System.out.println(this.mPesos[0].toString());
}
}
//System.out.print("prueba\n"+simulacion(patronEntrada).toString());
}

public void entrenamientoOffLine(Matriz [] P, Matriz [] T){
Matriz e = new Matriz(P[0].numFilas,1), E;
Matriz error2 = new Matriz(1,1);
double errorDouble = 100;

while (Math.sqrt(errorDouble) > 0.1)
//for (int k = 0; k < 100 ; k++)
{
for (int i = 0; i < P.length; i++){
e = (T[i].resta(simulacion(P[i]))).suma(e);
}
System.out.println(e.toString());
E = e.productoEscalarMatriz(1.0 / (double) P.length);
error2 = (E.trans()).multiplica(E);
errorDouble = error2.matrizDbl[0][0];
System.out.print(errorDouble + "\n");
this.propagacionInversa(E);
for (int i = 0; i < P.length; i++)
this.actuliazacionPesos(P[i],0.1);
k += 1;
}



}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"cuerpo","titulo",JOptionPane.DEFAULT_OPTION);
}
}

********************************************************************
**********RECONOCIMIENTO DE MONEDAS*********************************
********************************************************************


Module calculos
Dim resp(256) As Integer
Sub bitmap_to_matriz(ByRef matr(,) As Integer, ByRef mibitmap As Bitmap)
Dim i, j, nf, nc As Integer
Dim micolor As Color
nc = UBound(matr, 2) 'UBound: debuelve el maximo valor permitido de un arreglo
nf = UBound(matr, 1)

For i = 0 To nf
For j = 0 To nc
micolor = mibitmap.GetPixel(j, i) 'getpixel: metodo de mapa de bits y obtiene el color
matr(i, j) = micolor.R
Next
Next
End Sub

Sub matriz_to_bitmap(ByRef matr(,) As Integer, ByRef mibitmap As Bitmap)
Dim i, j, nf, nc, valor As Integer
Dim micolor As Color
nc = UBound(matr, 2) 'UBound: debuelve el maximo valor permitido de un arreglo
nf = UBound(matr, 1)

For i = 0 To nf
For j = 0 To nc
valor = matr(i, j)
micolor = Color.FromArgb(255, valor, valor, valor)
mibitmap.SetPixel(j, i, micolor)
Next
Next
End Sub

Sub normalizar255(ByRef reales(,) As Double, ByRef matriz(,) As Integer)
Dim vmin As Double
Dim vmax As Double
Dim i, j, nc, nf As Integer
vmin = minval(reales)
vmax = maxval(reales)
nc = UBound(reales, 2)
nf = UBound(reales, 1)
'vmin = reales(0, 0)
For i = 0 To nf
For j = 0 To nc
matriz(i, j) = (reales(i, j) - vmin) * 255 / (vmax - vmin)
If (matriz(i, j) < 0) Then matriz(i, j) = 0
If (matriz(i, j) > 255) Then matriz(i, j) = 255
Next
Next
End Sub

Sub normalizar255_E(ByRef reales(,) As Integer, ByRef matriz(,) As Integer)
Dim vmin As Double
Dim vmax As Double
Dim i, j, nc, nf, cont As Integer
vmin = minval(reales)
vmax = maxval(reales)
nc = UBound(reales, 2)
nf = UBound(reales, 1)
cont = 1
For i = 0 To nf
For j = 0 To nc
matriz(i, j) = (reales(i, j) - vmin) * 255 / (vmax - vmin)
If (matriz(i, j) < 0) Then matriz(i, j) = 0
If (matriz(i, j) > 255) Then matriz(i, j) = cont
Next
cont += 1
Next
End Sub

Function minval(ByRef reales(,) As Integer) As Integer
Dim i, j, nc, nf As Integer
Dim vmin As Double
nc = UBound(reales, 2)
nf = UBound(reales, 1)
vmin = reales(0, 0)
For i = 0 To nf
For j = 0 To nc 'indice de columnas
If (vmin > reales(i, j)) Then vmin = reales(i, j)
Next
Next
Return vmin
End Function

Function maxval(ByRef reales(,) As Integer) As Integer
Dim i, j, nc, nf As Integer
Dim vmax As Double
nc = UBound(reales, 2)
nf = UBound(reales, 1)
vmax = reales(0, 0)
For i = 0 To nf
For j = 0 To nc 'indice de columnas
If (vmax < reales(i, j)) Then vmax = reales(i, j)
Next
Next
Return vmax
End Function

Function minval(ByRef reales(,) As Double) As Double
Dim i, j, nc, nf As Integer
Dim vmin As Double
nc = UBound(reales, 2)
nf = UBound(reales, 1)
vmin = reales(0, 0)
For i = 0 To nf
For j = 0 To nc 'indice de columnas
If (vmin > reales(i, j)) Then vmin = reales(i, j)
Next
Next
Return vmin
End Function
Function maxval(ByRef reales(,) As Double) As Double
Dim i, j, nc, nf As Integer
Dim vmax As Double
nc = UBound(reales, 2)
nf = UBound(reales, 1)
vmax = reales(0, 0)
For i = 0 To nf
For j = 0 To nc 'indice de columnas
If (vmax < reales(i, j)) Then vmax = reales(i, j)
Next
Next
Return vmax
End Function

Sub color_gris(ByRef imagen1 As Bitmap, ByRef imagen2 As Bitmap)
Dim i, j As Integer
Dim color1, color2 As Color
Dim grisd As Double
Dim gris As Integer
Dim r, g, b As Integer
Dim mr(imagen1.Height - 1, imagen1.Width - 1) As Integer
' bitmap_to_matriz(mr, imagen1)
For i = 0 To imagen1.Height - 1
For j = 0 To imagen1.Width - 1
color1 = imagen1.GetPixel(j, i)
r = color1.R
g = color1.G
b = color1.B
grisd = 0.299 * r + 0.587 * g + 0.114 * b
gris = Math.Round(grisd)
If (gris > 255) Then gris = 255
color2 = Color.FromArgb(255, gris, gris, gris)
imagen2.SetPixel(j, i, color2)
Next
Next
End Sub

Sub histograma1(ByRef mibitmap As Bitmap, ByRef arreglo() As Long)
Dim i, j, valor As Integer
Dim micolor As Color
'nc = UBound(matr, 2) --> y en el bitmap(alto de pixeles)
'nf = UBound(matr, 1) --> x en el bitmap(ancho de pixeles)

'j --> columnas : i --> filas
For i = 0 To mibitmap.Height - 1
For j = 0 To mibitmap.Width - 1
micolor = mibitmap.GetPixel(j, i) 'getpixel: metodo de mapa de bits y obtiene el color
'si es pa los 3 colores hay q poner los 3 componentes
valor = micolor.R
arreglo(valor) += 1

Next
Next
For i = 0 To 255
If arreglo(i) <> 0 Then
'MessageBox.Show(arreglo(i), i, MessageBoxButtons.OK)
End If

Next
End Sub

Sub ordenar(ByRef vec() As Integer, ByRef mediana As Integer)
Dim i, j, n, aux As Integer
n = UBound(vec, 1)

For i = 0 To n - 1
For j = 0 To n - 1
If (vec(j) > vec(j + 1)) Then
aux = vec(j)
vec(j) = vec(j + 1)
vec(j + 1) = aux
End If
Next
Next
mediana = vec(Math.Abs(n / 2))
End Sub

Sub filtro_mediana(ByRef imagen As Bitmap, ByRef tamano As Integer)
Dim nx, ny, i, j, i1, j1, i3, j3, nFiltro, vPixel, mediana As Integer
nx = imagen.Width - 1 : ny = imagen.Height - 1
Dim matrizInic(ny, nx) As Integer, matrizfinal(ny, nx) As Double
bitmap_to_matriz(matrizInic, imagen)
nFiltro = tamano - 1
Dim vec(tamano * tamano - 1), cont As Integer
cont = 0
For i = 0 To ny
For j = 0 To nx
cont = 0
For i1 = i - (nFiltro / 2) To i + (nFiltro / 2)
For j1 = j - (nFiltro / 2) To j + (nFiltro / 2)
i3 = i1 : j3 = j1
If i3 < 0 Then i3 = i1 * (-1)
If j3 < 0 Then j3 = j1 * (-1)
If i3 > ny Then i3 = ny - (i1 - ny)
If j3 > nx Then j3 = nx - (j1 - nx)
vPixel = matrizInic(i3, j3)
vec(cont) = vPixel
cont = cont + 1
Next
Next
ordenar(vec, mediana)
matrizfinal(i, j) = mediana
Next
Next
'MessageBox.Show(mediana)
normalizar255(matrizfinal, matrizInic)
matriz_to_bitmap(matrizInic, imagen)
End Sub

Function Umbral(ByRef mibitmap As Bitmap)
Dim i, j, valor, valumbral As Integer
Dim micolor As Color
Dim arreglo(256) As Long
For i = 0 To mibitmap.Height - 1
For j = 0 To mibitmap.Width - 1
micolor = mibitmap.GetPixel(j, i)
valor = micolor.R
arreglo(valor) += 1
Next
Next
valumbral = 0
For i = 0 To 255
If arreglo(i) >= valumbral Then
valumbral = arreglo(i)
Else
valumbral = valumbral
End If
Next
Return valumbral
End Function

Sub binarizar(ByRef imagen1 As Bitmap)
Dim i, j, nc, nf, arreglo(256) As Integer
Dim IO(imagen1.Height - 1, imagen1.Width - 1) As Integer
Dim IB(imagen1.Height - 1, imagen1.Width - 1) As Integer

nc = imagen1.Width - 1 : nf = imagen1.Height - 1
' MessageBox.Show(cont)
bitmap_to_matriz(IO, imagen1)
For i = 1 To nf
For j = 1 To nc
If IO(i, j) >= 50 Then
IB(i, j) = 255
Else
IB(i, j) = 0
End If
Next j
Next i
matriz_to_bitmap(IB, imagen1)
End Sub
Sub etiquetado(ByRef imagen1 As Bitmap)
Dim i, j, etiq, nc, nf As Integer
Dim IO(imagen1.Height - 1, imagen1.Width - 1) As Integer

etiq = 50 'And IO(j + 1, i - 1) = 0 & _And IO(j + 1, i) = 0
nc = imagen1.Width - 1 : nf = imagen1.Height - 1
bitmap_to_matriz(IO, imagen1)
For i = 0 To nf - 1
For j = 0 To nc - 1
If IO(i, j) <> 0 Then
If IO(i, j - 1) = 0 And IO(i - 1, j) = 0 Then
etiq = etiq + 1
IO(i, j) = etiq
'MessageBox.Show(etiq)
Else
If IO(i + 1, j) <> 0 Then
IO(i + 1, j) = IO(i, j)
End If
End If
End If
Next
Next
End Sub

Sub etiquetado_4p(ByRef imagen As Bitmap)

Dim i, j, i1, j1, nf, nc, iequiv, etiq, pizq, psup As Integer
Dim matriz(imagen.Height - 1, imagen.Width - 1) As Integer
Dim matriz1(imagen.Height - 1, imagen.Width - 1) As Integer
Dim existe As Boolean
bitmap_to_matriz(matriz, imagen)
nf = UBound(matriz, 1)
nc = UBound(matriz, 2)
Dim tequiv(nf, 2)
etiq = 1
iequiv = 0
For i = 0 To nf
For j = 0 To nc
If matriz(i, j) <> 0 Then
If i - 1 < 0 Then
psup = 0
Else
psup = matriz(i - 1, j)
End If
If j - 1 < 0 Then
pizq = 0
Else
pizq = matriz(i, j - 1)
End If
If pizq = 0 And psup = 0 Then
etiq = etiq + 1
matriz(i, j) = etiq
End If
If pizq <> 0 And psup <> 0 Then
matriz(i, j) = pizq
If pizq <> psup Then
'agrega a tabla de equivalencia
existe = False
If iequiv > 0 Then
'verifica que psup y pizq no esten en tabla
For i1 = 0 To iequiv - 1
If tequiv(i1, 0) = psup And tequiv(i1, 1) = pizq Then
existe = True
End If
Next
End If
If existe = False Then
tequiv(iequiv, 0) = psup
tequiv(iequiv, 1) = pizq
tequiv(iequiv, 2) = 0
iequiv = iequiv + 1
End If
End If
End If
If pizq <> 0 And psup = 0 Or _
pizq = 0 And psup <> 0 Then
matriz(i, j) = pizq + psup
End If
End If
Next
Next
Debug.Write("numero de etiquetas=" & etiq & vbCrLf)
Debug.Write("antes de proceso de equiv" & vbCrLf)
'For i = 0 To iequiv - 1
' Debug.Write(i & " " & tequiv(i, 0) & " " & tequiv(i, 1) & " " & tequiv(i, 2) & vbCrLf)
'Next

'proceso de tabla de equivalencias
Dim vr, vb As Integer
' transformacion de tequiv
' se asegura que tequiv(i,0) For i = 0 To iequiv - 1
If tequiv(i, 0) > tequiv(i, 1) Then
vr = tequiv(i, 0) : tequiv(i, 0) = tequiv(i, 1) : tequiv(i, 1) = vr
End If
Next

For i = 0 To iequiv - 1
If tequiv(i, 2) = 0 Then
tequiv(i, 2) = tequiv(i, 0)
End If
vr = tequiv(i, 0)
vb = tequiv(i, 1)
For j = 0 To iequiv - 1
If tequiv(j, 2) = 0 Then
If tequiv(j, 0) = vr Or tequiv(j, 1) = vr _
Or tequiv(j, 0) = vb Or tequiv(j, 1) = vb Then
tequiv(j, 2) = tequiv(i, 2)
vr = tequiv(j, 0)
vb = tequiv(j, 1)
j = 0
End If
End If
Next j

Debug.Write("- " & i)
Next

Debug.Write("luego proceso de equivalencias" & vbCrLf)
For i = 0 To iequiv - 1
Debug.Write(i & " " & tequiv(i, 0) & " " & tequiv(i, 1) & " " & tequiv(i, 2) & vbCrLf)
Next
'genera tabla de reemplazos
Dim tr(etiq)
For j = 0 To etiq
tr(j) = j
Next
For j = 0 To iequiv - 1
For j1 = 0 To 1
tr(tequiv(j, j1)) = tequiv(j, 2)
Next
Next
'REEMPLAZO
For i = 0 To nf
For j = 0 To nc
matriz(i, j) = tr(matriz(i, j))
Next j
Next i
Debug.Write("matriz final" & vbCrLf)
For i = 0 To nf
For j = 0 To nc
If matriz(i, j) <> 0 Then
Debug.Write(i & " ; " & j & " valor " & matriz(i, j) & vbCrLf)
End If
Next
Next

MessageBox.Show("****Fin Reconocimiento****")
normalizar255_E(matriz, matriz1)
matriz_to_bitmap(matriz1, imagen)

End Sub

Function etiqueta(ByRef matriz(,) As Integer, ByRef nf As Integer, ByRef nc As Integer) As Integer

Dim i, j, cont, k As Integer
Dim arr(256), temp(256) As Integer
cont = 0
For i = 0 To 255
arr(i) = i
Next
For i = 0 To nf
For j = 0 To nc
For k = 0 To 255
If matriz(i, j) <> 0 Then
If matriz(i, j) = arr(k) Then

End If
End If
Next
Next
Next


End Function

Sub calculo_valores(ByRef val() As Long, ByRef uno As Integer, ByRef cinco As Integer, ByRef diez As Integer, ByRef vcinc As Integer, ByRef cinq As Integer, ByRef und As Integer)

Dim i As Integer
uno = 0 : diez = 0 : cinco = 0 : vcinc = 0 : cinq = 0 : und = 0

For i = 0 To 255
If val(i) >= 7054 And val(i) <= 8454 Then
diez += 1
End If
If val(i) >= 8455 And val(i) <= 9900 Then
uno += 1
End If
If val(i) >= 9968 And val(i) <= 12182 Then
cinco += 1
End If
If val(i) >= 12183 And val(i) <= 15000 Then
vcinc += 1
End If
If val(i) >= 15200 And val(i) <= 19000 Then
und += 1
End If
If val(i) >= 19759 And val(i) <= 25000 Then
cinq += 1
End If
Next

End Sub

End Module

*****************************************************************
*****************************************************************

Imports System.Drawing
Imports System.drawing.Drawing2D
Imports System.Drawing.Graphics
Imports System.Drawing.Image
Imports System.Windows
Imports System.Math

Public Class Form1

Private Sub btncargar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncargar.Click
Dim imagen As Bitmap
imagen = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height) 'a esa imagen le asigna el ancho y el alto del picturebox
With Me.ofd1
'.InitialDirectory = "C:\"
.Filter = "Formatos (*.bmp;*.jpg;*.jpeg;*.gif;*.tif)|" & _
"*.bmp;*.jpg;*.jpeg;*.gif;*.tif|Bitmaps (*.bmp)|*.bmp|" & _
"GIFs (*.gif)|*.gif|JPEGs (*.jpg)|*.jpg;*.jpeg|TIFs (*.tif)|*.tif"
.FilterIndex = 1
End With
If ofd1.ShowDialog() = Windows.Forms.DialogResult.OK Then
imagen = FromFile(ofd1.FileName) 'este le transfiere la imagen desde el archivo fisico a memoria a un objeto tipo bitmap
End If
Me.PictureBox1.Width = imagen.Width
Me.PictureBox1.Height = imagen.Height
Me.PictureBox1.Image = imagen
lb_ah1.Text = "W " & imagen.Width & " - " & "H " & imagen.Height
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim miimagen1 As Bitmap

Dim miimagen2 As Bitmap
'Dim uncen, cinc, diezc, vintc, cincc As Integer
Dim uno, diez, cinco, vcinc, cinq, und As Integer


Dim valhisto(255) As Long
miimagen1 = New Bitmap(Me.PictureBox1.Image)
miimagen2 = New Bitmap(miimagen1.Width, miimagen1.Height)
color_gris(miimagen1, miimagen2)
Dim tamano As Integer

tamano = 9
filtro_mediana(miimagen2, tamano)
binarizar(miimagen2)
'Dim matriz(miimagen2.Height - 1, miimagen2.Width - 1) As Integer
etiquetado_4p(miimagen2)
histograma1(miimagen2, valhisto)

calculo_valores(valhisto, uno, cinco, diez, vcinc, cinq, und)
txt_uc.Text = uno
txt_dc.Text = diez
txt_cc.Text = cinco
txt_vc.Text = vcinc
txt_qc.Text = cinq
txt_ud.Text = und


End Sub

Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
End Class

7 comentarios:

  1. la implementacion del reconocimiento de monedas junto con el backpropagacion hizo mas eficaz su funcionamiento

    ResponderEliminar
    Respuestas
    1. hola. de donde puedo sacar la clase matriz?? me esta tirando error que no le encuentra

      Eliminar
  2. se ve que esta bien implementado el momento que haces el entrenamiento puedes mejorarlo ahorrandote un par de for ya que haces dobel proceso para un mismo punto

    ResponderEliminar
    Respuestas
    1. hola. de donde puedo sacar la clase matriz?? me esta tirando error que no le encuentra

      Eliminar
  3. La manera de aprendizaje mediante hopfield, en lo que se refiere a la identificacion de monedas, se convierte en algo escencial para que tal identificacion sea mas rapida y exacta.

    ResponderEliminar
    Respuestas
    1. hola. de donde puedo sacar la clase matriz?? me esta tirando error que no le encuentra

      Eliminar
  4. hola. de donde puedo sacar la clase matriz?? me esta tirando error que no le encuentra

    ResponderEliminar