:DHola amigos, para todos aquellos que quieran comerce el mundo y como gran sueño como yo tengan en ser investigadores algun dia!
Aqui les traigo un programa super basico de Reconocimiento de patrones en una imagen. lo cree por conviccion y por querer saber como funciona esto.!!!
Pero para que puedo ocupar este programa?:
La pregunta me la han hecho muchas personas y la respuesta es ilimitada! la pregunta seria donde no puedo ocuparla
Un ejemplo es en la inteligencia artificial supongamos que creamos un robor que aprender a distinguir en una mesa llena de fruta una manzana. como sabes o como hacele entender al robot k es una manzana y que es diferente a las demas.!!
con este programa de reconocimiento de patrones. esto es muy basico pero abre la puerta a grandes investigaciones k se estan asiendo sobre esto.
Comenzemos.
Primero que nada nuestro proyecto solo reconoce patrones en imagenes .png esto es por el formato y el tipo de imagen de mapa de bits que no cambiar su estructura cuando cambiamos su tamaño o modificamos un pixel, ya que la mayoría de las otras extensiones al cambiar un pixel cambiar todo lo demas
Este es el codigo sencillo y pequeño
import java.awt.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import java.io.*;
import javax.imageio.ImageIO;
//Autor Jose abel de la Fuente Arriaga
//CyberServer
public class Pixeles {
public static void main
(String[] args
) {
JOptionPane.
showMessageDialog(null,
"Proyecto: Reconocimiento de Patrones en imagenes \n"+ "Autor: Jose Abel de la fuente \n" +
"Correo: crow_15@hotmail.com \n" +
"Lenguaje: Java \n"+
"Arriva atlacomulco, atte: cyberServer");
String PixelBuscar
=JOptionPane.
showInputDialog("Color en Hexadecimal del pixel a Buscar \n El Default es Blanco - ffffff",
"ffffff"); String Archivo
=JOptionPane.
showInputDialog("Nombre de la imagen para Buscar el pixel \n Tiene que se png"); int contador=0;
Coversion C = new Coversion();
for(int x=0;x<=449;x++){
for(int y=0;y<=331;y++){
String val
= Integer.
toHexString(Nueva.
getRGB(x,y
) & 0x00ffffff
).
toString(); if(val.equals(PixelBuscar)){
Cordenadas=Cordenadas + " (" + x+","+y+") ";
contador++;
g.
setColor(Color.
yellow); g.fillOval(x, y, 10, 10);
}
}
}
//JOptionPane.showMessageDialog(null,"Tiene " + contador + " elementos que buscas");
//JOptionPane.showMessageDialog(null,"Cordenadas " + Cordenadas);
if (contador != 0){
try {
ImageIO.
write(Nueva,
"jpg",
new File("Resultado.png")); System.
out.
println("Error de escritura"); }
Resultado.
setIcon(new ImageIcon("Resultado.png")); }else{
JOptionPane.
showMessageDialog(null,
"No se encontro ningun patron"); }
}
}
class Coversion {
} else {
image.getWidth(null),
image.getHeight(null),
Graphics g
= bufferedImage.
createGraphics(); g.drawImage(image,0,0,null);
g.dispose();
return( bufferedImage );
}
}
}
La imagen original queda asi:
Si nos damos cuenta emos escrito en la imagen pequeños puntos blancos que en este caso es el patron que estamos buscando
Despues de haber pasado nuestro programa por la imagen y haber especificado buscar el patron blanco!!! no da esta imagen como resultado
Bingo!!! encontro los patrones reconocio lo que estaba buscando y lo señalo!!!
Para muchos funcinal, para muchos novato, para muchos perdida de tiempo. ustedes que opinan???
NOTA: El unico parametro que tienes que cambiar en el codigo es
for(int x=0;x<=449;x++){
for(int y=0;y<=331;y++){
tendras que cambiar los limites de X y Y segun el numero de pixeles de imagen. recuerda que es si la imagen es de 450X332 tienes que poner en los limites de los for anidado 449X331 pues comenzamos de 0
Saludos y espero que les sirva su amigo CyberServer.
Este proyecto todavia no lo muestro asi que si eres del Tecnologico de Jocotitlan ( Tesjo) no se te ocurra copiarlo maldito PIRATA!!! jajaja ntc saludos.!!
NOTOTA: PERDON POR LA ESTRUCTURA "PUERCA DEL CODIGO" Reconozco QUE ES UNA PORQUERIA EN CUANTO A LIMPIEZA PERO ME KEME LA CABEZA PENSANDO COMO HACERLE Y ME OLVIDE DE LA INGENIERIA DE SOFTWARE :p