使用 Matlab 的拉普拉斯滤波器
拉普拉斯滤波器是一种二阶导数滤波器,用于边缘检测、数字图像处理。在一阶导数滤波器中,我们分别检测水平和垂直方向的边缘,然后将两者结合起来。但是使用拉普拉斯滤波器,我们可以一次检测整个图像中的边缘。
The Laplacian Operator/Filter is = [0 1 0;
1 -4 1;
0 1 0]
here the central value of filter is negative.
Or
Filter is = [0 -1 0;
-1 4 -1;
0 -1 0],
here the central value of filter is positive.
Note:The sum of all values of the filter is always 0.
脚步:
- 使用 imread()函数在 Matlab 中读取图像。
- 如果图像是彩色的,则将其转换为 RGB 格式。
- 定义拉普拉斯滤波器。
- 将图像与过滤器进行卷积。
- 显示二进制边缘检测图像。
句法:
var_name = imread(” name of image . extension “); //Read the image in variable
ar_name = rgb2gray ( old_image_var); //Convert into grayscale
“conv2( )” //Convolution is performed
“imtool( )” is used for displaying image.
例子:
Matlab
% MATLAB code for
% Edge detection using Laplacian Filter.
k=imread("logo.png");
% Convert rgb image to grayscale.
k1=rgb2gray(k);
% Convert into double format.
k1=double(k1);
% Define the Laplacian filter.
Laplacian=[0 1 0; 1 -4 1; 0 1 0];
% Convolve the image using Laplacian Filter
k2=conv2(k1, Laplacian, 'same');
% Display the image.
imtool(k1, []);
imtool(abs(k2,[]);
输出:
缺点:
- 我们应该注意到,一阶导数运算符夸大了噪声的影响。二阶导数会将噪声夸大两倍。
- 没有给出关于边缘的方向信息。