You are on page 1of 15

HOJAS DE CAF

NDICE
INTRODUCCIN.......................................................................................................................... 2 OBJETIVOS: ................................................................................................................................. 3 MARCO TERICO ....................................................................................................................... 3 ALGORITMOS DEL PROGRAMA ............................................................................................... 5 DIAGRAMO DE FLUJO ................................................................................................................ 6 CDIGO DEL PROGRAMA ......................................................................................................... 7 INTERFAZ .................................................................................................................................. 14 RESULTADOS ............................................................................................................................ 14 CONCLUSIONES Y RECOMENDACIONES ............................................................................... 14 BIBLIOGRAFA .......................................................................................................................... 15

INTRODUCCIN
Para que toda planta pueda desarrollarse normalmente requiere de un suministro constante y balanceado de nutrientes. Tan pronto la carencia de uno o varios elementos nutritivos est en pocas cantidades o bajas concentraciones en el medio donde stas crecen se manifiestan las deficiencias. Cuando esto ocurre el crecimiento y desarrollo normal de las plantas es anormal. En casos severos de una nutricin defectuosa las plantas presentan sntomas visibles relacionados con el o los elementos que estn deficientes. Algunos de los sntomas ms comunes son la clorosis, deformacin y tamao de las hojas, defoliacin, pobre crecimiento, necrosis y muerte regresiva. Arbustos de caf en estado nutricional pobre reducen significativamente su produccin y rendimientos. Las investigaciones y estudios cientficos relacionados con la fertilizacin del cafeto han hecho posible aminorar esos efectos y lograr altas producciones por unidad de rea. Bajo nuestras condiciones de clima, suelos, etc., en la zona cafetalera el xito que se pueda alcanzar en la produccin comercial de caf depender en gran medida de la utilizacin de un programa de abonamiento adecuado a las condiciones de las plantaciones de caf. Un anlisis de control de ver las hojas estn en buen estado es el anlisis por el mtodo de reconocimiento por imgenes y saber el estado en que se encuentran, por su color y forma. Las hojas en buen estado indican una buena produccin del fruto en este caso el caf.

OBJETIVOS:
Elaborar un programa el cual sea de utilidad en la botnica de clasificacin de hojas. Aumentar nuestra habilidad en la elaboracin de un algoritmo en el procesamiento de imgenes. Adquirir mejor destreza en el uso del matlab. Aprender sobre algunas enfermedades en las hojas de caf.

MARCO TERICO
El CAFETO

FIGURA N 1: Planta Cafeto

Se le conoce como cafeto o planta productora de caf a un arbusto que se da en la regin tropical de la tierra perteneciente a la familia de las rubiceas. Abarca 500 gneros y 8.000 especies. Uno de esos gneros es el Coffea, que lo constituyen rboles, arbustos, y bejucos, y comprende unas 10 especies civilizadas, es decir, cultivadas por el hombre y 50 especies silvestres. Los granos de caf o semillas estn contenidos en el fruto del arbusto, los cuales en estado de madurez toman un color rojizo y se les denomina "cereza". Cada una de ellas consiste en una piel exterior que envuelve una pulpa dulce. Los cafetos son rboles o arbustos reconocibles por sus hojas simples, opuestas y con estpulas frecuentemente bien desarrolladas. Sus flores son pequeas, tubulosas y blancas. El fruto es una drupa con dos nueces y con pulpa azucarada. La taxonoma del caf, su botnica y fisiologa, y las caractersticas de la planta, como su raz, tallo y ramas, hojas, flores, frutos y semillas son particulares y son objeto de anlisis e investigacin particular por centros especializados como Cenicaf.

La hoja es un rgano fundamental en la planta porque en ella se realizan los procesos de fotosntesis, transpiracin y respiracin. En las ramas, un par de hojas aparece cada 15 20 das aproximadamente. Independiente de la densidad de siembra, un cafeto de un ao de edad tiene 440 hojas en promedio. A partir del segundo ao de edad, la densidad de siembra, al igual que la condicin de sol o sombra, influyen notablemente en la cantidad de hojas por planta. Las hojas duran en un cafetal alrededor de un ao. La duracin de las hojas se reduce con la sequa, con las altas temperaturas y con una mala nutricin. Fertilizacin, prevencin de plagas y enfermedades: Al momento de la siembra debe aplicarse un fertilizante alto en fsforo recomendable para caf en desarrollo. Tambin la aplicacin de nematicida insecticida en el momento de la siembra, para la prevencin de ataques ocasionados por nematodos o insectos. Poda Luego de un nmero de cosechas variable, la planta entra en un agotamiento productivo que requiere del inicio de la poda. La planta de caf presenta dos tipos de crecimiento, uno hacia arriba o vertical llamado ortotrpico y otro hacia los lados denominado plagiotrpico, donde se forman las yemas florales. La altura de la poda puede variar dependiendo del estado de agotamiento que presenta la planta. Se deben dejar todas las bandolas con capacidad productiva por debajo del corte. Poda Selectiva Consiste en la seleccin de las plantas agotadas para realizar la poda en forma selectiva. La altura de poda va a depender del grado de agotamiento. Poda total por lote En este sistema la poda se realiza en lotes completos indistintamente de la extensin del lote o la condicin de la planta. Enfermedades: a) Ojo de gallo Es una enfermedad que se presenta con mayor importancia en zonas altas de cultivo, se ve favorecida por condiciones de precipitaciones constantes, alta humedad y temperaturas frescas. Los sntomas consisten en manchas circulares de color cafgrisceo que se desarrollan sobre las hojas, los tallos tiernos y los frutos; donde se forman las gemas (estructuras de diseminacin de la enfermedad) durante la poca lluviosa.

FIGURA N 2: Hoja de cafeto con enfermedad

b) La Roya del Caf Es una enfermedad que esta presente en todo el pas y durante la mayor parte del ao. Su importancia es mayor en zonas cafetaleras de altura media y baja. La enfermedad se ve favorecida por las temperaturas clidas y ambientes hmedos y lluviosos. Los sntomas consisten en la formacin de manchas con apariencia amarillenta en la parte superior de la hoja y la formacin de un polvo anaranjado en la parte inferior (envs). Las lesiones viejas pueden mostrar un color negro con borde amarillento, sobre todo al inicio de la poca lluviosa. c) La Llaga Macana Es una enfermedad que est presente en gran parte del pas, pero se presenta con mayor frecuencia en zonas de altura y cafetales viejos. La enfermedad se ve favorecida principalmente por ambientes hmedos y lluviosos, tanto por temperaturas clidas como fras. Los sntomas consisten en la formacin de lesiones irregulares, endurecidas, de color pardo oscuro o negro, que avanzan longitudinal o transversalmente en el tallo.

ALGORITMOS DEL PROGRAMA


Con el programa se da reconocimiento de hojas en la base de datos de imgenes de gran tamao, los mtodos basados en el histograma han demostrado sencillez y utilidad. En un principio, esta idea estaba basada en histogramas de color, ya que las hojas de acuerdo a su tonalidad de verde tienen una clasificacin especifica. Este algoritmo se presenta la primera parte de nuestra propuesta tcnica denominada como Reconocimiento de Hojas a base de Histograma procesado". En el programa se utiliza una escala de grises de 256 niveles. La frecuencia de cada nivel de gris se calcula y almacenan en vectores para su posterior procesamiento. En segundo lugar, la media de nueve frecuencias consecutivas de los vectores almacenados se calcula y se almacenan en otros vectores para su uso posterior prueba. Este vector medio se utiliza para el clculo de las diferencias absolutas entre la media de las imgenes y la imagen de prueba. Finalmente la diferencia mnima encontrado identifica la clase corresponde con la imagen de prueba.

DIAGRAMA GENERAL DEL PROGRAMA


Obtencin de bordes y conteo de imperfecciones

Inicializacin

Inicio de variables Lectura de datos

Ingreso de muestra

Convierte a grises y binario

Resultado De analisis

FIGURA N 3: Diagrama general

DIAGRAMO DE FLUJO
INICIO

Inicia y Lee Datos

Botn de Reconocimiento de imagen SI Llevar a escala de grises y binario Filtra y obtiene bordes Conteo de imperfecciones internas Bueno Muestra Hoja indicando buen estado Estado de Hoja Malo

NO

Muestra hoja y posible problema

Finaliza Muestreo

FIN

FIGURA N 4: Diagrama de Flujo

CDIGO DEL PROGRAMA


function varargout = GUI_cafe(varargin) %GUI_CAFE M-file for GUI_cafe.fig %GUI_CAFE, by itself, creates a new GUI_CAFE or raises the existing % singleton*. % %H = GUI_CAFE returns the handle to a new GUI_CAFE or the handle to % the existing singleton*. % %GUI_CAFE('Property','Value',...) creates a new GUI_CAFE using the % given property value pairs. Unrecognized properties are passed via % varargin to GUI_cafe_OpeningFcn. This calling syntax produces a % warning when there is an existing singleton*. % %GUI_CAFE('CALLBACK') and GUI_CAFE('CALLBACK',hObject,...) call the %local function named CALLBACK in GUI_CAFE.M with the given input % arguments. % % *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 GUI_cafe % Last Modified by GUIDE v2.5 19-Jan-2012 17:43:51 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @GUI_cafe_OpeningFcn, ... 'gui_OutputFcn', @GUI_cafe_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 GUI_cafe is made visible. function GUI_cafe_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 unrecognized PropertyName/PropertyValue pairs from the % command line (see VARARGIN)

fondo=imread('cafeto.jpg'); set(handles.axes18)%,'HandleVisibility','ON'); axes(handles.axes18); image(fondo); axis equal; axis tight; axis off;

im_original=imread('blanco.jpg'); set(handles.orgIm,'HandleVisibility','ON'); axes(handles.orgIm); image(im_original); axis equal; axis tight; axis off; set(handles.orgIm,'HandleVisibility','OFF');

% Choose default command line output for GUI_cafe handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes GUI_cafe wait for user response (see UIRESUME) % uiwait(handles.figure1);

% inicializa parametros por defecto initialize_gui(hObject, handles, false); set(handles.uipanel1,'SelectionChangeFcn',@uipanel1_SelectionChangeFcn);

% --- Outputs from this function are returned to the command line. function varargout = GUI_cafe_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;

function inEdit_Callback(hObject, eventdata, handles) % hObject handle to inEdit (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 inEdit as text % str2double(get(hObject,'String')) returns contents of inEdit as a double

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

function inEdit_CreateFcn(hObject, eventdata, handles) % hObject handle to inEdit (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 set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end

% --- Executes on button press in loadPush.

function Pixeles_Callback(hObject, eventdata, handles) % hObject handle to Pixeles (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 Pixeles as text % str2double(get(hObject,'String')) returns contents of Pixeles as a double pixeles = str2double(get(hObject, 'String')); % Captura el numero de pixeles de los objetos que se desea filtrar en la imagen if isnan(pixeles) set(hObject, 'String', 25); errordlg('Input must be a number','Error'); end handles.metricdata.pixeles = pixeles; guidata(hObject,handles) % --- Executes on button press in appPush. function appPush_Callback(hObject, eventdata, handles) % hObject handle to appPush (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Esta funcion verifica si existen fallas en las imagenes de los cafe % almacenados en una carpeta

% Se almacena en una matriz todas la imagenes que hay en la carpeta fileFolder = fullfile(matlabroot,'work'); dirOutput = dir(fullfile(fileFolder,'v*.jpg')); fileNames = {dirOutput.name}' tam = size(fileNames); a=0; b=0; i=1; if tam(1)>1 while i<=tam(1) % Recorre la carpeta que contiene las imagenes de los cafe

im = imread(fileNames{i}); %Presenta la imagen del envase en el Menu principal set(handles.orgIm,'HandleVisibility','ON'); axes(handles.orgIm); image(im); axis equal; axis tight; axis off; set(handles.orgIm,'HandleVisibility','OFF'); set(handles.P_imagen, 'String', fileNames{i}); im2=im(1:2:end, 1:2:end, 1:1:end); % Se reduce a la mitad la imagen im1=rgb2gray(im2); im1=medfilt2(im1,[3 3]); %Remueve el ruido de la imagen BW = edge(im1,handles.metricdata.operador); %Detecta los bordes segun el operador seleccionado msk=[0 0 0 0 0; 0 1 1 1 0; 0 1 1 1 0; 0 1 1 1 0; 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %Suavizar imagen para reducir el nmero de componentes conectados wnoise=bwareaopen(B,handles.metricdata.pixeles); %Remueve objetos de la imagen con un numero menor de pixeles determinado Im_cut=wnoise(185:685,515:765); [L,num] = bwlabel(Im_cut,4); if num ~= 0 % Si el envase tiene fallas se presenta los bordes de la imagen muestreada figure, imshow(wnoise); text(size(wnoise,2),size(wnoise,1)+15, ... 'Envase con fallas', ... 'FontSize',12,'HorizontalAlignment','right'); text(size(wnoise,3),size(wnoise,1)+25, .... fileNames(i), ... 'FontSize',12,'HorizontalAlignment','right'); set(handles.Estado_cafe, 'String', 'Envase con fallas'); a=a+1; else set(handles.Estado_cafe, 'String', 'Envase en buen estado'); b=b+1; end i=i+1; end RESULTS=[a b]; pie(RESULTS);title('RESULTADOS');colormap summer; legend('Cafe defectuosos','Cafe en buen estado'); else im=imread ('no.jpg'); set(handles.orgIm,'HandleVisibility','ON'); axes(handles.orgIm); image(im); axis equal; axis tight; axis off; set(handles.orgIm,'HandleVisibility','OFF'); set(handles.P_imagen, 'String', ''); set(handles.Estado_cafe, 'String', 'No se encuentran imagenes almacenadas');

end % --- Executes on button press in closePush. function closePush_Callback(hObject, eventdata, handles) % hObject handle to closePush (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close all;

% --- Executes during object creation, after setting all properties. function Pixeles_CreateFcn(hObject, eventdata, handles) % hObject handle to Pixeles (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 initialize_gui(fig_handle, handles, isreset) % If the metricdata field is present and the reset flag is false, it means % we are we are just re-initializing a GUI by calling it from the cmd line % while it is up. So, bail out as we dont want to reset the data. if isfield(handles, 'metricdata') && ~isreset return; end %Configuracion de parametros por defecto handles.metricdata.pixeles = 20; handles.metricdata.operador = 'Prewitt'; set(handles.Pixeles, 'String', handles.metricdata.pixeles); %%set(handles.uipanel1, 'SelectedObject', handles.prewitt); set(handles.orgIm,'HandleVisibility','ON'); axes(handles.orgIm); axis equal; axis tight; %axis off; set(handles.orgIm,'HandleVisibility','OFF'); % Update handles structure guidata(handles.figure1, handles); function uipanel1_SelectionChangeFcn(hObject, eventdata) % hObject handle to the selected object in unitgroup % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %Coloca el nombre correspondiente a la variable segun el operador %seleccionado handles = guidata(hObject); if (hObject == handles.prewitt) handles.metricdata.operador='Prewitt';

else if (hObject == handles.sobel) handles.metricdata.operador='Sobel'; else handles.metricdata.operador='Roberts'; end end guidata(hObject,handles)

function Nombre_envase_Callback(hObject, eventdata, handles) % hObject handle to Nombre_envase (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 Nombre_envase as text % str2double(get(hObject,'String')) returns contents of Nombre_envase as a double

% --- Executes during object creation, after setting all properties. function Nombre_envase_CreateFcn(hObject, eventdata, handles) % hObject handle to Nombre_envase (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 VerificarImagen. function VerificarImagen_Callback(hObject, eventdata, handles) % hObject handle to VerificarImagen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Esta funcion verifica si existen fallas en el envase

image_file = get(handles.Nombre_envase,'String'); if ~isempty(image_file) im_original=imread(char(image_file)); set(handles.orgIm,'HandleVisibility','ON'); axes(handles.orgIm); image(im_original); axis equal; axis tight; axis off; set(handles.orgIm,'HandleVisibility','OFF'); end; set(handles.P_imagen, 'String', image_file); size(im_original) im2=im_original(1:2:end, 1:2:end, 1:1:end); %%Reducimos la imagen a la mitad size(im2)

im1=rgb2gray(im2); %%COnversion de RGB a BW im1=medfilt2(im1,[3 3]); %Median filtering the image to remove noise% prueba=handles.metricdata.operador; BW = edge(im1,prueba); %finding edges %msk=[1 1 1 1 1; % 1 1 1 1 1; % 1 1 1 1 1; % 1 1 1 1 1; % 1 1 1 1 1;]; %msk=[0 0 0 0 0; msk=[ 1 1 1 ; 111; 1 1 1 ]; % 0 0 0 0 0;]; B=conv2(double(BW),double(msk)); %Suavizar imagen para reducir el nmero de componentes conectados wnoise=bwareaopen(B,handles.metricdata.pixeles); %Im_cut=wnoise(185:685,515:765); Im_cut=wnoise(85:785,415:865); im5=wnoise; [L,num] = bwlabel(Im_cut,4); num if num > 32 %presenta la imagen procesada en el menu %figure, imshow(wnoise); text(size(wnoise,2),size(wnoise,1)+15, ... 'Fruta con defectos', ... 'FontSize',12,'HorizontalAlignment','right'); text(size(wnoise,3),size(wnoise,1)+25, .... image_file, ... 'FontSize',12,'HorizontalAlignment','right'); set(handles.Estado_cafe, 'String', 'Hoja Defectuosa'); axes(handles.axes16); colormap(gray); imagesc(wnoise); axis equal; axis tight; axis off else set(handles.Estado_cafe, 'String', 'Hoja sana'); %figure, imshow(wnoise); axes(handles.axes16); colormap(gray); imagesc(wnoise); axis off end

% --- Executes during object creation, after setting all properties. function appPush_CreateFcn(hObject, eventdata, handles) % hObject handle to appPush (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

INTERFAZ

FIGURA N 5: Interfas

RESULTADOS
Se pudo obtener buenos resultados en el reconocimiento de datos. El reconocimiento identifica si las hojas estn en buen estado o estn dentro de lo permitido. Este programa podra mejorarse hallando el centro de gravedad y los bordes de cada hoja, para su futuro procesamiento.

CONCLUSIONES Y RECOMENDACIONES
Se logr hacer un programa para el anlisis de calidad de hojas de caf. Se aprendi a procesar imgenes segn la cantidad de pixeles. Matlab Guide ayuda a procesar imgenes fcilmente. Se puede aprender Matlab guide de video tutoriales que estn en internet.

BIBLIOGRAFA
Tutoriales de Matlab. Descripcin, comparacin y ejemplos de uso de las funciones de la toolbox de procesado digital de imgenes de MATLAB, Eduardo Laorden Fiter. Espaa. Mtodos de anlisis de imgenes. Extraccin de caractersticas. Jos Luis Alba, Vigo Jess Cid. Espaa. http://www.youtube.com/watch?v=ANxZ42A4qmo https://www.youtube.com/watch?v=nTU5xF1eeTM https://www.youtube.com/watch?v=UYIb0TfJ-lc

You might also like