MATLAB - 拉普拉斯濾波器



拉普拉斯濾波器是一種用於影像處理的影像增強濾波器。它透過強調快速強度變化的區域來銳化影像。拉普拉斯濾波器基於拉普拉斯運算元,這是一種用於檢測影像邊緣和精細細節的二階導數運算元。

在後面的部分,我們將瞭解拉普拉斯濾波器在影像上使用的不同方法。

使用 Matlab 中的 imfilter() 函式對影像進行拉普拉斯濾波

在 MATLAB 中,可以使用 imfilter 函式將拉普拉斯濾波器應用於影像。imfilter 函式將影像與表示拉普拉斯運算元的核進行卷積。此核突出顯示影像中快速強度變化的區域,使邊緣顯得更清晰。

語法

output_image = imfilter(input_image, filter_kernel);

輸入影像 − 這是要濾波的輸入影像。它可以是灰度影像(二維陣列)或彩色影像(具有 [高度,寬度,通道] 維度的三維陣列)。

濾波器核 − 這是定義如何執行濾波操作的濾波器核或掩碼。它通常是一個二維陣列(對於二維影像)或三維陣列(對於三維影像),表示濾波器的權重。濾波器核的大小決定了應用濾波的鄰域大小。常見的濾波器核包括拉普拉斯濾波器、高斯濾波器、Sobel 濾波器等。

輸出影像 − 這是應用濾波器後的輸出影像。它的大小和資料型別與輸入影像相同。

讓我們看看 imfilter() 函式中拉普拉斯濾波器的一個示例

示例 1:在 imfilter() 中使用拉普拉斯濾波器

我們的程式碼如下:

% Read the image
img = imread('peppers.png');

% Display the original image

imshow(img);
title('Original Image');

% Apply the Laplacian filter
laplacian_filter = [0 -1 0; -1 4 -1; 0 -1 0];
filtered_img = imfilter(img, laplacian_filter);

% Display the filtered image
subplot(1, 2, 2);
imshow(filtered_img, []);
title('Laplacian Filtered Image');

在上例中,

  • 程式碼使用 imread() 函式從當前目錄讀取名為 'peppers.png' 的影像檔案。影像儲存在變數 img 中。
  • 程式碼使用 subplot 函式建立一個包含 1 行 2 列子圖的圖形,然後選擇第一個子圖 (1, 2, 1)。imshow() 函式用於在此子圖中顯示影像 img。title 函式設定子圖的標題為“原始影像”。
  • 程式碼定義了一個 3x3 拉普拉斯濾波器核 laplacian_filter,用於執行影像濾波。使用 imfilter() 函式將拉普拉斯濾波器應用於原始影像,結果儲存在變數 filtered_img 中。
  • 與顯示原始影像類似,程式碼使用 subplot 選擇第二個子圖 (1, 2, 2) 並使用 imshow() 顯示濾波後的影像 filtered_img。此子圖的標題設定為“拉普拉斯濾波影像”。

我們得到的輸出如下:

使用 Matlab 中的 conv2() 函式對影像進行拉普拉斯濾波

conv2() 是 MATLAB 中用於二維卷積的函式,它是影像處理中的一個基本運算。它通常用於將濾波器應用於影像,例如模糊、銳化、邊緣檢測等。

語法

C = conv2(A, B, 'same');

在語法中

  • A 是輸入影像或矩陣。
  • B 是二維濾波器核(例如拉普拉斯濾波器)。
  • 'same' 是一個可選引數,它指定輸出矩陣 C 的大小與輸入矩陣 A 相同。

讓我們來看一個相同的例子

例子

我們的程式碼如下:

% Read the image as grayscale
img_gray = imread('peppers.jpg');

% Define the Laplacian filter kernel
laplacian_filter = [0 -1 0; -1 4 -1; 0 -1 0];

% Apply the Laplacian filter using conv2
filtered_img = conv2(double(img_gray), laplacian_filter, 'same');

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

在上例中,

  • 將影像 'peppers.jpg' 作為灰度影像讀取並將其儲存在變數 img_gray 中。
  • 定義一個 3x3 拉普拉斯濾波器核 laplacian_filter。此核用於邊緣檢測。
  • 使用 conv2 進行拉普拉斯濾波:使用 double(img_gray) 將灰度影像轉換為雙精度矩陣。使用 conv2 應用拉普拉斯濾波器到灰度影像,這將執行二維卷積。'same' 選項確保輸出影像與輸入影像大小相同。
  • 顯示原始影像和濾波影像:為此,使用 subplot 建立一個包含兩個子圖的圖形。在第一個子圖中顯示原始灰度影像。在第二個子圖中顯示拉普拉斯濾波影像(使用 uint8(filtered_img) 將其轉換回 uint8 格式)。

當我們在 matlab 命令視窗中執行程式碼時,我們得到的輸出為:

廣告
© . All rights reserved.