É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( A , B ) =NA BNUNE+NB-NA B
où 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. EtNA B 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);