Comment évaluer les performances d'un algorithme de segmentation?

8

Je suis actuellement sur un projet de segmentation des tumeurs hépatiques. J'ai segmenté le foie en utilisant la région en croissance, et je dois évaluer la précision du résultat. J'ai récemment appris qu'il existe certaines mesures pour évaluer la précision de la segmentation de l'algorithme de croissance de région, comme le coefficient de Tanimoto, la corrélation, etc. Mais je ne sais pas comment les implémenter dans Matlab. Consultez /programming/9553204/tanimoto-coefficient-using-matlab

Gomathi
la source
Vous devez préciser le travail que vous avez accompli jusqu'à présent. Vous pouvez vous référer à votre autre question sur le même sujet, mais les gens devraient avoir une idée raisonnable du contexte de la question.
Dipan Mehta
En fait, j'ai utilisé l'approche de croissance de la région pour la segmentation et extrait la région du foie. J'ai récemment appris qu'il existe certaines mesures pour évaluer la précision de la segmentation de l'algorithme de croissance de région, comme le coefficient de Tanimoto, la corrélation, etc. Mais je ne sais pas comment les implémenter dans Matlab. Consultez stackoverflow.com/questions/9553204/… Veuillez me guider.
Gomathi
Vous êtes donc allés plus loin que vous ne le faites croire. Quelle partie de l'algorithme rencontrez-vous des difficultés à mettre en œuvre?
Emre
@Emre: coefficient Tanimoto. Je ne sais pas comment l'implémenter dans Matlab. Quelqu'un m'a dit que pour un résultat correct, cela implique plusieurs boucles. Mais, je suis nouveau sur Matlab et le traitement d'image. C'est pourquoi je ne suis pas en mesure de le mettre en œuvre. Pouvez-vous bien me guider?
Gomathi

Réponses:

4

Étant donné que vous travaillez uniquement sur le coefficient de Tanimoto, j'essaie d'être plus spécifique plutôt que de donner une réponse générique avec différentes approches.

La notation de base du coefficient de Tanimoto est la suivante:

T(UNE,B)=NUNEBNUNE+NB-NUNEB

T est le résultat souhaité, sur UNE et B images.

Dans cette mesure, nous identifions les pixels comme appartenant à un segment donné, c'est-à-dire qu'il s'agit d'un pixel de segment ou qu'il est d'arrière-plan.
Nfait référence au nombre de pixels qui sont classés comme pixel de segment dans l'image respective. EtNUNEB fait référence au nombre de pixels qui sont classés comme pixel de segment dans les deux images.

Dans cette mesure, tous les pixels qui ne se qualifient ni en A ni en B ne sont pas calculés; seuls les pixels.

En outre, les deux images doivent avoir la même résolution et doivent avoir des emplacements identiques à ceux des objets segmentés, même si la forme de segmentation est correcte, le chevauchement résultant peut ne pas être correct.

Je n'entre pas dans votre code MATLAB, mais voici le pseudo code qui ressemble.

Initialize N_A, N_B, N_AB;
for( all pixels @ x,y) 
{
   if(image_A[x][y] == SEGMENT_CLASS_PIXEL) 
    N_A += 1;

   if(image_B[x][y] == SEGMENT_CLASS_PIXEL) 
    N_A += 1;

   if(image_A[x][y] == SEGMENT_CLASS_PIXEL 
      && image_B[x][y] == SEGMENT_CLASS_PIXEL) 
    N_AB += 1;

}

T = N_AB / (N_A + N_B - N_AB); 
Dipan Mehta
la source
Merci beaucoup monsieur. J'en ai une bonne idée maintenant. Je vais essayer de l'implémenter. Merci encore.
Gomathi