Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> MATLAB

MATLAB:Лапласиан гауссовского фильтра для обнаружения краев

Фильтр Гаусса — это линейный фильтр, используемый при обработке изображений для размытия или сглаживания изображений. Он назван в честь функции Гаусса, которая используется для определения формы фильтра. Фильтр Гаусса обычно используется для уменьшения шума и детализации изображения, что делает его более подходящим для дальнейшей обработки или анализа.

Фильтр Лапласа Гаусса (LoG) — популярный фильтр улучшения изображений и обнаружения краев, используемый при обработке изображений. Это комбинация двух фильтров:фильтра Гаусса и фильтра Лапласа. Фильтр Гаусса используется для сглаживания изображения и уменьшения шума, а фильтр Лапласа — для обнаружения краев.

Фильтр Лапласа или Гаусса полезен для обнаружения краев изображения в разных масштабах. Изменяя стандартное отклонение фильтра Гаусса, вы можете контролировать масштаб обнаружения краев. Меньшие стандартные отклонения позволяют выявить более мелкие детали, а большие стандартные отклонения позволяют обнаружить более широкие характеристики.

Давайте посмотрим несколько примеров лапласиана гауссовского фильтра.

Пример 1:Использование функции fspecial()

Функция fspecial() используется для создания фильтра Гаусса, а затем вычисляется лапласиан этого гаусса для создания фильтра LoG. Однако фильтр Лапласа ожидает, что фильтр Гаусса будет иметь тип double.

У нас есть код —

% 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');

Давайте разберемся в коде подробно –

img = imread('peppers.jpg');

Здесь он считывает изображение «peppers.jpg» из текущего каталога и сохраняет его в переменной img.

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

Если изображение цветное (формат RGB), оно преобразуется в оттенки серого с помощью функции rgb2gray. Изображение в оттенках серого хранится в переменной img_gray. Если изображение уже в оттенках серого, оно сохраняется как есть.

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

Приведенный выше код создает фильтр Гаусса. Здесь мы определяем сигму стандартного отклонения фильтра Гаусса и вычисляем размер фильтра hsize на основе стандартного отклонения. Затем мы создаем фильтр Гаусса, используя функцию fspecial с типом фильтра «gaussian».

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

Мы создаем фильтр Лапласа или Гаусса, используя функцию fspecial с типом фильтра «log». Этот фильтр представляет собой лапласиан фильтра Гаусса, который используется для обнаружения границ.

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

Здесь лапласиан или гауссов фильтр для изображения в оттенках серого img_gray с использованием функции imfilter. Параметр «conv» указывает, что фильтр должен применяться с использованием свертки, а параметр «реплицировать» указывает, как следует обрабатывать границы изображения во время фильтрации.

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

Наконец, мы показываем исходное изображение в оттенках серого и отфильтрованное изображение рядом, используя функции subplot, imshow и title. Отфильтрованное изображение перед отображением преобразуется в формат uint8.

Когда код выполняется, мы получаем следующий результат:

Пример 2:Фильтрация изображений с помощью фильтров Лапласа и LoG

В этом примере показано применение двух разных фильтров:фильтра Лапласа и фильтра Лапласа или Гаусса (LoG) к входному изображению «peppers.jpg»

У нас есть код —

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');

В приведенном выше примере —

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

Этот код считывает изображение «peppers.jpg» и отображает его с помощью функции imshow. Функция title добавляет заголовок к изображению.

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

Здесь фильтр Лапласа создается с использованием функции fspecial с типом фильтра «лапласиан». Затем функция imfilter применяется для применения этого фильтра к входному изображению x, в результате чего получается отфильтрованное изображение filtered_image.

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

Этот код отображает отфильтрованное изображение, полученное с помощью фильтра Лапласа. Функция title добавляет заголовок к изображению.

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

Подобно фильтру Лапласа, фильтр LoG создается с использованием функции fspecial с типом фильтра log. Затем функция imfilter используется для применения этого фильтра к входному изображению x, в результате чего получается отфильтрованное изображение filtered_image.

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

Этот код отображает отфильтрованное изображение, полученное из фильтра LoG. Функция title добавляет заголовок к изображению.

Когда код выполняется, мы получаем результат —


MATLAB

  1. MATLAB — основной синтаксис
  2. МАТЛАБ — Команды
  3. MATLAB — исчисление
  4. MATLAB — M-файлы
  5. Визуализация математических выражений в MATLAB:руководство по построению 2D и 3D графиков
  6. MATLAB — Интеграция
  7. MATLAB — Полиномы
  8. MATLAB — Обзор
  9. MATLAB — Алгебра
  10. Руководство MATLAB:эффективное вычисление полиномиальных производных