MATLAB高斯拉普拉斯滤波器:图像边缘检测实战
高斯滤波器是图像处理中用于模糊/平滑图像的线性滤波器,基于高斯函数定义形状。常用于降噪和减少细节,使图像更适合后续处理分析。
高斯拉普拉斯(LoG)滤波器是流行的图像增强与边缘检测滤波器,结合高斯滤波器和平滑后拉普拉斯算子。高斯滤波平滑降噪,拉普拉斯检测边缘。
LoG滤波器可检测不同尺度边缘。调整高斯标准差控制检测尺度:较小σ检测精细细节,较大σ检测宽泛特征。
示例1:使用fspecial()函数
fspecial()创建高斯滤波器,再计算其拉普拉斯得LoG滤波器。注意拉普拉斯滤波器要求高斯滤波器为double类型。
% 读取图像
img = imread('peppers.jpg');
% 转灰度
if size(img, 3) == 3
img_gray = rgb2gray(img);
else
img_gray = img;
end
% 创建高斯滤波器
sigma = 2; % 标准差
hsize = 2 * ceil(3 * sigma) + 1; % 滤波器尺寸
gaussian_filter = fspecial('gaussian', hsize, sigma);
% 创建LoG滤波器
log_filter = fspecial('log', hsize, sigma);
% 应用LoG滤波器
filtered_img = imfilter(double(img_gray), log_filter, 'conv', 'replicate');
% 显示对比
subplot(1, 2, 1); imshow(img_gray); title('原始图像');
subplot(1, 2, 2); imshow(uint8(filtered_img)); title('LoG滤波后图像');
代码详解:
imread读取图片存入img- 判断是否彩色(3通道),是则
rgb2gray转灰度存入img_gray - 设σ=2,计算滤波器尺寸hsize,
fspecial('gaussian')创建高斯滤波器 fspecial('log')直接创建LoG滤波器(高斯的拉普拉斯)imfilter卷积应用滤波器,'conv'卷积模式,'replicate'边界复制模式subplot左右对比显示原图与滤波图,滤波图转uint8显示
示例2:拉普拉斯滤波器与LoG滤波器对比
对'peppers.jpg'分别应用拉普拉斯和LoG滤波器:
x = imread('peppers.jpg');
figure; imshow(x); title('输入图像');
figure;
h = fspecial('laplacian');
filtered_image = imfilter(x, h);
imshow(filtered_image); title('拉普拉斯滤波输出');
figure;
h = fspecial('log');
filtered_image = imfilter(x, h);
imshow(filtered_image); title('高斯拉普拉斯滤波');
关键点:
fspecial('laplacian')创建拉普拉斯滤波器,imfilter应用得filtered_imagefspecial('log')创建LoG滤波器,同理应用- 分别在独立figure显示结果
MATLAB
- MATLAB 函数详解:定义、工作区、输入输出与多种函数类型
- MATLAB 循环控制全攻略:for、while、嵌套循环与 break/continue 流程控制
- MATLAB 常用命令速查:会话管理、系统操作、输入输出、矩阵数组、绘图可视化
- MATLAB高斯拉普拉斯滤波器:图像边缘检测实战
- MATLAB多项式求导指南:polyder函数高效计算导数
- MATLAB 入门指南:矩阵实验室的核心能力与应用领域全景
- MATLAB 数据导入完全指南:importdata 与低级文件 I/O
- MATLAB 字符串完全指南:创建、拼接、元胞数组与常用函数
- MATLAB 多项式详解:表示、求值、求根与曲线拟合
- MATLAB 冒号运算符详解:向量创建与高效迭代
- MATLAB 代数方程求解:solve、因式分解与化简
- MATLAB M 文件编程:脚本与函数的创建、运行与最佳实践