Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques d'apprentissage profond Discussion :

Traitement d'image - mesure longueur d'objets sur photo


Sujet :

Bibliothèques d'apprentissage profond

  1. #1
    Candidat au Club
    Traitement d'image - mesure longueur d'objets sur photo
    Bonjour à tous,
    je suis nouvelle sur ce forum et je débute avec Python (mon logiciel de prédilection est plutôt R). Mais voilà, R n'est pas taillé pour le traitement d'image.

    Mon objectif : mesurer automatiquement des poissons posés sur une bâche blanche avec un indicateur d'échelle.

    Pour l'instant, j'ai travaillé avec l'image d'un seul poisson. J'ai déjà réussi à
    - passer mon image en nuances de gris
    - enlever le bruit
    - enlever l'arrière-plan (enfin à peu près)
    - segmenter les éléments présents dans l'image
    - les mesurer (en pixel)

    Mon problème c'est que la mesure n'est pas associée à l'élément poisson ni à l'indicateur d'échelle. Il m'est donc difficile d'automatiser le processus. J'ai vu qu'il existait un module "keras" qui permettait d'identifier la catégorie de l'image mais je n'ai pas (encore) réussi à le faire fonctionner et surtout je ne vois pas comment faire le lien entre la forme reconnue (basée sur des features) et celle mesurée (basée sur des contours). Et existe-t-il un moyen pour s'assurer que le poisson a été entièrement pris en compte ? (Qu'il n'a pas été considéré comme 2 entités par exemple)
    Je me pose aussi la question de la forme de l'indicateur d'échelle : carré ? rond ? Parce qu'il ne faut pas qu'il soit déformé lors de la prise de la photo (qui pourra être prise selon des angles et zooms différents).

    Merci pour vos réponses :-), je vous mets en-dessous mon début de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import numpy as np
    import cv2 as cv
    from matplotlib import pyplot as plt
    from skimage import morphology
    from skimage import measure
    from  scipy import ndimage as nd
    from matplotlib import pyplot as plt
    
    img = cv.imread('SAA_1.jpg')
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    ret, thresh = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV+cv.THRESH_OTSU)
    
    # noise removal
    kernel = np.ones((3,3),np.uint8)
    opening = cv.morphologyEx(thresh,cv.MORPH_OPEN,kernel, iterations = 2)
    sure_bg = cv.dilate(opening,kernel,iterations=3)
    
    cv.imshow('labels',lab)
    
    mask = nd.morphology.binary_fill_holes(sure_bg)
    
    lab, n = nd.label(ret*mask)
    plt.title(str(n)+' objects detected')
    plt.imshow(lab)
    plt.show()
    
    props = measure.regionprops(lab)
    #donne le longueur max de l'element 1
    props[0]['major_axis_length']
    props[0].major_axis_length
    #donne le nombre d'elements
    len(props)
    
    #liste des longueurs trouvees
    liste_longueurs = list()
    for i in range(0, len(props)):
        liste_longueurs.append(props[i].major_axis_length)
    
    #on suppose que le poisson est la plus grande :
    print(max(liste_longueurs))

  2. #2
    Nouveau Candidat au Club
    Bonjour,
    Avez vous trouvé la solution à votre problème depuis ? En effet je suis confrontée au même type de problème...

  3. #3
    Candidat au Club
    Bonjour,

    non je n'ai pas trouvé de solution satisfaisante. Comme ce n'était qu'une partie optionnelle du projet, elle est pour l'instant en suspens. Mais je reste preneuse de toute nouvelle info.

    Bon courage dans vos recherches !

  4. #4
    Expert éminent
    salut,

    le sujet a l'air super intéressant, mais j'avoue que j'ai du mal à bien cerner la problématique, où interviennent la bâche blanche, l'indicateur d'échelle, kera etc.
    à minima est-ce que tu peux fournir le(s) fichier(s) concerné(s) pour que je puisse mieux me représenter le truc ?

###raw>template_hook.ano_emploi###