Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> MATLAB

MATLAB: Laplacian-of-Gaussian-Filter für Kantendetektion

Ein Gauß-Filter ist ein linearer Filter in der Bildverarbeitung zum Weichzeichnen oder Glätten von Bildern. Er ist nach der Gauß-Funktion benannt, die die Filterform definiert. Der Gauß-Filter wird häufig verwendet, um Rauschen und Details in einem Bild zu reduzieren, was es für weitere Verarbeitung oder Analyse geeigneter macht.

Der Laplacian-of-Gaussian (LoG) Filter ist ein beliebter Bildverbesserungs- und Kantendetektionsfilter in der Bildverarbeitung. Er kombiniert zwei Filter: den Gauß-Filter und den Laplace-Filter. Der Gauß-Filter glättet das Bild und reduziert Rauschen, während der Laplace-Filter Kanten detektiert.

Der LoG-Filter eignet sich, um Kanten auf verschiedenen Skalen in einem Bild zu detektieren. Durch Variation der Standardabweichung des Gauß-Filters lässt sich die Skala steuern, auf der Kanten erkannt werden. Kleinere Standardabweichungen erfassen feinere Details, größere erkennen breitere Merkmale.

Beispiel 1: Mit fspecial()-Funktion

Die Funktion fspecial() erstellt einen Gauß-Filter, dann wird der Laplace dieses Gauß berechnet, um den LoG-Filter zu erzeugen. Der Laplace-Filter erwartet den Gauß-Filter vom Typ double.

 % Bild einlesen img = imread('peppers.jpg'); % In Graustufen konvertieren if size(img, 3) == 3 img_gray = rgb2gray(img); else img_gray = img; end % Gauß-Filter erstellen sigma = 2; % Standardabweichung hsize = 2 * ceil(3 * sigma) + 1; % Filtergröße gaussian_filter = fspecial('gaussian', hsize, sigma); % LoG-Filter erstellen log_filter = fspecial('log', hsize, sigma); % LoG-Filter auf Bild anwenden filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate'); % Original und gefiltertes Bild anzeigen subplot(1, 2, 1); imshow(img_gray); title('Originalbild'); subplot(1, 2, 2); imshow(uint8(filtered_img)); title('Laplacian-of-Gaussian gefiltertes Bild'); 

Code-Erklärung:

Beispiel 2: Bildfilterung mit Laplace- und LoG-Filtern

Dieses Beispiel wendet zwei Filter auf 'peppers.jpg' an: Laplace-Filter und LoG-Filter.

 x = imread('peppers.jpg'); figure; imshow(x); title('Eingangsbild'); figure; h = fspecial('laplacian'); filtered_image = imfilter(x, h); imshow(filtered_image); title('Ausgabe Laplace-Filter'); figure; h = fspecial('log'); filtered_image = imfilter(x, h); imshow(filtered_image); title('Laplacian-Gaussian-Filter'); 

Erklärung:

MATLAB

  1. Variablen in MATLAB verstehen: Grundlagen & Beispiele
  2. MATLAB OOP meistern: Robuste, wiederverwendbare Klassen & Objekte erstellen
  3. MATLAB Strings meistern: Einfache Erstellung & Verwendung
  4. MATLAB Grafik meistern: Fortgeschrittene Plotting-Techniken
  5. GNU Octave meistern: Ein vollständiges MATLAB-kompatibles Tutorial
  6. MATLAB M-Dateien: Scripts und Functions meistern
  7. MATLAB für Analysis: Differentialgleichungen, Integrale & Grenzwerte lösen
  8. MATLAB: Mehrdimensionale und spezielle Arrays meistern
  9. Simulink: MATLABs fortgeschrittenes Simulations- & Model-Based-Design-Tool
  10. MATLAB: Umfassender Überblick über die führende numerische Computing-Umgebung