2 votes

Comment calculer le périmètre d'une image binaire en java ?

J'essaie d'effectuer une extraction de caractéristiques sur une image pour un programme sur lequel je travaille. Actuellement, je peux calculer l'aire de cette image mais j'ai des problèmes avec le périmètre.

Comment pourrais-je implémenter ceci afin de retourner une valeur numérique pour le périmètre en utilisant Java ?

Merci,

Tom

        Raster raster = source.getRaster();
    int perimeter = 0;
    for(int y = 0; y<source.getHeight(); y++)
        for(int x = 0; x< source.getWidth(); x++)
        {
            if(raster.getSample(x, y, 0) == 1 && ((raster.getSample(x+1, y, 0)==0) || (raster.getSample(x-1, y, 0)==0) || (raster.getSample(x, y+1, 0)==0) || (raster.getSample(x, y-1, 0)==0)))
                perimeter ++;
        }
    return perimeter;

1voto

Jeff Foster Points 22175

Vous pouvez utiliser une approche similaire à celle de Matlab (décrite aquí )

Un pixel fait partie du périmètre si est non nul et qu'il est connecté à au moins au moins un pixel à valeur nulle

Vous pouvez définir différents voisinages pour les pixels (par exemple, une grille de trois, ou simplement haut/bas/gauche/droite). Une fois que vous avez filtré l'image, comptez les pixels pour obtenir une valeur.

1voto

esaj Points 8338

Je n'ai pas d'exemple de cela et en faire un pourrait prendre un certain temps, mais vous pouvez jeter un coup d'œil à la page carrés de marche -algorithme.

Edit : aquí est une implémentation de Marching Squares écrite en Java par Tom Gibara.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X