Está en la página 1de 23

UNIVERSIDAD NACIONAL DE SAN AGUSTIN

FACULTAD DE INGENIERA DE PRODUCCIN Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERA
ELECTRONICA

CURSO: PROCESAMIENTO DIGITAL DE IMAGENES


ING. RAL YANYACHI
CONTROL DE CALDAD DE NARANJAS PARA LA
EXPORTACIN

MAMANI QUISPE JORGE LUIS


2014-II

Tabla de contenido
1.

2.

Preliminares: ......................................................................................................................... 3
1.1.

Planteamiento del Problema: ....................................................................................... 3

1.2.

Objetivos ....................................................................................................................... 4

Materiales ............................................................................................................................. 5
2.1.

3.

4.

Matlab ........................................................................................................................... 5

Mtodos: ............................................................................................................................... 7
3.1.

Segmentacin: ............................................................................................................... 7

3.2.

Operaciones Morfolgicas ............................................................................................ 8

3.3.

Deteccin de Contornos ................................................................................................ 8

Resultados ............................................................................................................................. 9
4.1.

Diseo del sistema de adquisicin ................................................................................ 9

4.2.

Interfaz Grfica ............................................................................................................ 12

4.3.

Imgenes Procesadas .................................................................................................. 15

5.

Conclusiones........................................................................................................................ 16

6.

Bibliografa .......................................................................................................................... 17

A. Anexos ..................................................................................................................................... 18

1. Preliminares:
1.1.

Planteamiento del Problema:

El desarrollo de tcnicas de visin por computador en la inspeccin de la calidad de los


productos agrcolas se debe a la necesidad de encontrar una alternativa a los mtodos
de inspeccin manual tradicionales para eliminar el contacto con el producto, aumentar
la fiabilidad y objetividad, introducir flexibilidad a las lneas de confeccin e incrementar
la productividad y competitividad de las empresas nacionales.
Uno de los factores que ms influye en la calidad y el precio de la fruta fresca es la presencia
de defectos en la piel de las frutas, dado que la mayora de los consumidores asocia
calidad con buen aspecto y ausencia total de defectos externos.
Una de las tareas clave es la clasificacin de los frutos de acuerdo a requerimientos
diversos ,como pueden ser tamao, calibre y color. La inspeccin es visual y suele ser llevada a
cabo por personal experimentado. Se trata, sin embargo, de una tarea repetitiva,
propensa a errores, que acarrea perjuicios econmicos, pero que pueden ser
automatizadas usando tcnicas de visin artificial.
En general, los sistemas artificiales de clasificacin no slo pueden sustituir a la
inspeccin manual, sino que tambin permiten mejorar sus capacidades. El desarrollo de
sistemas de este tipo adaptados a nuestra agricultura es fundamental para que nuestras
empresas productoras adquieran ventajas competitivas esenciales frente a otros pases
con menores costes de produccin.
Se emplean imgenes de frutas adquiridas mediante una cmara digital, las que se someten a
un procesamiento previo para obtener imgenes binarias, que luego son inspeccionadas
usando un algoritmo recursivo de etiquetado de componentes conexas previamente
desarrollado. Se obtiene as una lista donde constan los pxeles oscuros, los que son
considerados defectos.
Calculando el rea de tales daos, as como el porcentaje respecto del total, es posible
automatizar una parte de la clasificacin.

1.2.

Objetivos

Objetivo General:
Implementar un programa que permita discriminar si una fruta (en este caso naranjas)
cumple con los estndares de calidad, asimismo de implementar una interfaz grfica para
el usuario que le permita manejar con facilidad el programa.
Objetivos Especficos:

Implementar un programa que permita la bsqueda de defectos en la superficie


de la fruta.

Realizar un programa que en base a las caractersticas de la fruta (tamao, color y


frescura) discrimine si la fruta es apta o no para la exportacin.

Disear el sistema de adquisicin de imgenes de una planta real.

2. Materiales
2.1.

Matlab

MATLAB (abreviatura de MATrixLABoratory, "laboratorio de matrices") es un software


matemtico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de
programacin propio (lenguaje M). Est disponible para las plataformas de Unix, Windows y
Apple. Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la
representacin de datos y funciones, la implementacin de algoritmos, la creacin de
interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes.
Adems, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas
(toolboxes).

2.1.1.

GUIDE:

Es un ambiente grfico de desarrollo de interfaces en Matlab, est equipado con un set de


herramientas para crear interfaces graficas de usuario (GUI). Estas herramientas simplifican el
proceso de crear y programar GUIs.
Usando el editor de diseo de GUIDE, se puede agregar elementos grficos en el rea de
diseo como axes, panels, buttons, text fields, sliders.tambin se puede crear Mens y
context menus , Desde el Editor de Diseo se puede ditar el tamao del GUI, modificar la
apariencia de os componentes, alinearlos, realizar una jerarqua en los componentes, entre
otros.

2.1.2. Toolbox de Procesamiento de Imgenes:


El toolbox de Procesamiento de Imgenes permite el analizar, procesar y desarrollar
algoritmos relacionados al tratamiento de imgenes.
Proporciona un juego comprensivo de algoritmos, funciones y aplicaciones para el
procesamiento, anlisis, visualizacin, y desarrollo de algoritmos. Se puede realizar el anlisis,
segmentacin, mejora, reduccin de ruido, transformaciones geomtricas y registro de la
imagen.
Varias funciones del toolbox soportan procesadores multi-ncleo, GPUs, y generacin de
cdigo C. Permite trabajar con diversos formatos de imagen, incluyendo los que tiene un alto
rango dinmico, resolucin en gigapixeles, y tomografas.
Funciones y aplicaciones de visualizacin permiten explorar imgenes y videos, examinar una
regin de pixeles, justar el color y contraste, crear contornos o histogramas, y manipular
regiones de inters. El toolbox incluye flujos de trabajo para procesar, mostrar y navegar
imgenes de gran tamao.

3. Mtodos:
3.1.

Segmentacin:

El primer paso en el anlisis de imgenes generalmente es la segmentacin de la imagen. Este


procedimiento subdivide la imagen en las partes que la constituyen u objetos. El nivel en que
se realiza la subdivisin depende del problema a resolver. Es decir, la segmentacin debera
pararse cuando los objetos de inters en una aplicacin han sido aislados .[1][Gonzlez,
Woods,1993]

Despus de adquirir y preparar las imgenes se procede a investigar las transformaciones ms


convenientes y obtener aquellos parmetros que pueden ser tiles para la elaboracin del
algoritmo. Antes, sin embargo, debe limitarse la zona de trabajo del programa al lugar de la
imagen donde se localiza la naranja, ya que ste y no el fondo es la zona de inters. Por este
motivo se procede al estudio de tcnicas de segmentacin con el objetivo claro de separar la
fruta del fondo de la imagen aceptando como vlida una imagen segmentada que no excluya
los defectos del naranja. Se da por entendido que no es necesario que la segmentacin sea
perfecta, pues no es este el objetivo del proyecto, pero si debe ser suficiente para no excluir
informacin.

3.1.1.

Seleccin del espacio de color.

Antes de proceder a la segmentacin de la imagen se tiene que decidir el espacio de color


desde el cual se trabajar y que debe ser congruente con los espacios que Matlab permite:
RGB, color indexado, HSV, niveles de gris, binaria...
Despus de realizar diversas transformaciones se comprueba que el modelo HSV es el ms
adecuado para el anlisis de imgenes y su tratamiento. An as las imgenes en niveles de gris
no se descartan para comprobaciones o anlisis extras.

3.1.2. Thresholding. Determinacin de umbrales

De los mtodos expuestos para la segmentacin anteriormente se ha escogido la


segmentacin por thresholding o uso de umbrales. La segmentacin se consigue barriendo la
imagen pxel a pxel i etiquetando cada pxel como objeto o fondo, segn si el valor del
pxel es mayor o inferior que un cierto valor L llamado umbral, aunque tambin es posible el
uso de ms de un umbral.

3.2.

Operaciones Morfolgicas

En principio sera lgico escoger la imagen H para la segmentacin debido a que el naranja
aparece como blanco y el fondo permanece negro en su binarizacin. An as no podemos
descartar la imagen S debido a los resultados que se expondrn a continuacin.
Aunque los resultados de la binarizacin son aceptables es necesario eliminar el ruido de la
imagen y rellenar huecos en el objeto a segmentar.
Esta operacin morfolgica equivale a la aplicacin de una erosin y una posterior dilatacin a
la imagen con el mismo elemento estructurante y se realiza con el objetivo de eliminar
aquellos objetos o zonas de la imagen ms pequeas que el elemento estructurante circular
escogido. Las zonas eliminadas son aquellas mas pequeas que el elemento estructurante y de
colores claros (blanco en caso de imgenes binarias).

3.3.

Deteccin de Contornos

El objetivo de este apartado es encontrar las caractersticas necesarias para poder establecer
una discriminacin entre naranjas sanas y naranjas defectuosas. Este paso se determina a
partir de un cierto valor que relaciona los pxeles totales del naranja con aquellos que
pertenecen a un defecto.

Cuando el naranja ha sido segmentado del resto de la imagen el siguiente paso se basa en la
bsqueda de defectos o imperfecciones en la pieza. stos se caracterizan por una coloracin y
textura diferenciales dentro de la homogeneidad del naranja.
Como se ha comentado en apartados anteriores, este estudio basa la toma de decisiones a
base de pruebas sobre la imagen e intentando buscar un elemento comn que sea vlido para
llegar al resultado deseado.

4. Resultados
4.1.

Diseo del sistema de adquisicin

Descripcin del sistema diseado:


Las naranjas pasan a una faja transportadora hacia un tnel en donde se instalar la
cmara fotogrfica. Unos sensores infrarrojos determinaran si la naranja est en la
zona de captura de imagen, si los sensores se activan, la cmara tomar una fotografa
de la zona de captura.
La informacin se enviar a Matlab y con la aplicacin desarrollada se determinar si la
naranja est dentro de los parmetros de tamao. Segn sea el resultado, apto o no
apto la aplicacin enviar seales de control al microcontrolador que controla al

motor de las compuertas de seleccin, las cuales se encargan de dirigir la naranja hacia
el contenedor correcto.
Los elementos que forman parte de la escena para nuestro sistema de control de
calidad de naranjas se muestran en el siguiente diagrama:

Calibracin de la cmara:
La cmara fotogrfica a usar es unaWebCamLogiTech cuyas caractersticas se explican en el
captulo de materiales y equipos.
Calibrar una cmara significa hallar sus parmetros intrnsecos y extrnsecos, los cuales
permiten conocer el sistema de coordenadas de la cmara y construir un modelo de cmo se
proyecta el entorno 3D (escena) a la imagen 2D.

El Microcontrolador
En este proceso el microcontrolador tiene las siguientes funciones:

Leer el estado de los sensores infrarrojos y segn esta informacin determinar si la


naranja se encuentra en la zona de captura.
Indicar a la aplicacin de Matlab que se debe iniciar una nueva captura de imagen y su
respectivo procesamiento.
Recibir el resultado del procesamiento de la imagen y generar la seal de control del
motor que mover la compuerta de seleccin y direccionara la naranja a su respectivo
contenedor.

Por lo expuesto anteriormente seleccionamos un PIC de Microchip de rango medio con


mdulo de comunicacin USART, y de reducidas dimensiones un PIC 16F676.
Diagrama de flujo de la programacin del PIC:

4.2.

Interfaz Grfica

DIAGRAMA DE FLUJO DE LA INTERFAZ


INICIO

INICIALIZACION
DE DATOS

BOTON1 =
PRESIONADO
?

INGRESAR
IMAGEN

BOTON2=
PRESIONADO
?

PROCESAR

BOTON3 =
PRESIONADO
?

OBTENER
RESULTADOS

FIN

DIAGRAMA DE FLUJO DEL PROCESAMIENTO DE LA IMAGEN

Bloque de
procesamiento

Diferenciacin del fondo de


la imagen con la regin de
inters
Conversin a escala de grises

Segmentacin de la Imagen
Deteccin de bordes de la
imagen, para detectar
regiones podridas

Clasificacin de la imagen de
entrada. Fruto apto, o no
apto

4.3.

Imgenes Procesadas

Deteccin de impurezas
En las siguientes imgenes se muestran los resultados del procesamiento, se observa
que el programa est detectando los bordes de las imgenes.

5. Conclusiones

Los resultados del algoritmo selector estn determinados en gran medida por dos
aspectos: variedad de la fruta e iluminacin. La variedad de la fruta resulta un
problema a tener en cuenta a la hora de determinar los umbrales de binarizacin.
No es lo mismo una fruta de tonos amarillentos que una de tonos rojizos.

La iluminacin juega un papel muy importante en todos los sistemas de


reconocimiento de imgenes. En el caso del selector se comprueba que su grado
de acierto se ve claramente afectado por ese parmetro. Asimismo, como ya se ha
comentado, el aspecto de la iluminacin no debera ser preocupante pues para la
funcin del sistema en una cadena de una empresa las condiciones de luz serian
invariantes y los parmetros en los que influye (tales como los umbrales de la
binarizacin) podran ser fijados ms cmodamente.

Un aspecto que se ha descartado para este estudio es la tridimensionalidad de la


fruta, que se solventa aceptando el hecho de que las imgenes de una naranja son
captadas desde diferentes ngulos y procesadas por separado para dar una
clasificacin final. Del mismo modo se supone que la naranja circula a travs de la
cabina a velocidad constante y que los rodillos de transporte permiten que la
naranja est situada siempre en la misma posicin, tal como se especifica para
algunas de estas mquinas. Tambin es necesario especificar que las imgenes no
necesitan de ningn tratamiento previo aparte del escalado puesto que en un
selector real no se aplicara ningn tipo de correccin artstica que ralentice la
cadena.

6. Bibliografa

GONZALEZ, R.C; WOODS, R.E , Digital Image Processing, AddisonWesley Publishing Company, pp 413-415, 1993
Image Processing Toolbox Users Guide Mathworks

Bibliografa consultada en Internet

http://www.kramirez.net/Robotica/Material/Presentaciones/VisionArtificial.pdf

http://tesis.pucp.edu.pe/repositorio/bitstream/handle/123456789/68/SOBRADO_EDD
IE_VISION_ARTIFICIAL_BRAZO_ROBOT.pdf?sequence=2

en.wikipedia.org/wiki/HSV_color_space
en.wikipedia.org/wiki/thresholding_(image_processing)

A. Anexos
A.1 Cdigos Matlab
A.1.1.Cdigos de Procesamiento de Imagen
%
CONTROL_NARANJA
%
CALCULO DEL AREA DE LA NARANJA
function va = areas(handles,ddd)
[labeled,numObjects] = bwlabel(ddd,4)
graindata = regionprops(labeled,'basic')
va=max([graindata.Area])
%
DETECCIN DE BORDES
function G = bordes(infile)
a=imread(infile);
b=rgb2gray(a);
G=edge(b,'canny');
imshow(b)

end
%

SEGMENTACIN DE LA IMAGEN

function Z = segmentacion(infile)
b=imread(infile);
c=rgb2gray(b);
Z=double(c);
[X,Y]=size(Z);
for i=1:X
for j=1:Y
if Z(i,j) > 75
Z(i,j)=250;
else
Z(i,j)= 0;
end
end
end
end
%

SELECTOR DE FRUTA.

function histo(handles,val)

if (val > 50)


msgbox(' PRODUCTO
else
msgbox(' PRODUCTO

APTO

');

NO APTO ');

end

A.2.2. Cdigo de la Interfaz:


function varargout = CONTROL_NARANJA(varargin)
% CONTROL_NARANJA M-file for CONTROL_NARANJA.fig
%
CONTROL_NARANJA, by itself, creates a new CONTROL_NARANJA or
raises the existing
%
singleton*.
%
%
H = CONTROL_NARANJA returns the handle to a new CONTROL_NARANJA
or the handle to
%
the existing singleton*.
%
%
CONTROL_NARANJA('CALLBACK',hObject,eventData,handles,...) calls
the local
%
function named CALLBACK in CONTROL_NARANJA.M with the given
input arguments.
%
%
CONTROL_NARANJA('Property','Value',...) creates a new
CONTROL_NARANJA or raises the
%
existing singleton*. Starting from the left, property value
pairs are
%
applied to the GUI before CONTROL_NARANJA_OpeningFunction gets
called. An
%
unrecognized property name or invalid value makes property
application
%
stop. All inputs are passed to CONTROL_NARANJA_OpeningFcn via
varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help CONTROL_NARANJA
% Last Modified by GUIDE v2.5 21-Apr-2007 00:38:51
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @CONTROL_NARANJA_OpeningFcn, ...
'gui_OutputFcn', @CONTROL_NARANJA_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before CONTROL_NARANJA is made visible.

function CONTROL_NARANJA_OpeningFcn(hObject, eventdata, handles,


varargin)
% This function has no output args, see OutputFcn.
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% varargin
command line arguments to CONTROL_NARANJA (see VARARGIN)
% Choose default command line output for CONTROL_NARANJA
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
fondo=imread('back.JPG');
imagen (handles.imagen7)
imshow(fondo)
axis off
handles.output = hObject;

% UIWAIT makes CONTROL_NARANJA wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = CONTROL_NARANJA_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;

% --- Executes on button press in CARGA.


function CARGA_Callback(hObject, eventdata, handles)
% hObject
handle to CARGA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global imagen B fichero
[fname,pname] = uigetfile('*.jpg','Abrir imagen');
fichero = [pname,fname];
[O] = INICIO(fichero); %activa un m filee*
ActivarTodo(handles);
imagen = O;
[a b] = size(imagen);
%crear matriz de igual dimension
B = zeros(a,b);
%matriz ceros
%original
imagen(handles.CARGAIMAGEN);
%elijo el imagen Original
colormap(gray);
%eleijo el colormap gray
imagesc(O);
%muestro imagen con el colormap
concurrente
axis off
function ActivarTodo(handles)
set(handles.PROCESO,'Enable','on');
% --- Executes during object creation, after setting all properties.
function CARGAIMAGEN_CreateFcn(hObject, eventdata, handles)
% hObject
handle to CARGAIMAGEN (see GCBO)

% eventdata
% handles
called

reserved - to be defined in a future version of MATLAB


empty - handles not created until after all CreateFcns

% Hint: place code in OpeningFcn to populate CARGAIMAGEN


% --- Executes on button press in PROCESO.
function PROCESO_Callback(hObject, eventdata, handles)
% hObject
handle to PROCESO (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global
fichero imag IMF
[Z] = segmentacion(fichero);
imag = Z;
[a b] = size(imag);
B = zeros(a,b);
[G] = bordes(fichero);
imagen(handles.PROCESADO);
colormap(gray);
imagesc(G);
concurrente
axis off

%activa un m file*
%crear matriz de igual dimension
%matriz ceros
%activa un m file*
%elijo el imagen Original
%eleijo el colormap gray
%muestro imagen con el colormap

% --- Executes during object creation, after setting all properties.


function gramo_CreateFcn(hObject, eventdata, handles)
% hObject
handle to gramo (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
% hObject
handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
%
str2double(get(hObject,'String')) returns contents of edit2
as a double

% --- Executes during object creation, after setting all properties.


function edit2_CreateFcn(hObject, eventdata, handles)
% hObject
handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in estimacion.


function estimacion_Callback(hObject, eventdata, handles)
% hObject
handle to estimacion (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
global
fichero imag
[labeled,numObjects] = bwlabel(imag,4);
graindata = regionprops(labeled,'basic');
va=max([graindata.Area]);
val= va*0.01
imgarea = num2str(round(val));
set(handles.VALOR,'String',imgarea);
imagen(handles.FINAL);
colormap(gray);
imagesc(imag);
axis off
val2= 250*val/35
Gramos = num2str(round(val2));
set(handles.gramo,'String',Gramos);
histo(handles,val)

También podría gustarte