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

MATLAB:Laplace-Operator des Gauß-Filters zur Kantenerkennung

Ein Gaußfilter ist ein linearer Filter, der in der Bildverarbeitung verwendet wird, um Bilder zu verwischen oder zu glätten. Es ist nach der Gaußschen Funktion benannt, die zur Definition der Filterform verwendet wird. Der Gaußsche Filter wird üblicherweise verwendet, um Rauschen und Details in einem Bild zu reduzieren, damit es sich besser für die weitere Verarbeitung oder Analyse eignet.

Der Laplace- oder Gauß-Filter (LoG) ist ein beliebter Bildverbesserungs- und Kantenerkennungsfilter, der in der Bildverarbeitung verwendet wird. Es handelt sich um eine Kombination aus zwei Filtern:dem Gauß-Filter und dem Laplace-Filter. Der Gaußsche Filter wird verwendet, um das Bild zu glätten und Rauschen zu reduzieren, während der Laplace-Filter zur Erkennung von Kanten verwendet wird.

Der Laplace- oder Gauß-Filter eignet sich zum Erkennen von Kanten in verschiedenen Maßstäben in einem Bild. Durch Variieren der Standardabweichung des Gauß-Filters können Sie den Maßstab steuern, in dem Kanten erkannt werden. Kleinere Standardabweichungen erkennen feinere Details, während größere Standardabweichungen umfassendere Merkmale erkennen.

Sehen wir uns einige Beispiele für den Laplace-Operator oder den Gaußschen Filter an.

Beispiel 1:Verwendung der Funktion fspecial()

Die Funktion fspecial() wird verwendet, um einen Gaußschen Filter zu erstellen, und dann wird der Laplace-Operator dieses Gaußschen berechnet, um den LoG-Filter zu erstellen. Der Laplace-Filter erwartet jedoch, dass der Gauß-Filter vom Typ double ist.

Der Code, den wir haben, ist −

% Read the image
img = imread('peppers.jpg');
% Convert the image to grayscale
if size(img, 3) == 3
 img_gray = rgb2gray(img);
else
 img_gray = img;
end
% Create a Gaussian filter
sigma = 2; % Standard deviation of the Gaussian filter
hsize = 2 * ceil(3 * sigma) + 1; % Filter size
gaussian_filter = fspecial('gaussian', hsize, sigma);
% Create a Laplacian of Gaussian filter
log_filter = fspecial('log', hsize, sigma);
% Apply the LoG filter to the image
filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate');
% Display the original and filtered images
subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(filtered_img));
title('Laplacian of Gaussian Filtered Image');

Lassen Sie uns den Code im Detail verstehen −

img = imread('peppers.jpg');

Hier liest es das Bild „peppers.jpg“ aus dem aktuellen Verzeichnis und speichert es in der Variablen img.

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

Wenn das Bild farbig ist (RGB-Format), wird es mit der Funktion rgb2gray in Graustufen umgewandelt. Das Graustufenbild wird in der Variablen img_gray gespeichert. Wenn das Bild bereits in Graustufen vorliegt, wird es unverändert gespeichert.

sigma = 2; % Standard deviation of the Gaussian filter
hsize = 2 * ceil(3 * sigma) + 1; % Filter size
gaussian_filter = fspecial('gaussian', hsize, sigma);

Der obige Code erstellt den Gaußschen Filter. Hier definieren wir die Standardabweichung Sigma des Gaußschen Filters und berechnen die Filtergröße hsize basierend auf der Standardabweichung. Anschließend erstellen wir den Gaußschen Filter mithilfe der fspecial-Funktion mit „Gaussian“ als Filtertyp.

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

Wir erstellen den Laplace- oder Gaußschen Filter mithilfe der fspecial-Funktion mit „log“ als Filtertyp. Dieser Filter stellt den Laplace-Operator des Gauß-Filters dar, der zur Kantenerkennung verwendet wird.

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

Hier der Laplace- oder Gaußsche Filter zum Graustufenbild img_gray mithilfe der Funktion imfilter. Die Option „conv“ gibt an, dass der Filter mithilfe von Faltung angewendet werden soll, und die Option „replicate“ gibt an, wie die Bildgrenzen beim Filtern behandelt werden sollen.

subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(uint8(filtered_img));
title('Laplacian of Gaussian Filtered Image');

Schließlich zeigen wir das ursprüngliche Graustufenbild und das gefilterte Bild nebeneinander an, indem wir die Funktionen „subplot“, „imshow“ und „title“ verwenden. Das gefilterte Bild wird vor der Anzeige in das uint8-Format konvertiert.

Wenn der Code ausgeführt wird, erhalten wir folgende Ausgabe:−

Beispiel 2:Bildfilterung mit Laplace- und LoG-Filtern

Dieses Beispiel zeigt die Anwendung von zwei verschiedenen Filtern, dem Laplace-Filter und dem Laplace-Gauß-Filter (LoG), auf ein Eingabebild „peppers.jpg“

Der Code, den wir haben, ist −

x=imread('peppers.jpg');
figure;
imshow(x);
title('Input Image');
figure;
h=fspecial('laplacian');
filtered_image=imfilter(x,h);
imshow(filtered_image);
title('Output of Laplacian Filter');
figure;
h=fspecial('log');
filtered_image=imfilter(x,h);
imshow(filtered_image);
title('Laplacian Gaussian Filter');

Im obigen Beispiel−

x = imread('peppers.jpg');
figure;
imshow(x);
title('Input Image');

Dieser Code liest das Bild „peppers.jpg“ und zeigt es mithilfe der Imshow-Funktion an. Die Titelfunktion fügt der Bildfigur einen Titel hinzu.

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

Hier wird der Laplace-Filter mithilfe der fspecial-Funktion mit „Laplaceian“ als Filtertyp erstellt. Anschließend wird die Funktion imfilter verwendet, um diesen Filter auf das Eingabebild x anzuwenden, wodurch das gefilterte Bild filtered_image entsteht.

figure;
imshow(filtered_image);
title('Output of Laplacian Filter');

Dieser Code zeigt das gefilterte Bild an, das vom Laplace-Filter erhalten wurde. Die Titelfunktion fügt der Bildfigur einen Titel hinzu.

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

Ähnlich wie der Laplace-Filter wird der LoG-Filter mithilfe der fspecial-Funktion mit „log“ als Filtertyp erstellt. Anschließend wird die Funktion imfilter verwendet, um diesen Filter auf das Eingabebild x anzuwenden, wodurch das gefilterte Bild filtered_image entsteht.

imshow(filtered_image);
title('Laplacian of Gaussian Filter');

Dieser Code zeigt das gefilterte Bild an, das vom LoG-Filter erhalten wurde. Die Titelfunktion fügt der Bildfigur einen Titel hinzu.

Wenn der Code ausgeführt wird, erhalten wir als Ausgabe −


MATLAB

  1. MATLAB - Kalkül
  2. MATLAB - Differential
  3. MATLAB - Entscheidungsfindung
  4. MATLAB - Umgebung einrichten
  5. MATLAB - GNU Octave-Tutorial
  6. MATLAB - Polynome
  7. MATLAB - Überblick
  8. MATLAB - Datenimport
  9. MATLAB - M-Files
  10. MATLAB - Operatoren