Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> MATLAB

MATLAB : Filtre Laplacien de Gaussien pour la détection de contours

Un filtre gaussien est un filtre linéaire utilisé dans le traitement d'images pour flouter ou lisser les images. Il porte le nom de la fonction gaussienne, qui est utilisée pour définir la forme du filtre. Le filtre gaussien est couramment utilisé pour réduire le bruit et les détails dans une image, la rendant plus adaptée pour un traitement ou une analyse ultérieure.

Le filtre Laplacien de Gaussien (LoG) est un filtre populaire d'amélioration d'image et de détection de contours utilisé dans le traitement d'images. C'est une combinaison de deux filtres : le filtre gaussien et le filtre laplacien. Le filtre gaussien est utilisé pour lisser l'image et réduire le bruit, tandis que le filtre laplacien est utilisé pour détecter les contours.

Le filtre Laplacien de Gaussien est utile pour détecter les contours à différentes échelles dans une image. En variant l'écart-type du filtre gaussien, vous pouvez contrôler l'échelle à laquelle les contours sont détectés. Des écarts-types plus petits détectent les détails plus fins, tandis que des écarts-types plus grands détectent les caractéristiques plus larges.

Voyons quelques exemples pour le filtre laplacien de gaussien.

Exemple 1 : Utilisation de la fonction fspecial()

La fonction fspecial() est utilisée pour créer un filtre gaussien, puis le laplacien de ce gaussien est calculé pour créer le filtre LoG. Cependant, le filtre laplacien s'attend à ce que le filtre gaussien soit de type double.

Le code que nous avons est −

 % Lire l'image img = imread('peppers.jpg'); % Convertir l'image en niveaux de gris if size(img, 3) == 3 img_gray = rgb2gray(img); else img_gray = img; end % Créer un filtre gaussien sigma = 2; % Écart-type du filtre gaussien hsize = 2 * ceil(3 * sigma) + 1; % Taille du filtre gaussian_filter = fspecial('gaussian', hsize, sigma); % Créer un filtre Laplacien de Gaussien log_filter = fspecial('log', hsize, sigma); % Appliquer le filtre LoG à l'image filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate'); % Afficher les images originale et filtrée subplot(1, 2, 1); imshow(img_gray); title('Image Originale'); subplot(1, 2, 2); imshow(uint8(filtered_img)); title('Image Filtrée Laplacien de Gaussien'); 

Comprenons le code en détail −

 img = imread('peppers.jpg'); 

Ici, il lit l'image 'peppers.jpg' du répertoire courant et la stocke dans la variable img.

 if size(img, 3) == 3 img_gray = rgb2gray(img); else img_gray = img; end 

Si l'image est en couleur (format RGB), elle est convertie en niveaux de gris en utilisant la fonction rgb2gray. L'image en niveaux de gris est stockée dans la variable img_gray. Si l'image est déjà en niveaux de gris, elle est stockée telle quelle.

 sigma = 2; % Écart-type du filtre gaussien hsize = 2 * ceil(3 * sigma) + 1; % Taille du filtre gaussian_filter = fspecial('gaussian', hsize, sigma); 

Le code ci-dessus crée le filtre gaussien. Ici, nous définissons l'écart-type sigma du filtre gaussien et calculons la taille du filtre hsize basée sur l'écart-type. Nous créons ensuite le filtre gaussien en utilisant la fonction fspecial avec 'gaussian' comme type de filtre.

 log_filter = fspecial('log', hsize, sigma); 

Nous créons le filtre Laplacien de Gaussien en utilisant la fonction fspecial avec 'log' comme type de filtre. Ce filtre représente le laplacien du filtre gaussien, qui est utilisé pour la détection de contours.

 filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate'); 

Ici, le filtre Laplacien de Gaussien est appliqué à l'image en niveaux de gris img_gray en utilisant la fonction imfilter. L'option 'conv' spécifie que le filtre doit être appliqué en utilisant la convolution, et l'option 'replicate' spécifie comment les bords de l'image doivent être gérés pendant le filtrage.

 subplot(1, 2, 1); imshow(img_gray); title('Image Originale'); subplot(1, 2, 2); imshow(uint8(filtered_img)); title('Image Filtrée Laplacien de Gaussien'); 

Finalement, nous affichons l'image originale en niveaux de gris et l'image filtrée côte à côte en utilisant les fonctions subplot, imshow et title. L'image filtrée est convertie au format uint8 avant l'affichage.

Quand le code est exécuté, la sortie que nous obtenons est la suivante −

Exemple 2 : Filtrage d'image avec les filtres Laplacien et LoG

Cet exemple montre l'application de deux filtres différents, le filtre laplacien et le filtre Laplacien de Gaussien (LoG), à une image d'entrée 'peppers.jpg'

Le code que nous avons est −

 x=imread('peppers.jpg'); figure; imshow(x); title('Image d\'entrée'); figure; h=fspecial('laplacian'); filtered_image=imfilter(x,h); imshow(filtered_image); title('Sortie du Filtre Laplacien'); figure; h=fspecial('log'); filtered_image=imfilter(x,h); imshow(filtered_image); title('Filtre Laplacien Gaussien'); 

Dans l'exemple ci-dessus−

 x = imread('peppers.jpg'); figure; imshow(x); title('Image d\'entrée'); 

Ce code lit l'image 'peppers.jpg' et l'affiche en utilisant la fonction imshow. La fonction title ajoute un titre à la figure de l'image.

 h = fspecial('laplacian'); filtered_image = imfilter(x, h); 

Ici, le filtre laplacien est créé en utilisant la fonction fspecial avec 'laplacian' comme type de filtre. La fonction imfilter est ensuite utilisée pour appliquer ce filtre à l'image d'entrée x, résultant en l'image filtrée filtered_image.

 figure; imshow(filtered_image); title('Sortie du Filtre Laplacien'); 

Ce code affiche l'image filtrée obtenue du filtre laplacien. La fonction title ajoute un titre à la figure de l'image.

 h = fspecial('log'); filtered_image = imfilter(x, h); 

De manière similaire au filtre laplacien, le filtre LoG est créé en utilisant la fonction fspecial avec 'log' comme type de filtre. La fonction imfilter est ensuite utilisée pour appliquer ce filtre à l'image d'entrée x, résultant en l'image filtrée filtered_image.

 imshow(filtered_image); title('Filtre Laplacien de Gaussien'); 

Ce code affiche l'image filtrée obtenue du filtre LoG. La fonction title ajoute un titre à la figure de l'image.

Quand le code est exécuté, la sortie que nous obtenons est −


MATLAB

  1. Simulink : l'outil avancé de simulation et de conception basée sur les modèles de MATLAB
  2. Transformées MATLAB : Laplace, Fourier et FFT expliquées
  3. Maîtriser l'intégration MATLAB : des primitives aux sommes de Riemann
  4. Comprendre les variables dans MATLAB : Bases et exemples
  5. Maîtriser les valeurs et vecteurs propres dans MATLAB : Guide pratique
  6. Importation de données dans MATLAB : méthodes efficaces pour charger des fichiers externes
  7. Guide rapide pour configurer votre environnement MATLAB
  8. Types de boucles MATLAB : Maîtriser l'exécution répétée de code
  9. Exportation de données depuis MATLAB : formats de fichiers et techniques