Proyecto 3

Anuncio
Reconocimiento de
Enfermedades en Plantas
PG003
Francisco R. Uribe Cornejo
375673
Cuernavaca, Mor., 25 de Noviembre, 2009
Agenda
Introducción
Metodología
Implementación
Resultados
Conclusiones
Introducción
El Plan Nacional de Desarrollo 20072012 plantea como premisa básica la
búsqueda del Desarrollo Humano
Sustentable, correspondiendo a esto el
Programa Especial Concurrente para el
Desarrollo Rural Sustentable 2007-2012
(PEC 2007-2012) establece un conjunto
de estrategias y alternativas para
reactivar el agro mexicano entre las que
podemos resaltar la protección al país
de plagas y enfermedades y mejorar la
situación sanitaria.
Problemática
Las pérdidas que ocasionan las plagas y enfermedades en los cultivos de los
países desarrollados se ubican entre 10 y 20 por ciento de la producción
[Oerke94], convirtiéndose en uno de los principales inconvenientes para los
productores. Por ello, el diagnóstico y control de enfermedades es uno de los
retos más importantes en los sistemas de producción de plantas cultivadas en
el país.
Justificación
Las imágenes de las plantas pueden ser una fuente muy
valiosa de información respecto a cambios en el crecimiento
del cultivo, estado nutricional, incidencia de enfermedades y
plagas, rendimiento y propiedades del suelo [Lee07].
Justificación
Un sistema de visión computacional para diagnóstico de enfermedades en
plantas de invernaderos se está desarrollando en esta institución
Nuestro proyecto
Objetivos
General
Reconocer la forma geométrica de una hoja de una especie de planta para
identificar alteraciones en el contorno de la misma, bajo un ambiente
controlado de iluminación y fondo.
Base de Conocimiento
Específicos
Entrenamiento ANN
Entrenamiento HMM
Evaluación del sistema bajo características de la hoja
Metodología propuesta
Procesamiento
Segmentación
Entrenamiento
ANN
Sana
Entrenamiento
HMM
Reconocimiento
Enferma
Extracción
de características
Implementación
Cámaras
• ZoomCam USB II
• Full VGA, 15 FPS video
• CIF resolution, 30 FPS video
• 640 x 480
• Labtec Webcam
• 352 x 288 30 FPS
• Firefly MV
• 752 x 480 at 61 FPS
• ROI, 320x240 at 112 FPS
• 2 x 2 pixel binning, 320x240 at 122 FPS
Implementación
Procesamiento
•Filtro Gaussiano
•Operaciones Morfológicas
• Dilatación
• Erosión
Filtro Gaussiano
•El filtro gaussiano se usa para emborronar imágenes y eliminar ruido.
•Aproximación a una distribución gaussiana en dos dimensiones
Valores típicos de un
filtro gaussiano para una
máscara de 3x3
•es el más útil, aunque no el más rápido
Desventajas:
Imagen original
σ=1.0
σ=2.0
σ=4.0
•Disminución de nitidez
•Aumento de borrosidad
•Perdida de detalles
Ventajas:
• Es separable: es decir, en lugar de
realizar
una
convolución
bidimensional, podemos realizar dos
convoluciones unidimensionales.
•Da mejores resultados que un simple
promerdio o media y se argumenta que
la vista humana hace un filtrado de este
tipo
Operaciones Morfológicas. Dilatación y erosión
•Para preservar el área de regiones conectadas con más precisión, se
implementaron las operaciones de apertura y cierre.
Operación de Cierre: Reducir los
segmentos no deseados o
generados por el ruido.
Operación de Apertura: separar
elementos que se encuentren
muy cerca entre ellos en la imagen,
en otras palabras, conectar las
regiones cercanas más grandes.
void processImage()
{
// Smooth
cvSmooth(cvImage, out_rgb, CV_BLUR, 5, 5);
// Grayscale
//out_gray = cvCreateImage( cvSize(cvImage->width,cvImage->height),
IPL_DEPTH_8U, 1 );
cvCvtColor( out_rgb, out_gray, CV_BGR2GRAY );
// Morphological open and closing operations
cvMorphologyEx( out_gray, out_gray, 0, 0, CV_MOP_OPEN, CVCLOSE_ITR );
cvMorphologyEx( out_gray, out_gray, 0, 0, CV_MOP_CLOSE, CVCLOSE_ITR );
}
Implementación
Segmentación
•Otsu
•Canny
OTSU
• Al aplicar un umbral, T, la imagen en escala de grises, f(x,y), quedará
binarizada; etiquetando con ‘1’ los píxeles correspondientes al objeto y con ‘0’
aquellos que son del fondo.
• Se eligió el método de umbralización de Otsu [Otsu79] ya que en [Wang08] se
recomendó por aportar información útil para extracción de características y
caracterización de la hoja.
• Otsu elige un umbral óptimo verificando que la varianza entre clases sea
máxima
Imagen Original
Imagen umbralizada con
Otsu
Canny
• Obtención de gradiente (magnitud y ángulo en cada pixel)
• Adelgazamiento del ancho de los bordes, obtenidos con el gradiente,
hasta lograr bordes de un pixel de ancho, se conoce como “supresión
no máxima”
• Histéresis de umbral al resultado de la supresión no máxima
Imagen original
OTSU
Canny
void segmentImage()
{
// Thresholding - Otsu
cvThreshold(out_gray,out_gray,0,160,CV_THRESH_
OTSU);
// Thresholding - Canny
cvCanny(out_gray,out_gray,0,160);
}
Implementación
Extracción de características
• Códigos de cadena
• Momentos
• Características geométricas y
morfológicas de la hoja
Códigos de cadena
• Normalmente, los contornos se pueden representar como una
secuencia de vértices. Una representación alternativa puede ser las
cadenas de Freeman [Freeman67].
• Con una cadena de Freeman, un polígono es representado como una
secuencia de pasos en una de las ocho direcciones, cada paso es
designado por un número entero de 0 a 7
Momentos
• Una de las maneras más simples para comparar dos curvas es calcular los
momentos de contorno. En términos generales, un momento es una
característica del contorno calculado mediante la integración sobre todos los
píxeles del contorno.
• Usualmente, se utilizan los momentos normalizados, de modo que los objetos
de la misma forma pero diferentes tamaños proporcionen valores similares.
Del mismo modo, los momentos simples dependen del sistema de
coordenadas elegido, lo que significa que los objetos no se comparan
correctamente si se rotan.
Imagen original
Código de cadena y momento
central de la hoja
Características de la hoja
Las hojas de las plantas nos brindan suficiente
información tanto para identificación de especie como
para diagnóstico de enfermedades en la planta
Las características que utilizaremos para realizar el
reconocimiento de la hoja serán:
GEOMETRICAS
•Área
•Perímetro
•Largo
•Ancho
MORFOLOGICAS
• Relación de aspecto
•Factor de forma
•Rectangularidad
•Relación perímetro – diámetro
•Relación perímetro – longitud fisiológica – ancho
fisiológico
void featureExtraction()
{
// Retrieves all the contours and puts them in the list.
// Compresses horizontal, vertical, and diagonal segments, leaving only their ending points.
scanner = cvStartFindContours(out_gray, storage, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE );
int numCont = 0;
while( (contour = cvFindNextContour( scanner )) != NULL )
{
double len = cvContourPerimeter( contour );
// Calculate perimeter len threshold:
double q = (out_gray->height + out_gray->width) / PERIM_SCALE;
// Get rid of blob if its perimeter is too small
if( len < q )
{
cvSubstituteContour( scanner, NULL );
} else
{
// Smooth its edges if its large enough
CvSeq* new_contour;
// Polygonal approximation - Douglas-Peucker approximation algorithm
new_contour = cvApproxPoly(contour, sizeof(CvContour), storage, CV_POLY_APPROX_DP,
CVCONTOUR_APPROX_LEVEL, 0);
// Convex Hull of the segmentation
//new_contour = cvConvexHull2( contour, storage, CV_CLOCKWISE, -1);
cvSubstituteContour( scanner, new_contour );
numCont++;
}
}
contours = cvEndFindContours( &scanner );
rect = cvBoundingRect(contours);
morphologicalFeatures();
// Contour - Freeman chain code
cvZero(out_gray);
cvDrawContours(out_gray, contours, CV_RGB(255,255,255),
CV_RGB(0,0,0),1);
contour=0;
cvFindContours(out_gray,storage,&contour,sizeof(CvChain),CV_RETR
_CCOMP,CV_CHAIN_CODE);
}
void morphologicalFeatures()
{
// Moments
cvMoments(out_gray,&moments);
M00 = cvGetSpatialMoment(&moments,0,0);
M10 = cvGetSpatialMoment(&moments,1,0);
M01 = cvGetSpatialMoment(&moments,0,1);
// Geometrical Features
gf_L = rect.width;
gf_W = rect.height;
gf_A = cvContourArea(contours);
gf_P = cvArcLength(contours);
/*
Rectangularity
Similarity between a leaf and a rectangle.
Lp Wp / A
*/
mf_rec = gf_L * gf_W / gf_A;
// Morphological Features
/*
Aspect ratio
Ratio of physiological length to physiological width.
Lp / Wp
*/
mf_ar = gf_L / gf_W;
/*
Perimeter ratio of physiological length
Ratio of perimeter to physiological length.
P / Lp
*/
mf_prl = gf_P / gf_L;
/*
Form factor
Difference between a leaf and a circle.
4 π A / P^2
*/
mf_ff = 4 * 3.141592 * gf_A / pow(gf_P,2);
/*
Perimeter ratio of physiological length and physiological
width
Ratio of leaf perimeter and the sum of physiological length
and physiological width.
P / (Lp + Wp)
*/
mf_prlw = gf_P / (gf_L + gf_W);
}
Hidden Markov Model
Es un modelo de Markov en que los estados
no son directamente observables. Se puede
ver como un doble proceso estocástico:
– Un proceso estocástico “escondido” que es
no observable
– Otro proceso estocástico que produce la
secuencia de observaciones
Queda caracterizado por los siguientes elementos:
• Conjunto finito de N estados de la cadena de Markov de primer orden
• Conjunto de probabilidades de transición entre estados.
• Distribución de probabilidad de estados iniciales
• Probabilidades de generación de observaciones
Preguntas básicas
• Dado el modelo, calcular la probabilidad de una secuencia de
observaciones
Evaluación
• Dado el modelo, obtener la secuencia de estados más probable
correspondiente a una secuencia de observaciones
Secuencia óptima
• Dada una secuencia de observaciones, ajustar los parámetros del
modelo
Aprendizaje
Datos de Entrenamiento
Contorno codificado en Cadenas de Freeman
T=789
565565443444434454545456556556534343434343434343
434343434555556555544444444545545343434344454444
444544444445444455555554555555434443443444343323
333233323355455444454444444544445455454554565666
56665666565545555455555455554556566565665665667
6767666666666656666666667676767677676767676667
66666766666766677677767777677776777677676667667
66676777777677777770700700700707007007007000000
0000070000000000707070707070707000000000000000
0070000000000000000000001000000000010000000001
0000000000100000010001000100010001000100010010101
0101010101010101010101010101010101010110111011101110111
01110111011112111211121112111211121122122212221222122212
221222222222222232323223232110111101122222244454444
4454443332333332332322322323334333334333334333434
343434334343434334343434343343434343434344434443
4443444344
Artificial Neural Network
Se ha probado una red perceptrón multicapa o de
retro propagación, por ser de los clasificadores de
mejor desempeño.
Tendrá 5 entradas
Calculará el peso de cada
entrada sobre la decisión
final.
La salida de cada neurona
será 1 si la decisión es
verdadera o falso de lo
contrario.
La salida de la red será
binaria.
ANN – Multilayer Perceptron
Lenta en el entrenamiento.
Utiliza el descenso de gradiente para minimizar el error
mediante el ajuste de las conexiones ponderadas entre los
nodos de clasificación numérica dentro de las capas.
Rápida bajo prueba.
Sólo una serie de productos punto seguido por una función
squashing.
Perceptron:
yout = wT x
1
2
N
Datos: ( x , y1 ), ( x , y 2 ),..., ( x , y N )
2
T t
2
E
(
t
)
=
(
y
(
t
)
−
y
)
=
(
w
(
t
)
x
−
y
)
Error:
out
t
t
Entrenamiento:
∂ ( w(t )T x t − yt ) 2
∂E (t )
wi (t + 1) = wi (t ) − c ⋅
= wi (t ) − c ⋅
∂wi
∂wi
wi (t + 1) = wi (t ) − c ⋅ ( w(t ) T x t − yt ) ⋅ xit
m
w(t ) x = ∑ w j (t ) ⋅ x tj
T
j =1
Datos de Entrenamiento
Características geométricas y morfológicas
325, 201, 53476, 814, 1.616915, 1.012365, 1.221576,
2.506873, 1.548923
Resultados
En la primera versión, se generaron 2 modelos, uno de hojas
sanas y otro de hojas enfermas con HMM.
Número de hojas sanas reconocidas
Hojas
Reconocidas
Total Muestra
Entrenadas
9
12
De prueba
7
9
Número de hojas enfermas reconocidas
Hojas
Reconocidas
Total Muestra
Entrenadas
10
12
De prueba
7
8
Resultados
A partir de 2 modelos, ANN y HMM, se obtuvo una versión
final con el siguiente desempeño:
Hojas Sanas
Reconocidas Total Muestra
Entrenadas
%
De prueba
ANN
HMM
24
29
80
96.66
15
13
% 93.75
30
16
81.25
Hojas Enfermas
ANN HMM
Entrenadas
26
29
30
% 86.66 96.66
De prueba
%
14
13
87.5
81.25
16
Conclusiones
• El diagnóstico por contorno es más simple de implementar
que por color.
• El análisis por contorno puede ser más barato y rápido que
por color.
• Es necesario utilizar otras formas de segmentación y
análisis, además del espectro visible.
Descargar