Está en la página 1de 23

“AÑO DEL DIÁLOGO Y LA RECONCILIACIÓN NACIONAL”.

PROYECTO DE REDES NEURONALES

1. “Sistema de reconocimiento de frutas”

CURSO

REDES NEURONALES Y LOGICA DIFUSA

PROFESOR

JOSE LUIS BOHORQUEZ BENDEZU

INTEGRANTES
JESUS SULCA QUINTO ---------------------------------- 1311840
JOSÉ LUIS CALDAS PASTRANA---------------------- 0920766
RIMAC COLQUI GUSTAVO-------------------------------1330485
RIVERA ESPEJO ERIC-------------------------------------1411854
Sistema de reconocimiento de frutas
RESUMEN

En este proyecto se detalla el desarrollo de la implementación de un sistema


que, dada una imagen de una fruta, pueda clasificar dentro de un conjunto ya
estudiado, dicha fruta. La implementación se realizará usando el sistema Matlab y
realiza una serie de tratamientos previos a la imagen para poder ser analizada de
manera fiable y aporte una clasificación lo más verídica posible.

1. Introducción

En la actualidad, el uso de las nuevas tecnologías está llegando cada vez a diferentes
aspectos de la vida cotidiana, buscando facilitarnos los actos que realizamos
diariamente, creando sistemas dirigidos a realizar dichas tareas, tareas que pueden
ser, salir de compras, sellar el paro, ver el periódico, etc.

Podemos decir que la principal función de las TIC es ofrecer servicios que
reduzcan el esfuerzo físico-psicológico necesario para realizar dicho acto, servicio u
otra actividad.

Existen empresas como Amazon Fresh y Shopping Express que nos ofrecen un
servicio de entrega de alimentos a domicilio en un tiempo récord, también se
desarrolló un sistema llamado Dash Button, que simplemente es un botón que, al
ser pulsado, ordena de manera automática la compra de los artículos vinculados.

Llegados a este punto, viendo la facilidad con la cual podemos realizar dichos actos,
nos planteamos la idea de un sistema de reconocimiento que pudiera reconocer,
interpretar y clasificar diferentes tipos de alimentos. Esto es un tema bastante amplio
y ambicioso en el que se tendría que abordar desde diferentes aspectos (software,
hardware, convenios con diferentes empresas).

Por ello en este proyecto se aborda uno de los temas que podrían, en un futuro, y
añadiendo un desarrollo mucho más exhaustivo y dedicado, sería el reconocimiento
de frutas.

Por lo tanto, este trabajo desarrolla uno de los primeros pasos que tendrían que darse
para la implantación de este tipo de sistemas, ofreciendo tanto un software que
permita reconocer diferentes tipos de fruta, como un artículo de información, para
que posibles personas futuras, con la misma ambición, partan de una base.

2. Planteamiento teórico
En este apartado encontrará todo el planteamiento teórico usado a la hora de
realizar este proyecto. Se realizará una explicación teórica de todos los métodos
y operaciones usadas ofreciendo una justificación coherente sobre las mismas.
2.1. Segmentación

Tras una correcta carga de imagen en Matlab, es necesario realizar una


segmentación de la misma, llegados a este punto nos planteamos una serie de
preguntas.

Sabemos que al trabajar con el modelo RGB podíamos intentar quedarnos con
alguna de las capas de forma generalizada para poder binarizar la imagen de la
forma más óptima posible.

Aquí tenemos la primera cuestión del proyecto ¿Cuál será


la capa correcta?

Para resolver esta cuestión realizamos pruebas y sacamos los histogramas de


la imagen. Sabemos que con los histogramas es posible ver la distribución de
intensidades en una imagen.

La idea es buscar una distribución en la que las intensidades están claramente


cercanas a los valores 0 y
255 en nuestra escala de grises, como podemos
observar en la imagen.

2.1.1 Binarización

Ahora deberíamos realizar la binarización de la imagen, podemos decir que la


binarización consiste en una reducción de información en la que los únicos
valores posibles son verdadero y falso (1 y 0).

El uso de la binarización nos ayuda a la hora del análisis de la imagen, pues


nos permite crear una diferencia entre el objeto y su fondo.

Para binarizar la imagen usaremos el método Otsu, este método usa la técnica
de la umbralización, que se emplea cuando tenemos una clara diferencia entre
el objeto y el fondo.

Este método se rige por los principios de similitud entre píxeles pertenecientes
a un objeto y a sus diferencias respecto al resto.

La escena a la que nos enfrentamos es ideal para este método, pues tenemos
un fondo uniforme y el objeto claramente diferenciado, ya que elegimos la capa
azul para nuestras distintas imágenes, al aplicar el umbral, la imagen en escala
de grises quedará binarizada etiquetando con ‘1’ los píxeles correspondientes
al objeto y con ‘0’ aquellos que son del fondo
Debemos remarcar las ventajas de usar el método de Otsu, una de ellas y
puede que la más interesante planteando el desarrollo futuro de este proyecto,
es la capacidad de respuesta que encontramos ante imágenes más cercanas
a situaciones reales (imágenes mal iluminadas, ruidosas, con histogramas
planos, etc.), este método precisa de automatismo ya que no necesita
supervisión alguna.

2.1.2 Operaciones Morfológicas

Ya con nuestra imagen binarizada, debemos realizar ciertas operaciones


para poder conseguir una binarización más exacta.

Para ello usaremos las operaciones morfológicas, estas nos ayudan a


simplificar las imágenes conservando las principales características de forma de
los objetos.

Para conseguir una binarización más exacta, se aplicará la operación


morfológica de cierre (se aplica una dilatación seguida de una erosión), ya
que elimina detalles oscuros de la imagen, dejando el resto prácticamente
igual. esta operación conseguirá para las frutas con irregularidades en su piel
evitar que estas generen píxeles de ruido en la imagen a segmentar.
2.1.3 Normalización

Tras esto ya consideraremos la imagen resultante una imagen segmentada. Ahora


realizaremos una serie de pasos para contener la imagen en el menor rectángulo
posible (BoundingBox) y después, estandarizar todas las imágenes a un mismo
tamaño para a partir de aquí comenzar con la obtención de los descriptores.

Es importante negar nuestra imagen binarizada, pues el método regionprops utiliza los
píxeles ‘on’ como el objeto y los ‘off’ como el fondo.

Es necesaria una buena elección de las propiedades que definen a la imagen, a estas
las llamaremos descriptores de la imagen. Regionprops se encarga de calcular las
propiedades de cada región dentro de una imagen, en nuestro caso al solo existir una
región por imagen, solo identificará una región, pero este método identifica tantas
regiones como existan en la imagen. Devuelve una matriz de estructura, un elemento
por región, cuyos nombres de los campos son las propiedades pedidas al método.

Debemos normalizar la imagen, ya que debemos tratar la imagen reescalada al


mismo tamaño, pues obtendremos diferentes valores, para los diferentes descriptores
de una misma imagen. Regionprops nos devuelve un valor para la bounding box, que
nos es más que las coordenadas del borde rectangular que encierra totalmente la
imagen.

Ahora que tenemos contenida la imagen en este cuadrado mínimo, la recortaremos


por las coordenadas dadas y reescalaremos dicha imagen resultante. Debido al
resultado obtenido por las pruebas, el cual podrá encontrar en el apartado
experimental, decidimos usar una escala de 450x600.

2.2 Descriptores

Llegados a este punto es necesario definir los descriptores que vamos a usar,
los que hemos considerado más importantes para realizar la calificación de las
frutas son:

- Área.
- Perímetro.
- Redondez.
- Excentricidad.
- Media de las capas RGB.

A continuación, se definen más detalladamente cada uno de los


descriptores usados.

Área: Regionprops nos devolverá un escalar que especifica el número real de


píxeles ‘on’ en la región.

Perímetro: Para este caso nos devolverá un escalar que especifica la distancia
alrededor del límite de la región. Regionprops obtiene el perímetro calculando
la distancia entre cada par contiguo de píxeles alrededor del borde de la región.
Redondez: Esta propiedad no la podemos encontrar en regionprops, por lo
que debemos definirla adecuadamente. La intención es que esta propiedad nos
devuelve un valor entre 0 y 1, de tal forma que cuanto más cercano a uno sea
nuestro valor, más nivel de redondez tendrá nuestro objeto.
La fórmula que define esta propiedad es
la siguiente:

Excentricidad: La excentricidad es la relación de la distancia entre los focos


de la elipse y su longitud del eje principal. El valor está entre 0 y 1. (0 y 1 son
casos degenerados. Una elipse cuya excentricidad es
0 es en realidad un círculo, mientras que una elipse cuya excentricidad es 1
es un segmento de línea.)

Es cierto que regionprops nos ofrece la propiedad excentricidad, aunque como


podemos ver en la fórmula no es más que la raíz cuadrada de las diferencias
de los ejes mayor y menor al cuadrado, partido por su eje mayor.

Media capas RGB: Este descriptor nos facilitara la tarea de orientar al sistema
acerca del color que predomina en la imagen. Para obtener este descriptor se
procedió a realizar la media del bounding box de cada una de las capas RGB,
esto nos dio las medias de las columnas que al aplicar de nuevo la función
mean ya nos dio un valor único para cada una de las capas RGB.
2.3. Reconocimiento

Llegados a este punto, hemos conseguido extraer de cada imagen una serie
de datos (descriptores) que nos podrán ayudar en el proceso de calificación.

Tras una correcta clasificación de los datos obtenidos en unas


correspondientes tablas de datos, es necesario proceder a la elección de un
método de reconocimiento.

2.3.1. KNN

El algoritmo K-NN es un algoritmo de clasificación. Dado un conjunto de objetos


prototipo de los que ya se conoce su clase, es decir, dado un conjunto de
muestras de entrenamiento y dado un nuevo objeto cuya clase no conocemos,
se busca entre el conjunto de prototipos los “k” más parecidos al nuevo objeto.
A este se le asigna la clase más numerosa entre los “k” objetos prototipo
seleccionados.

Vemos como en la imagen tenemos 24 casos ya clasificados en dos posibles


valores y que se ha seleccionado k=3. De los 3 casos ya clasificados que se
encuentran más cercanos al nuevo caso a clasificar, dos de ellos pertenecen a
una misma clase, por tanto, el clasificador 3-NN predice la clase mayoritaria
para el nuevo caso. Si el k varía la solución varía.

La elección del número adecuado de vecinos k es una tarea que no tiene un


procedimiento fijo, y en ocasiones su búsqueda se vuelve un proceso iterativo.
4. Parte Experimental

En este punto podrá encontrar todo el estudio experimental realizado a la


hora de llevar a cabo la realización del proyecto, desde las pruebas que
llevaron a su éxito, hasta aquellas que fueron erróneas, explicando los
factores que producen este error.

Para empezar nuestro estudio experimental, debemos disponer


previamente de un conjunto de entrenamiento dado.

La primera barrera a la que tenemos que enfrentarnos, es la selección previa


de la capa RGB, para poder realizar una correcta segmentación de la imagen.

Para poder decidir correctamente la capa a usar realizamos pruebas con


diferentes imágenes y diferentes fondos, observando los resultados del
histograma.

En las siguientes imágenes podrán observar los resultados obtenidos.

[Figura 1]
[Figura 2]

[Figura 3]
[Figura 4]

En este caso (Figura 3 y 4) ,hemos tratado con imágenes, en la que los


fondos se observa una gran variedad de tonalidades y texturas, el
histograma obtenido para dichas imágenes, no nos asegura poder
generalizar un patrón de elección de capas, pues dependiendo de la
tonalidad del fondo, obtendremos diferentes valores en el histograma, y por
lo tanto tendríamos que elegir una capa diferente para el tratamiento de cada
imagen, dependiendo del color de su fondo.

Con los resultados obtenidos al realizar estas pruebas podemos asegurar


que tratar con imágenes con el fondo blanco, nos asegura que podremos
trabajar siempre con la capa azul, ahora podemos binarizar nuestra imagen
para convertirla únicamente en valores 0 y 1, para ello aplicamos el método
de Otsu (la explicación de la elección de este método lo podemos encontrar
en el apartado teórico).

Como era de prever en las imágenes binarizadas podemos observar cierto


‘ruido’, como hemos explicado en el apartado del planteamiento teórico para
quitar ese ‘ruido’ debemos usar operaciones morfológicas y al trabajar con
escala de grises tenemos operaciones de dilatación, erosión, apertura y cierre.

Las pruebas realizadas fueron las siguientes:


Para empezar, probamos con el elemento estructural que nos aconseja el
documento, disco de tamaño 11.
[Figura 5]

[Figura 6]

ealizamos las pruebas con Squa e amaño 11:

[Figura 7]

[Figura 8]
5. Manual de Usuario

Para el correcto funcionamiento del programa desarrollado, en primer lugar, será


necesario tener instalado en el sistema que se desea ejecutar, el programa
Matlab, podrá obtenerlo de su página oficial a la cual le aportamos el enlace:

https://es.mathworks.com/products/matlab.html

En esta página podremos encontrar tanto una versión de prueba como la versión
de pago ya que Matlab se trata de un sistema que para usarlo deberemos pagar
la licencia.
Una vez ya tenemos Matlab instalado en el equipo, tenemos dos posibilidades
para ejecutar el programa:

- Se ha utilizado la herramienta deploytool de Matlab para crear un


ejecutable, el usuario solo tendría que ejecutar el archivo y empezar a
disfrutar de la aplicación, siempre y cuando tenga la misma versión de
Matlab con la que se creó el ejecutable (MATLAB 2011b).

- Como segunda posibilidad, debemos abrir la herramienta, y copiar


en el path de Matlab los archivos que se aportan en el zip incluidos
en la carpeta archivos Matlab

Por último, se abrirá el archivo ‘presentación.m’ que nos lanzará la


interfaz a través de la cual debemos ir avanzando y completando los
pasos que se nos indican para que el sistema sea capaz de clasificar la
fruta en cuestión.

Como única restricción para la correcta clasificación usando la interfaz


gráfica, es pulsar en todos los botones antes de avanzar al siguiente paso
o ventana del programa.

Por último, comentar que se incluyen también los métodos de que se


desarrollaron durante la creación del sistema con vistas que estos puedan ser
usados como comando propios de Matlab, hemos decidido aportar este conjunto
de archivos .m ya que la claridad del código en ellos es muchísimo mayor que en
la interfaz gráfica además de facilitar la realización de nuevas versiones de este
sistema de manera mucho más fácil.
6. Manual de Interfaz
Gráfica

Una interfaz gráfica es el vínculo entre el usuario y un programa computacional,


constituida generalmente por un conjunto de comandos o menús, instrumentos
y métodos por medio de los cuales el usuario se comunica con el programa
durante las operaciones que se desean realizar, facilitando la entrada y salida
de datos e información.

Por consiguiente, para crear una interfaz gráfica utilizaremos el lenguaje de


programación de Matlab. Matlab nos permite realizar GUIs de una manera
sencilla usando una herramienta llamada GUIDE.

GUIDE es un entorno de programación visual para realizar y ejecutar


programas que necesiten ingreso continuo de datos.

Para dar comienzo a nuestro proyecto, pulsaremos sobre el icono que se


muestra en la figura siguiente:

El cual, nos lleva al siguiente cuadro


de diálogo:
Donde se presentan las
siguientes opciones:

a) Blank GUI (Default): La opción de interfaz gráfica de usuario


en blanco (viene predeterminada), nos presenta un formulario nuevo,
en el cual podemos diseñar nuestro programa.
b) GUI with Uicontrols: Esta opción presenta un ejemplo en el cual se
calcula la masa, dada la densidad y el volumen, en alguno de los dos
sistemas de unidades. Podemos ejecutar este ejemplo y obtener
resultados.
c) GUI with Axes and Menu: Esta opción es otro ejemplo el cual contiene
el menú File con las opciones Open, Print y Close. En el formulario tiene
un Popup menu, un push button y un objeto

d) Modal Question Dialog: Con esta opción se muestra en la pantalla un


cuadro de diálogo común, el cual consta de una pequeña imagen, una
etiqueta y dos botones Yes y No, dependiendo del botón que se
presione, el GUI retorna el texto seleccionado (la cadena de caracteres
‘Yes’ o
‘No’).

Elegimos la opción Blank GUI, obtenemos la figura siguiente:


La interfaz gráfica obtiene las herramientas siguientes:

● Barra de Menús: Se encuentran las funciones elementales de Edición de


GUIs.

● Barra de herramientas:

● Paleta de componentes:

○ Selecciona el objeto deseado.


○ Invoca un evento inmediatamente.
○ Usado para representar un rango de
valores.

○ Indica una opción que puede ser seleccionada.


○ Indica el estado de una opción o atributo.
○ Caja para editar texto.

○ Muestra un string de texto en una caja.

○ Provee una lista de opciones.


○ Muestra una lista deslizable.

○ Solo dos estados, “on” o “off”.


○ Indica una figura.
○ Agrupa botones como un grupo.

○ Permite exclusividad de selección con los radio


button.

Cada uno de los elementos de GUI, tiene un conjunto de opciones que


podemos acceder con click derecho.

Pulsamos sobre la opción Property Inspector, el cual nos permite personalizar


cada elemento.
Al hacer clic derecho en el elemento ubicado en el área de diseño, una de las
opciones más importantes es View Callbacks, la cual, al ejecutarla, abre el
archivo .m asociado a nuestro diseño y nos posiciona en la parte del programa
que corresponde a la subrutina que se ejecutará cuando se realice una
determinada acción sobre el elemento que estamos editando.
Por ejemplo, al ejecutar View Callbacks>>Callbacks en el Push Button, nos
ubicamos en la parte del programa:

Una aplicación GUIDE consta de dos archivos: .m y .fig. El archivo .m es el


que contiene el código con las correspondencias de los botones de control de
la interfaz y el archivo .fig contiene los elementos gráficos.

A continuación, comenzaremos con la mostración de los pasos a seguir de


nuestra interfaz gráfica.

Para la presentación de nuestro programa hemos programado una pantalla


donde se ha colocado un tema de nuestro diseño, y una imagen de fondo.
El siguiente paso, tras pulsar en el botón “CONTINUAR” se ha realizado
nuevos GUIDEs en los cuales se usan Panel, Axes, Static Text y Push Button.
27
7. Conclusión

Debemos tener en cuenta la importancia del tratamiento de imágenes


digitales, gracias a esto podemos realizar diferentes acciones sobre la
imagen modelándola para resolver un problema o necesidad.

En nuestro caso la necesidad se trata de conseguir tratar imágenes de


diferentes frutas, con el fin de su posterior reconocimiento. Pero, como era de
prever siempre que te enfrentas a algo nuevo, surgen dudas, dilemas,
problemas, por ello debemos dar gracias a todos los proyectos encontrados en
la red y sobre todos a aquellos mencionados en nuestra bibliografía.

Gracias a las investigaciones realizadas, por todas estas personas y, a las


pruebas obtenidas en el desarrollo de nuestro proyecto, conseguimos sacar
adelante este trabajo que presentamos ante ustedes.

20
El proceso de tratamiento de las imágenes que se desarrolla sigue una serie de
pasos muy importantes para obtener los resultados deseados. El primer
objetivo es obtener una imagen segmentada la cual deberíamos binarizar, para
ello tomamos la capa más influenciable (AZUL) para distinguir el contorno de la
fruta todo por la imagen tener el fondo blanco, binarizarmos la capa y llegados
a este punto tenemos una imagen que trabaja con 0 y 1.

Sabemos que deberíamos trabajar con un tamaño de imagen igual para todas,
pues si no la información obtenida de estas vendría escalada por sus tamaños,
para quitarnos esta barrera normalizamos la imagen, ahora podíamos obtener
sus descriptores, en este aspecto remarcar que el uso de un tamaño
proporcional a
450x600 da mejores resultados que por ejemplo otras normalizaciones probadas
en la parte experimental
[550x500 o 450x450 600x450].

Ya con estos descriptores en nuestro poder (después de definir bastantes) y


usando conocimientos de inteligencia artificial, en este caso en método
KNN, podemos llegar a la correcta calificación y reconocimiento de
imágenes en el que nos enfrascamos con este proyecto.

Esperemos que estas investigaciones puedan ayudar o servir tanto para tema
escolar, como para su
posible desarrollo futuro en busca de mejoras. Las cuales pueden ser
muchísimas, tales como encontrar un método más efectivo de reconocimiento,
realizar el reconocimiento para una variedad más amplia de frutas, insertar este
reconocimiento en aparatos electrónicos con el fin de convertirlos en lo que
ahora se llaman “aparatos inteligentes”.

La interfaz aportada podría usarse en centros educativos, pues de forma


interactiva muestra paso a paso con explicaciones todo el proceso seguido
para poder reconocer diferentes frutas.

Dicho todo esto, agradecer una vez más todas las aportaciones recibidas por
terceros y el trabajo de las personas implicadas en el proyecto, nuestro
equipo tiene el placer de presentaros un sistema de reconocimiento de frut

21
8. Bibliografía y Web
grafía

● Woo Chaw Seng y Seyed Hadi Mirisaee. A new method for fruits
recognition system. Electrical
Engineering and Informatics, 2009. ICEEI '09.
International Conference on.

● Christian Montoya Holguin, Jimmi Alexander Cortés Osorio y José


Andrés Chaves Osorio.
Sistema basado en visión por computador. Ingeniare. Rev. chil, ing.
vol.22 no.4 Arica oct. 2014

● Para el método Otsu:


https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ca
d=rja&uact=8&ved=
0ahUKEwiQtoHYlIjRAhWDmBoKHfcjDUQQFgguMAI&url=http%3A%2F
%2Fwww.ilopez.e
s%2Fproyectos%2Fmatematicas%2FOtsu.pptx&usg=AFQjCNFsCuT-
HeU1Z_5A4Nj9i9y37Fi6
vw&sig2=Z1btu3VrZePTmx5cdgsSNw&bvm=bv.142059868,d.d24

● Continuación método Otsu:


https://es.wikipedia.org/wiki/M%C3%A9todo_del_valor_umbral
● Uso de la APi de Matlab para la compresión de métodos y opciones:
https://es.mathworks.com/
● Para el uso de regionprops:
https://es.mathworks.com/help/images/ref/regionprops.html
● Algunas consultas, material de la asignatura:
http://asignatura.us.es/imagendigital/

● Crear .exe en Matlab:


http://colab-matlab.blogspot.com.es/2012/05/como-realizar-un-ejecutable-
de-un-guide.html

● Para obtener las imágenes de las diferentes imágenes de los limones


https://www.google.es/search?q=google+imagenes&espv=2&biw=1707
&bih=817&site=webhp
&source=lnms&tbm=isch&sa=X&sqi=2&ved=0ahUKEwih8tP9kojRAhVM
WhQKHe_NDVcQ
_AUIBigB#tbm=isch&q=limon

● Para obtener las imágenes de las diferentes imágenes de los plátanos


https://www.google.es/search?q=platano&espv=2&rlz=1C1MSNA_enES
709ES709&biw=1707
&bih=817&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjK7c_Sk4jRAh
UFrxoKHTgUANE Q_AUIBigB

● Para obtener las imágenes de las diferentes imágenes de las fresas


https://www.google.es/search?q=fresas&espv=2&rlz=1C1MSNA_

22
23

También podría gustarte