- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 功能
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线版
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据导出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策语句
- MATLAB - if end 语句
- MATLAB - if else 语句
- MATLAB - if…elseif else 语句
- MATLAB - 嵌套 if 语句
- MATLAB - switch 语句
- MATLAB - 嵌套 switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - for 循环
- MATLAB - while 循环
- MATLAB - 嵌套循环
- MATLAB - break 语句
- MATLAB - continue 语句
- MATLAB - end 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - return 语句
- MATLAB - 无返回值函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - map 函数
- MATLAB - mean 函数
- MATLAB - end 函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - try…catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 二维线图
- MATLAB - 三维图
- MATLAB - 格式化绘图
- MATLAB - 对数坐标轴图
- MATLAB - 绘制误差条
- MATLAB - 绘制三维等高线图
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面图
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 二维数组插值
- MATLAB - 三维数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换函数
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 二维逆余弦变换
- MATLAB - 向坐标轴添加图例
- MATLAB - 面向对象
- MATLAB - 面向对象编程
- MATLAB - 类和对象
- MATLAB - 函数重载
- MATLAB - 运算符重载
- MATLAB - 用户自定义类
- MATLAB - 复制对象
- MATLAB - 代数
- MATLAB - 线性代数
- MATLAB - 高斯消元法
- MATLAB - 高斯-约旦消元法
- MATLAB - 简化行阶梯形式
- MATLAB - 特征值和特征向量
- MATLAB - 积分
- MATLAB - 积分
- MATLAB - 二重积分
- MATLAB - 梯形法则
- MATLAB - 辛普森法则
- MATLAB - 其他
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 矩阵的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用资源
- MATLAB - 快速指南
- MATLAB - 有用资源
- MATLAB - 讨论
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 命令窗口中执行代码时,我们得到的输出为:
广告