MATLAB 图像处理 | 基本操作

17 Mar 2025 | 6 分钟阅读

在 MATLAB 中,图像处理涉及修改数字图像以改进、检查和提取可用信息。MATLAB 提供了一个强大的框架来执行各种图像处理任务。

确定图像属性、修改图像特征以及使用 MATLAB 增强图像质量是图像处理和分析的基础。

前提条件

  • 在您的计算机上安装 MATLAB。
  • 需要基本的 MATLAB 知识。
  • 使用 MATLAB 进行图像处理,您可以执行以下基本操作:

读取图像

可以使用 `imread()` 函数从文件中读取图像。它返回一个矩阵,其中每个单元格代表像素值。

请记住用“image.jpg”替换为正确的图像文件路径。如果图像与您的 MATLAB 脚本或工作区不在同一目录中,您必须指定正确的路径。

示例

可以在单引号内指定要读取的图像的路径。

注意:在 MATLAB 命令末尾添加分号 (;) 可以抑制命令窗口中通常显示的输出。当您执行多项任务并希望结果清晰、不减慢工作流程时,这可能非常有用。

显示图像

图像显示是图像处理和分析的关键组成部分。这通常需要 MATLAB 的 `imshow` 工具。以下是显示照片的更详细说明以及一些您可以使用的附加选项。

基本图像显示

自定义显示

可以使用各种可选参数修改 `imshow` 函数的功能。

使用“InitialMagnification”选项设置图像的初始放大级别。

DisplayRange:定义显示的强度范围。

Colormap:为具有 Colormap 的索引图像设置 Colormap。

Title:显示图形的标题。

Border:指示是否在图像周围加上边框。

Parent:选择一个特定的轴项进行显示。

多图像显示

在不同色彩空间中显示图像

使用 `imshow` 函数,您可以显示不同色彩空间的图像。例如,如果您想使用不同的色彩映射来显示灰度图像,

二值图像显示

这将显示二值 BW 图像。它将 0(零)显示为黑色像素,将 1 显示为白色像素。

  • 虽然 `imshow` 是快速可视化图像的绝佳工具,但更复杂的图像分析通常需要 MATLAB 图像处理工具箱中更多的功能和工具。
  • 此外,如果您不想显示像素值的统计信息,请考虑使用分号来抑制 `imshow` 调用的输出。

写入图像

MATLAB 中的 `imwrite` 函数允许您将图像保存到磁盘。必须提供图像数据、文件类型、文件名和可选参数。

或者,我们可以将其写为 `write (f, 'nature,' 'jpg')`。如前所述,这些命令将图像 f 写入名为 nature 的文件,扩展名为 jpg。

请记住,`imwrite` 函数支持各种文件格式和设置。有关支持的格式和可用选项的更多详细信息,请参阅 MATLAB 官方文档。

图像滤波

使用各种滤波器,图像滤波是图像处理中的基本方法,用于改进或修改图像。为了创建各种效果,将称为滤波器的矩阵与图像的像素值进行卷积。

  • 边缘检测、降噪、锐化和模糊是图像滤波的典型用途。
  • MATLAB 中的 `filter` 函数用于执行图像滤波任务。

此处对 MATLAB 的图像滤波进行了深入的探讨。

模糊(平滑)滤波器:噪声较少的图像通过模糊滤波器看起来更平滑。平均滤波器和高斯滤波器都是常用的模糊滤波器。

直方图均衡

`histeq` 函数用于通过重新分布其强度级别来增强图像的对比度。

连通分量分析

`bwlabel` 函数用于标记二值图像中的连通分量。它有助于区分对象。

阈值化方法

例如 Otsu 方法,MATLAB 提供了各种阈值化函数用于自动选择阈值。

这些只是 MATLAB 在处理图像时可以执行的一些基本任务。您可以使用各种 MATLAB 图像处理工具箱函数来帮助进行图像修改任务。

实施

输出

Image Processing in MATLAB | Fundamental Operations
  • 实际图像加载并在屏幕上显示。
  • 图像经过灰度化后显示。
  • 灰度图像在显示前经过高斯滤波器处理。
  • 灰度图像经过直方图均衡后显示。灰度图像经过 canny 边缘检测后显示。
  • 灰度图像经过二值阈值化处理以创建二值图像,然后显示。
  • 创建了一个文件,其中包含修改后的二值图像。图像加载:程序从 `imread` 函数开始加载“download.png”图像。

显示原始图像: `imshow` 函数在子图中显示原始图像。

灰度转换:`rgb2gray` 函数将加载的彩色图像转换为灰度,然后显示灰度图像。

如何应用高斯滤波器:使用 Gauss 函数将高斯滤波器应用于灰度图像。这有助于降噪和图像平滑。它显示了滤波后的图像。

直方图均衡:`histeq` 函数对灰度图像应用直方图均衡。移动图像的强度级别可以提高对比度。它显示了均衡后的图像。

  • 使用带有 'canny' 参数的 `edge` 函数将 Canny 边缘检测方法应用于灰度图像。
  • 这突出了图像的边缘。显示了边缘检测后的图像。

二值阈值化:可以使用 `binarize` 函数对灰度图像应用阈值来创建二值图像。使用 `graythresh` 函数计算阈值。它显示了二值图像。

显示和子图:`subplot` 函数允许您将多个图像分组到单个图形窗口中。在子图中,显示每个处理过的图像。

  • 使用 `subtitle` 函数为整个图形设置一个标题,以描述显示图像的功能。

该应用程序演示了一系列基本图像处理操作,包括加载、灰度转换、滤波、直方图均衡、边缘检测和二值阈值化。

  • 这是这些操作如何工作的精简演示。在实际应用中,可以应用更复杂的算法和技术来进行高级图像处理任务。

优点和局限性

实用性:由于其交互式开发工具和简单的语法,MATLAB 为图像处理应用提供了用户友好的环境。

丰富的工具箱:MATLAB 提供的图像处理工具箱是一个全面的工具、算法和例程集合,适用于各种图像处理活动。

可视化:您可以使用 MATLAB 丰富的可视化功能来显示和分析图像,这有助于理解结果。

社区支持:由于 MATLAB 用户众多,可以轻松在线获取教程、文档和支持。

集成:通过将 MATLAB 与其他工具箱和库相结合,您可以将图像处理与数据分析或机器学习等任务相结合。

算法开发:MATLAB 通过提供一个平台来测试各种方法并评估其结果,从而简化了算法的构建。

局限性

性能:尽管 MATLAB 可以处理中小型图像处理工作负载,但对于处理大型图像或实时应用的**高性能处理,C++ 或 CUDA 等低级语言可能更有效。

可能更有效。

内存使用:MATLAB 对于复杂的图像处理可能会占用大量内存,这对于资源受限的系统来说可能是一个缺点。

速度:由于其解释执行方式,MATLAB 在复杂计算方面的速度可能比编译型语言慢。

商业许可:由于 MATLAB 是营利性产品,获取许可可能会成为某些用户的障碍。

灵活性有限:某些复杂或定制的图像处理方法可能需要 MATLAB 工具箱无法提供的更多控制和定制。

未针对 GPU 进行优化:尽管 MATLAB 包含一些 GPU 支持,但某些任务可能需要针对 GPU 进行优化。

供应商锁定:仅在 MATLAB 中创建复杂的图像处理系统可能会导致供应商锁定,使得切换到其他平台变得困难。

  • MATLAB 的图像处理工具箱是各种图像处理活动的有效工具,特别适合研究、原型设计和小规模工作。