7

Necesito ayuda, tengo que hacer un proyecto sobre hojas.Identificar lobulado y protuberancias de hojas

Quiero hacerlo de MATLAB.

mi entrada es una imagen de una hoja (con un fondo blanco) y necesito saber dos cosas acerca de la hoja:

1) encontrar la hoja lobulada (los píxeles de cada hoja lobulada):

  • Coloque la hoja sobre una mesa o espacio de trabajo donde pueda examinarla.

  • Mire la hoja que está tratando de identificar. Si la hoja parece que tiene dedos, estos se consideran lóbulos. Puede haber en cualquier lugar desde dos a muchos lóbulos en una hoja.

  • Distinga las hojas pinnadas de las hojas palmeadas mirando las venas en la parte inferior de la hoja. Si todas las venas provienen de el mismo lugar en la base de la hoja se considera palmately lobulado. Si se forman en varios lugares en la hoja de una línea central , la hoja es pinnadamente lobulada.

  • Identifique el tipo de hoja utilizando un diccionario de hoja.

enter image description here

2) encontrar aproximadamente el número de golpes de la hoja:

en otras palabras, encontrar los "puntos" hinchadas de cada hoja. enter image description here

estos son ejemplos de hojas:

enter image description here enter image description here enter image description here

+0

1 debería ser bastante simple con un fondo blanco. 2 podría ser más difícil, dependiendo de las condiciones de la hoja y la iluminación. ¿Puede darnos un ejemplo de las imágenes que usaría? – Junuxx

+0

no hay problema de condiciones de iluminación. No sé cómo explicarlo, pero puede suponer que no hay problema de condiciones de iluminación. (Estoy tratando de explicarlo, así que espere por favor) –

+0

Siempre hay problemas con las condiciones de iluminación. Los baches probablemente serían más fáciles de ver con la luz proveniente del costado que con la luz proveniente directamente de arriba, por ejemplo. – Junuxx

Respuesta

7

He encontrado algunos ejemplos de hojas en here.

Aquí está mi intento de resolver el problema. En las imágenes que he encontrado, el fondo es completamente negro.Si no es así en tus imágenes, debes usar el método de umbralización de Otsu.

que supone que sólo pueden ser de 3 tipos de hojas, de acuerdo con su imagen: enter image description here

La idea es hacer análisis de partículas. Uso la operación morfológica de apertura para separar las hojas. Si solo hay un blob después de la apertura, supongo que no está compuesto. Si las hojas no están compuestas, analizo el solidity de los blobs. No lo suficientemente sólido significa que son lobulados.

Éstos son algunos ejemplos:

enter image description here enter image description here enter image description here enter image description here

function IdentifyLeaf(dirName,fileName) 

    figure(); 
    im = imread(fullfile(dirName,fileName)); 
    subplot(1,3,1); imshow(im); 

% thresh = graythresh(im(:,:,2)); 
    imBw = im(:,:,2) > 0; 
    subplot(1,3,2);imshow(imBw); 

    radiusOfStrel = round(size(im,1)/20) ; 
    imBwOpened = imopen(imBw,strel('disk',radiusOfStrel)); 

    subplot(1,3,3);imshow(imBwOpened); 

    rpOpened = regionprops(imBwOpened,'Area'); 
    if numel(rpOpened)>1 
     title('Pinnately Compound'); 
    else 
     rp = regionprops(imBw,'Area','Solidity'); 
     %Leave only largest blob 
     area = [rp.Area]; 
     [~,maxIndex] = max(area); 
     rp = rp(maxIndex); 

     if rp.Solidity < 0.9 
      title('Pinnately Lobed'); 
     else 
      title('Pinnately Veined'); 
     end 
    end 
end 
+0

@Andey, ¡WOW !, ¡es un buen comienzo para mí! Gracias por su ayuda. Estoy tratando de hacer lo que usted y Aki me sugirieron. ¡Muchas gracias! Me ayudaron cada ¡tiempo! ¡Gracias! –

+0

@AlonShmiel, Be-Hatzlaha! (Buena suerte) –

+2

Sé hebreo, soy de Israel :-¡P TODA! –

2

Me gustaría abordar este problema mediante la conversión de 2D a 1d en los escaneos en un vector del perímetro de la hoja usando "mano derecha en la pared" -algoritmo.

A partir de esos datos, supongo, uno puede encontrar un eje de simetría dominante (por ejemplo, ajustar una línea); la distancia del perímetro se calcularía a partir de ese eje y luego uno simplemente podría usar un umbral + filtrado para encontrar máximos y mínimos locales para revelar el número de lóbulos/dedos ... El histograma de distancia podría diferenciar entre hojas con pinzas lobuladas y pinnadas .

Otro métricas individuales para comprobar la curvatura del perímetro (a partir de dos puntos extremos) sería http://en.wikipedia.org/wiki/Sinuosity

Reconociendo venas es por desgracia un tema completamente diferente.

+0

gracias muy nuch. Estoy intentando ahora hacer lo que usted y Andrey me sugirieron. ¡Los actualizaré! –

Cuestiones relacionadas