Java DIP - Seuil de base

Le seuillage permet de réaliser la segmentation d'image de la manière la plus simple. La segmentation d'image signifie la division de l'image complète en un ensemble de pixels de telle sorte que les pixels de chaque ensemble aient des caractéristiques communes. La segmentation d'image est très utile pour définir les objets et leurs limites.

Dans ce chapitre, nous effectuons quelques opérations de seuillage de base sur les images.

Nous utilisons OpenCV fonction threshold. Il peut être trouvé sousImgprocpaquet. Sa syntaxe est donnée ci-dessous -

Imgproc.threshold(source, destination, thresh , maxval , type);

Les paramètres sont décrits ci-dessous -

Sr.No. Paramètre et description
1

source

C'est l'image source.

2

destination

C'est l'image de destination.

3

thresh

C'est la valeur seuil.

4

maxval

Il s'agit de la valeur maximale à utiliser avec les types de seuil THRESH_BINARY et THRESH_BINARY_INV.

5

type

Les types possibles sont THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC et THRESH_TOZERO.

Outre ces méthodes de seuillage, il existe d'autres méthodes fournies par la classe Imgproc. Ils sont décrits brièvement -

Sr.No. Méthode et description
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

Il convertit une image d'un espace colorimétrique à un autre.

2

dilate(Mat src, Mat dst, Mat kernel)

Il dilate une image en utilisant un élément structurant spécifique.

3

equalizeHist(Mat src, Mat dst)

Il égalise l'histogramme d'une image en niveaux de gris.

4

filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta)

Il convolve une image avec le noyau.

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

Il brouille une image à l'aide d'un filtre gaussien.

6

integral(Mat src, Mat sum)

Il calcule l'intégrale d'une image.

Exemple

L'exemple suivant illustre l'utilisation de la classe Imgproc pour effectuer des opérations de seuillage sur une image -

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class main {
   public static void main( String[] args ) {
   
      try{

         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source = Highgui.imread("digital_image_processing.jpg",  Highgui.CV_LOAD_IMAGE_COLOR);
         Mat destination = new Mat(source.rows(),source.cols(),source.type());

         destination = source;
         Imgproc.threshold(source,destination,127,255,Imgproc.THRESH_TOZERO);
         Highgui.imwrite("ThreshZero.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("error: " + e.getMessage());
      }
   }
}

Production

Lorsque vous exécutez le code donné, la sortie suivante est vue -

Image originale

Sur l'image originale ci-dessus, certaines opérations de seuillage sont effectuées, ce qui est indiqué dans la sortie ci-dessous -

Thresh Binaire

Inverser binaire Thresh

Thresh Zero