FINAL_DSP
-
Upload
arnold-ronald-machaca-ninacansaya -
Category
Documents
-
view
220 -
download
2
description
Transcript of FINAL_DSP
UNIVERSIDAD NACIONAL DEL ALTIPLANO
FACULTAD DE INGENIERIA MECANICA ELECTRICA,
ELECTRONICA Y SISTEMAS
ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA
TRABAJO:
DETECCIÓN DE ERRORES EN IMÁGENES FOTOGRÁFICAS Y
CORRECCIÓN MEDIANTE PROCESAMIENTO DE IMAGEN
UTILIZANDO SOFTWARE JAVA.
PRESENTADO POR:
EYNER CALCINA QUISPE
CURSO: PROCESAMIENTO DIGITAL DE SEÑALES
SEMESTRE: X
PUNO – PERU
2013
INDICE TITULO ........................................................................................................................................ 3
CAPITULO I ................................................................................................................................. 4
1.1 INTRODUCCIÓN: ........................................................................................................... 4
2.1 ANTECEDENTES: ........................................................................................................... 4
3.1 PLANTEAMIENTO DEL PROBLEMA .................................................................................... 5
4.1 JUSTIFICACION DEL PROBLEMA ........................................................................................ 5
5.1 HIPOTESIS: ......................................................................................................................... 5
6.1 DEFINICION DE VARIABLES: ............................................................................................... 5
Variables independientes: ......................................................................................................... 5
Variables dependientes: ............................................................................................................ 5
7.1 OBJETIVOS DEL TRABAJO .................................................................................................. 6
Objetivo General: ...................................................................................................................... 6
Objetivos específicos: ................................................................................................................ 6
8.1 TIPO DE INVESTIGACION: .................................................................................................. 6
9.1 MARCO TEORICO: .............................................................................................................. 6
PROCESAMIENTO DIGITAL DE IMÁGENES ................................................................................. 6
PROCESO DE FILTRADO ...................................................................................................... 6
Filtrado en el dominio de la frecuencia. ................................................................................ 7
TIPOS:....................................................................................................................................... 8
¿QUÉ ES JAVA? ...................................................................................................................... 8
¿QUÉ ES NETBEANS?............................................................................................................ 9
CAPITULO II ............................................................................................................................... 9
1.2 PROCEDIMIENTO EXPERIMENTAL:...................................................................... 9
2.2 SOFTWARE (NETBEANS) ....................................................................................... 10
3.2 CODIGO DEL PROGRAMA ..................................................................................... 12
4.2 IMÁGENES DE RESULTADO ................................................................................. 20
CAPITULO III ............................................................................................................................ 22
1.3 CONCLUSION ........................................................................................................... 22
2.3 RECOMENDACIONES ............................................................................................. 22
3.3 CRONOGRAMA: ....................................................................................................... 22
4.3 RECURSOS: ............................................................................................................... 23
5.3 BIBLIOGRAFÍA Y REFERENCIAS. ........................................................................ 23
6.3 ANEXO ....................................................................................................................... 23
TITULO: DETECCIÓN DE ERRORES EN IMÁGENES FOTOGRÁFICAS Y
CORRECCIÓN MEDIANTE PROCESAMIENTO DE IMAGEN UTILIZANDO
SOFTWARE JAVA.
PRESENTACIÓN
El siguiente proyecto se basa en la detección de errores en imágenes tomadas por
cámaras fotográficas, por lo cual se trata de analizar y corregir las averías que puede
tener cualquier tipo de imagen, por la cual se utilizara el software java netbeans el cual
será utilizado para dicho proyecto.
Con el fin de aportar a la tecnología de las imágenes y al procesamiento de dichas, son
primordiales aquellas aplicaciones que hoy en día se utilizan en los distintos tipos de
aparatos electrónicos como son las cámaras digitales para las personas que se dedican a
la fotografía, por lo cual también se enfatiza aquellas personas que están interesados en
la tecnología móvil el cual brinda cámaras digitales de alta resolución y es por la cual el
presente trabajo es el de reconocer errores de imágenes tomadas por cámaras
fotográficas antiguas como también por cámaras actuales las cuales se utilizan en
distintos eventos como en la producción de películas o en eventos en las cuales son
utilizadas por personas que les gusta tener una buena imagen para su recuerdo.
Finalmente, la corrección que se realiza en este trabajo por medio de software java el
cual tomara patrones de imágenes con errores y este hará la corrección respectiva en
dicha imagen, es por la cual en este trabajo se hará lo mejor posible para le adquisición
de una imagen de alta resolución.
CAPITULO I
1.1 INTRODUCCIÓN:
El proyecto está basado para una buena utilidad en el campo de procesamiento digital de
imágenes que se realiza en distintas instituciones que llevan el curso de procesamiento
de señales digitales o el curso de sistemas de información de imágenes, es por lo que en
la actualidad se requiere este tipo de proyectos para su implementación y uso, el cual se
le pueda dar en instituciones tales como la RENIEC o la Policía Nacional el cual se
dedica a la detección de personas con faltas, por medio de imágenes.
En el presente trabajo se establece una gran información y a la vez un gran aporte a la
tecnología de las imágenes digitales, por la cual está comprendido por tres capítulos
fundamentales en la cual se describe de la siguiente manera: Capítulo I, Introducción,
Antecedentes, Planteamiento del Problema, Justificación del Problema, Hipótesis,
Definición de Variables, Objetivos del Trabajo, Tipo de Investigación, Marco Teórico;
Capítulo II, Procedimiento Experimental, Software, Código de Programa, Imágenes de
Resultados; Capítulo III, Conclusiones, Recomendaciones, Bibliografía, Anexos.
2.1 ANTECEDENTES:
La Historia de la fotografía empieza oficialmente en el año 1839, con la divulgación
mundial del primer procedimiento fotográfico: el daguerrotipo.
Como antecedentes de la fotografía, se encuentran la cámara oscura y las
investigaciones sobre las sustancias fotosensibles, especialmente el ennegrecimiento de
las sales de plata. Ibn al-Haytham (Alhazen) (965 a 1040) llevó varios experimentos
sobre la cámara oscura.
También el procesamiento de imágenes se puede apreciar en todo tipo de cámaras de
filmación como en las cámaras fotográficas, una de las mas resaltantes en el
procesamiento de imágenes son el de películas en HD que se proyectan actualmente en
los cines de alto nivel en nuestro país así como cine planet y otro que ofrecen este tipo
de películas el cual las imágenes son de un procesamiento de alta calidad, también se
puede apreciar el nivel de procesado en las salas de fotografías comerciales que estas
están ubicadas en distintas ciudades de nuestro país.
3.1 PLANTEAMIENTO DEL PROBLEMA
Hemos ingresado a un gran nivel en el procesamiento de imágenes a nivel del mundo el
cual nos hace pensar que sí podemos llegar a logra en nuestro país el procesamiento de
imágenes tanto en video como en imágenes tomadas desde una cámara filmadora, es por
el cual surge el problema de implementar una solución al procesamiento de imágenes
para la iniciación de hacer buenas y de bajo costo lo que es el mundo de la fotografía y
el mundo de lo que es el cine en nuestro país, por lo cual se plantea este proyecto para
incentivar a aquellas personas que de alguna manera quieran aportar en el mundo de la
electrónica digital.
4.1 JUSTIFICACION DEL PROBLEMA
Es importante para mí la elaboración de este trabajo ya que aportare en la formación de
los estudiantes de la escuela Profesional de Ingeniería Electrónica de la Universidad
Nacional del Altiplano los cuales necesitan adquirir destreza en el procesamiento digital
de señales.
5.1 HIPOTESIS:
La detección de errores en imágenes fotográficas son de importancia para la buena
calidad de una imagen y la corrección es una solución a este lo cual está relacionada
mediante procesamiento de imagen.
6.1 DEFINICION DE VARIABLES:
Variables independientes:
Método por el cual se desarrollara el interfaz grafico en el procesamiento de imagen.
Variables dependientes:
Plataforma software java que será manipulada por el usuario en el procesamiento de
imágenes.
7.1 OBJETIVOS DEL TRABAJO
Objetivo General:
Detectar errores en imágenes fotográficas y corregir mediante procesamiento de
imagen utilizando software java.
Objetivos específicos:
Detectar errores en las imágenes que se evaluaran.
Corregir las imágenes mediante java.
8.1 TIPO DE INVESTIGACION:
Este trabajo lleva como método la aplicación el software java netbeans donde se
aplicara un interfaz grafico para la manipulación de las imágenes y a este se le
denomina como un método experimental.
9.1 MARCO TEORICO:
PROCESAMIENTO DIGITAL DE IMÁGENES
El procesamiento digital de imágenes es el conjunto de técnicas que se aplican a las
imágenes digitales con el objetivo de mejorar la calidad o facilitar la búsqueda de
información.
PROCESO DE FILTRADO
Es el conjunto de técnicas englobadas dentro del pre procesamiento de imágenes cuyo
objetivo fundamental es obtener, a partir de una imagen origen, otra final cuyo resultado
sea más adecuado para una aplicación específica mejorando ciertas características de la
misma que posibilite efectuar operaciones del procesado sobre ella.
Los principales objetivos que se persiguen con la aplicación de filtros son:
Suavizar la imagen: reducir la cantidad de variaciones de intensidad entre píxeles
vecinos.
Eliminar ruido: eliminar aquellos píxeles cuyo nivel de intensidad es muy diferente
al de sus vecinos y cuyo origen puede estar tanto en el proceso de adquisición de la
imagen como en el de transmisión.
Realzar bordes: destacar los bordes que se localizan en una imagen.
Detectar bordes: detectar los píxeles donde se produce un cambio brusco en la
función intensidad.
Por tanto, se consideran los filtros como operaciones que se aplican a los píxeles de una
imagen digital para optimizarla, enfatizar cierta información o conseguir un efecto
especial en ella.
El proceso de filtrado puede llevarse a cabo sobre los dominios de frecuencia y/o
espacio.
Filtrado en el dominio de la frecuencia.
Los filtros de frecuencia procesan una imagen trabajando sobre el dominio de la
frecuencia en la Transformada de Fourier de la imagen. Para ello, ésta se modifica
siguiendo el Teorema de la Convolución correspondiente:
1. se aplica la Transformada de Fourier,
2. se multiplica posteriormente por la función del filtro que ha sido escogido,
3. para concluir re-transformándola al dominio espacial empleando la
Transformada Inversa de Fourier.
Teorema de la Convolución (frecuencia):
F(u,v): transformada de Fourier de la imagen original.
H(u,v): filtro atenuador de frecuencias.
Como la multiplicación en el espacio de Fourier es idéntica a la convolución en el
dominio espacial, todos los filtros podrían, en teoría, ser implementados como un filtro
espacial.
Etapas del procesamiento de imágenes en el dominio de la frecuencia.
TIPOS:
Existen básicamente tres tipos distintos de filtros que pueden aplicarse:
Filtro paso bajo: atenúa las frecuencias altas y mantiene sin variaciones las bajas.
El resultado en el dominio espacial es equivalente al de un filtro de suavizado,
donde las altas frecuencias que son filtradas se corresponden con los cambios
fuertes de intensidad. Consigue reducir el ruido suavizando las transiciones
existentes.
Filtro paso alto: atenúa las frecuencias bajas manteniendo invariables las
frecuencias altas. Puesto que las altas frecuencias corresponden en las imágenes a
cambios bruscos de densidad, este tipo de filtros es usado, porque entre otras
ventajas, ofrece mejoras en la detección de bordes en el dominio espacial, ya que
estos contienen gran cantidad de dichas frecuencias. Refuerza los contrastes que se
encuentran en la imagen.
Filtro paso banda: atenúa frecuencias muy altas o muy bajas manteniendo una
banda de rango medio.
¿QUÉ ES JAVA?
Java es una tecnología que se usa para el desarrollo de aplicaciones que convierten a
la Web en un elemento más interesante y útil. Java no es lo mismo que javascript,
que se trata de una tecnología sencilla que se usa para crear páginas web y
solamente se ejecuta en el explorador. Java le permite jugar, cargar fotografías,
chatear en línea, realizar visitas virtuales y utilizar servicios como, por ejemplo,
cursos en línea, servicios bancarios en línea y mapas interactivos. Si no dispone de
Java, muchas aplicaciones y sitios web no funcionarán.
¿QUÉ ES NETBEANS?
NetBeans IDE es un entorno de desarrollo una herramienta para que los programadores
puedan escribir, compilar, depurar y ejecutar programas. Está escrito en Java - pero
puede servir para cualquier otro lenguaje de programación. Existe además un número
importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto
libre y gratuito sin restricciones de uso.
CAPITULO II
1.2 PROCEDIMIENTO EXPERIMENTAL:
El procedimiento experimental se hará según el cronograma de la elaboración del
proyecto.
Esta es una pequeña recolección de imágenes antigua para poder procesar con el
software java netbeans, así como estas fotografías también se harán en videos de baja
resolución.
Ver anexo: fotografías de puno de años pasados y actuales.
CAMARA: posible cámara a utilizarse es la webcam ósea las cámaras utilizadas en
cabinas de internet por lo que es posible también usar cámaras de alta resolución como
son las que están en las empresas bancarias, también se puede usar aquellas que emiten
señales inalámbricas por lo cual tenemos que hacer primero las pruebas de software en
muchas de las cámaras y en el proyecto se empezará con la cámara utilizada en internet,
lo cual estamos describiendo de la siguiente manera:
También se hará el intento de usar las cámaras digitales de fotografía como:
La resolución de las cámaras de dispositivos móviles son también uno de los mas
probables aplicaciones que se les puede dar en un procesamiento de imagen.
2.2 SOFTWARE (NETBEANS)
El software de este proyecto en conocido como Java Netbeans, es donde se hará la
aplicación del procesamiento de las imágenes tomas por cámaras fotográficas y otros
tipos de cámaras, por lo cual se presenta una pequeña prueba que se muestra a
continuación.
IMÁGENES DE PRUEBAS:
Fig. Plataforma de filtrado de imágenes netbeans.
Fig. Imagen cuando se está pulsando play para el ejecutable.
Fig. Buscando un archivo para procesar.
Fig. Imagen para ser filtrada
Fig. Imagen filtrada en escala gris
Fig. Filtrado en color azul y verde.
3.2 CODIGO DEL PROGRAMA
package javaimagenes;
import ClasesImagenes.AbrirImagen;
import ClasesImagenes.BaseImagenes;
import ClasesImagenes.CambiarFormatos;
import ClasesImagenes.TransformarImagen;
import java.awt.image.BufferedImage;
//-----PROCESAMIENTO DIGITAL DE SEÑALES--------
//-----AUTOR:EYNER CALCINA QUISPE--------------
public class FormPrincipal extends javax.swing.JFrame {
//Creamos los objetos que manejeramos en los eventos de los diferentes controles
//Los objetos están instanciados
BaseImagenes ObjBase=new BaseImagenes();
AbrirImagen ObjAbrir=new AbrirImagen();
CambiarFormatos ObjCambiarFormat=new CambiarFormatos();
TransformarImagen ObjTransformaImg=new TransformarImagen();
public FormPrincipal() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jLabel_Imagen = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
ButtonDeshacer = new javax.swing.JButton();
ButtonRehacer = new javax.swing.JButton();
TextField_Info = new javax.swing.JTextField();
ButtonBlancoNegro = new javax.swing.JButton();
ButtonEscalaGrises = new javax.swing.JButton();
ButtonInvertir = new javax.swing.JButton();
ButtonFiltroRojo = new javax.swing.JButton();
ButtonFiltroVerde = new javax.swing.JButton();
ButtonFiltroAzul = new javax.swing.JButton();
ButtonAbrir = new javax.swing.JButton();
ButtonAbrirURL = new javax.swing.JButton();
TextField_URL = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Imágenes en Java");
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jLabel_Imagen.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jScrollPane1.setViewportView(jLabel_Imagen);
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 878,
Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 463,
Short.MAX_VALUE)
);
jSplitPane1.setTopComponent(jPanel1);
ButtonDeshacer.setText("Deshacer");
ButtonDeshacer.setToolTipText("");
ButtonDeshacer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonDeshacerActionPerformed(evt);
}
});
ButtonRehacer.setText("Rehacer");
ButtonRehacer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonRehacerActionPerformed(evt);
}
});
ButtonBlancoNegro.setText("Blanco Negro");
ButtonBlancoNegro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonBlancoNegroActionPerformed(evt);
}
});
ButtonEscalaGrises.setText("Escala grises");
ButtonEscalaGrises.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonEscalaGrisesActionPerformed(evt);
}
});
ButtonInvertir.setText("Invertir");
ButtonInvertir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonInvertirActionPerformed(evt);
}
});
ButtonFiltroRojo.setText("Filtro rojo");
ButtonFiltroRojo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonFiltroRojoActionPerformed(evt);
}
});
ButtonFiltroVerde.setText("Filtro verde");
ButtonFiltroVerde.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonFiltroVerdeActionPerformed(evt);
}
});
ButtonFiltroAzul.setText("Filtro azul");
ButtonFiltroAzul.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonFiltroAzulActionPerformed(evt);
}
});
ButtonAbrir.setText("Abrir");
ButtonAbrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonAbrirActionPerformed(evt);
}
});
ButtonAbrirURL.setText("Abrir URL");
ButtonAbrirURL.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonAbrirURLActionPerformed(evt);
}
});
TextField_URL.setText("http://");
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(ButtonAbrir)
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING)
.addComponent(TextField_URL,
javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(ButtonAbrirURL)
.addGap(0, 87, Short.MAX_VALUE)))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.T
RAILING, false)
.addComponent(TextField_Info,
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(ButtonDeshacer,
javax.swing.GroupLayout.PREFERRED_SIZE, 132,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(ButtonRehacer,
javax.swing.GroupLayout.PREFERRED_SIZE, 132,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING, false)
.addComponent(ButtonBlancoNegro,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ButtonFiltroRojo,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING, false)
.addComponent(ButtonEscalaGrises,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ButtonFiltroVerde,
javax.swing.GroupLayout.PREFERRED_SIZE, 93,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING, false)
.addComponent(ButtonFiltroAzul,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ButtonInvertir,
javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(ButtonDeshacer)
.addComponent(ButtonRehacer)
.addComponent(ButtonBlancoNegro)
.addComponent(ButtonEscalaGrises)
.addComponent(ButtonInvertir)
.addComponent(ButtonAbrir)
.addComponent(ButtonAbrirURL))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.B
ASELINE)
.addComponent(TextField_Info,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ButtonFiltroRojo)
.addComponent(ButtonFiltroVerde)
.addComponent(ButtonFiltroAzul)
.addComponent(TextField_URL,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 12, Short.MAX_VALUE))
);
jSplitPane1.setRightComponent(jPanel2);
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSplitPane1)
);
pack();
}// </editor-fold>
//--------BOTON ABRIR-------------
private void ButtonAbrirActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage imagen=ObjAbrir.abrirImagenLocal();
if (imagen!=null){
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
}
//--------BOTON ABRIR URL--------------
private void ButtonAbrirURLActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage imagen=ObjAbrir.abrirImagenURL(TextField_URL.getText());
if (imagen!=null){
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
}
//-------BOTON BLANCO Y NEGRO----------
private void ButtonBlancoNegroActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.blancoNegro(imagen, 128);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//--------BOTON GRISES-----------
private void ButtonEscalaGrisesActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.escalaGrises(imagen);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//---------BOTON INVERTIR------------
private void ButtonInvertirActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.invertirImagen(imagen);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//--------FILTROS----------------
//---------FILTRO ROJO-----------------
private void ButtonFiltroRojoActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.filtroRojo(imagen);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//------------FILTRO VERDE----------------------
private void ButtonFiltroVerdeActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.filtroVerde(imagen);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//-------------FILTRO AZUL----------------------
private void ButtonFiltroAzulActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage
imagen=ObjCambiarFormat.iconToBufferedImage(jLabel_Imagen.getIcon());
imagen=ObjTransformaImg.filtroAzul(imagen);
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
}
//--------BOTON DESHACER--------------
private void ButtonDeshacerActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage imagen=ObjBase.deshacerImagen();
if (imagen!=null){
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
TextField_Info.setText(ObjBase.informacionImagenActual());
}
}
//-------BOTON REHACER----------------
private void ButtonRehacerActionPerformed(java.awt.event.ActionEvent evt) {
BufferedImage imagen=ObjBase.rehacerImagen();
if (imagen!=null){
jLabel_Imagen.setIcon(ObjCambiarFormat.bufferedImageToIcon(imagen));
TextField_Info.setText(ObjBase.informacionImagenActual());
}
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormPrincipal.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormPrincipal.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormPrincipal.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormPrincipal.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormPrincipal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton ButtonAbrir;
private javax.swing.JButton ButtonAbrirURL;
private javax.swing.JButton ButtonBlancoNegro;
private javax.swing.JButton ButtonDeshacer;
private javax.swing.JButton ButtonEscalaGrises;
private javax.swing.JButton ButtonFiltroAzul;
private javax.swing.JButton ButtonFiltroRojo;
private javax.swing.JButton ButtonFiltroVerde;
private javax.swing.JButton ButtonInvertir;
private javax.swing.JButton ButtonRehacer;
private javax.swing.JTextField TextField_Info;
private javax.swing.JTextField TextField_URL;
private javax.swing.JLabel jLabel_Imagen;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSplitPane jSplitPane1;
// End of variables declaration
}
4.2 IMÁGENES DE RESULTADO
Imagen normal, el cual será procesado con filtros de color.
Luego de tener y/o seleccionar una imagen o foto para que luego sea procesada, en los
botones de la plataforma dada se tiene como con facilidad se puede hacer las escalas
correspondientes.
Las siguientes imágenes son procesadas mediante filtros de colores.
Las imágenes mostradas son las que se procesaron mediante colores el cual se
especifica que la escala o color gris fue procesada como su inversa que se muestra al
costado de la gris.
CAPITULO III
1.3 CONCLUSION
En el presente trabajo se concluye que el procesamiento de imágenes de tipo fotografía
o imágenes que son desarrolladas en las webs, son poco tediosos de hacer el
procesamiento por lo que se hizo en solo procesar las imágenes en colores para asi ver
las dificultades de los errores que pueda corregirse de una fotografía y/o imagen
cualquiera, finalmente el procesamiento que se llegó a alcanzar por este programa es
hacer filtro de colores.
2.3 RECOMENDACIONES
En todo tipo de procesamiento se debe conocer las características la cual se debe
de procesar es decir el objeto o elemento a ser procesada.
Para hacer los filtros de imágenes se debe de considerar los tipos de colores al
cual se debe de procesar, mejor dicho conocer que colores que puede
combinarse entre los colores rojo, verde y azul.
Finalmente tener mucho cuidado en usar el programa al ser usado para procesar
imágenes, lo cual nos permite visualizar con que rapidez puede enviar los datos
la computadora.
3.3 CRONOGRAMA:
S.1 S.2 S.3 S.4 S.5 S.6 S.
7
S.
8
S.
9
S.
10
S.
11
S.
12
S.
13
1er. Recolección de información X X
2do. Búsqueda de fotografías y videos
(antiguas)
X X
3ro. Selección de patrones (fotos y
videos)
X
4to. Avance en software X
5to. Búsqueda de cámara de video para
procesamiento.
X
6to. Pruebas software y cámara X X
7mo. Retoques finales del proyecto X X X
8vo. Aprobación de proyecto
9no. Presentación y sustentación X
4.3 RECURSOS:
En la siguiente tabla observamos los siguientes recursos que se necesitaran.
Cantidad. Costo. Total.
Computadora 1 unidad personal
Software 1 3.50 soles 3.50
Cámara video 2 80.00 soles 80.00
Fotografías 5 5.00 soles 5.00
Impresora 1 personal
Total 88.50 soles
5.3 BIBLIOGRAFÍA Y REFERENCIAS.
José Morón, SEÑALES Y SISTEMAS, Editorial Biblioteca Universidad Rafael
Urdaneta, Año 2011.
Mag. Guillermo R. Friedrich, INTRODUCCIÓN AL PROCESAMIENTO
DIGITAL DE SEÑALES, Cátedra: Técnicas Digitales III, Año 2002.
http://es.wikipedia.org/wiki/Procesamiento_digital_de_im%C3%A1genes
http://www.tsc.uc3m.es/imagine/Portada/Enlaces.html.
https://netbeans.org/
6.3 ANEXO
FICHA TECNICA DE CAMARA GENIUS MENSSENGER 310
SYSTEM REQUIREMENTS:
PC
Intel Pentium III 800MHz MMX compatible con PC ó superior
Microsoft Windows Vista, XP, 2000, Me, 98SE ó superior
128MB RAM
CD-ROM
Puerto USB 1.1 / 1.0 disponible
60MB de espacio libre en disco duro (se recomienda 260MB)
Direct X 9.0 ó superior
Package Contents:
Messenger 310
El CD incluye
- Controlador
- CrazyTalk Avatar Creator
- CrazyTalk Cam Suite
- Manual de usuario en varios idiomas
Guía rápida en varios idiomas