从 Matlab 中的图像中提取位平面

2025年3月17日 | 阅读 7 分钟

在 MATLAB 中从图像中提取位平面是一种基本图像处理方法,用于检查和可视化图像中包含的各种信息级别。位平面由像素强度在特定位位置(从最高有效位 (MSB) 到最低有效位 (LSB))的二进制值表示。许多应用,例如图像分析、压缩和水印,都可以从这个过程中受益。

  • 要从 MATLAB 中的图像中提取位平面,必须先将图像分割成单独的二进制位平面,每个位平面对应于图像中的特定强度级别。
  • 最低有效位 (LSB) 平面包含最低阶位,对图像的总强度贡献最小。相比之下,最高有效位 (MSB) 平面包含最高阶位。

这是一个简单的解释和一个分步指南

读取和加载图像:在可以从图像中提取位平面之前,必须先读取并加载它。可以使用 imread 函数来完成此操作。

将图像转换为灰度(如果需要):为了简化位平面提取过程,如果输入图像当前是彩色图像,则可能需要将其转换为灰度。

提取位平面

通过使用位运算和迭代从最高有效位 (MSB) 到最低有效位 (LSB) 的每个位位置的循环,可以从灰度图像中提取各个位平面。可以使用 bitget 函数来完成此操作。

在此循环中使用 bitget 函数从灰度图像中提取位平面(第 i 位),并将其存储在 bitPlanes 数组中。

显示或保存位平面

您可以选择显示或将提取的位平面保存为单独的图像。在这里,我们将使用 imshow 函数显示它们。

借助此代码,将生成一个带有子图的图形,每个子图显示一个提取的位平面。为确保正确缩放,imshow 函数使用空的 [] 范围。

位平面作为图像(可选):存储您可以 inside 循环使用 imwrite 函数将位平面存储为单独的图像文件。

使用此代码,每个位平面都将保存为 PNG 图像,并将位位置包含在文件名中。

  • MATLAB 中的输入图像的位平面已成功恢复和查看。MSB 承载最重要的信息,LSB 包含最重要的信息,每个位平面将揭示不同级别的视觉细节。

实现

输出

Extract bit planes from an Image in Matlab

清除输出屏幕 (clc):此行通过清除 MATLAB 命令窗口来确保输出干净清晰。

检查输入图像:代码使用 imread 函数读取名为“download.jpg”的文件。可以使用彩色或灰度图像作为输入。如果需要,请将图像转换为灰度。

  • 这决定了图像是彩色(三个通道)还是灰度(一个通道)。
  • 为了简化位平面提取过程,它使用 rgb2gray 函数将任何彩色图像转换为灰度。

将图像数据存储为双精度数组:图像数据被转换。

将图像数据存储为双精度:为了能够进行数值运算,图像数据被转换为双精度数组 cd。

初始化位平面数组:提取的位平面存储在初始化的 bitPlanes 数组中。它具有与输入图像相同的尺寸,并额外有一个 8 维用于存储每个位平面(从第一个到第八个)。

提取第一到第八个位平面:循环遍历第一到第八个位。在循环中使用 mod 和 floor 函数将图像数据除以 2 的 (i-1) 次幂以提取每个位平面。bitPlanes 数组用于存储结果。

创建可显示的子图布局:由代码确定布局。可视化每个位平面如何为原始图像做出贡献,以及它们如何协同工作来重现原始图像。这是一种有用的方法,可以弄清楚图像数据的二进制编码如何影响图像质量。

实施

输出

Extract bit planes from an Image in Matlab
  • 在 MATLAB 中清除命令窗口以显示干净的输出,方法是键入 clc(清除输出屏幕)。
  • 'Yourimg.jpg' 是应用程序从输入中读取的图像。如果您用要处理的图像的精确文件名和目录替换“download.jpg”,那将很有帮助。
  • 将图像数据存储为双精度:为了能够进行数值运算,图像数据被转换为双精度数组 cd。
  • 初始化位平面数组:提取的位平面存储在名为 bitPlanes 的数组中。它具有测量值。
  • 全部提取:循环遍历第一到第八个位。在循环中使用 mod 和 floor 函数将图像数据除以 2 的 (i-1) 次幂以提取每个位平面。bitPlanes 数组用于存储结果。
  • 显示原始图像:最后,使用 imshow 函数显示带有“原始图像”标签的原始图像。

实施

输出

Extract bit planes from an Image in Matlab

提供的 MATLAB 程序旨在分离和显示图像的位平面,然后再重新组合以显示原始图像。

程序的功能列表如下

清除输出屏幕 (clc;):通过清除 MATLAB 命令窗口来创建干净的输出。读取输入图像时,应将“Download.jpg”替换为您图像的路径。

  • 要处理彩色图像,会将其转换为灰度。读取输入图像时,应将“Download.jpg”替换为您图像的路径。
  • 要处理彩色图像,会将其转换为灰度。

将输入图像转换为双精度:对于位操作,将输入图像转换为双精度数组。

初始化位平面数组:创建一个与输入图像尺寸匹配且数据类型为 uint8 的 bitPlanes 数组,以容纳各个位平面。

提取所有位平面(从第 1 位到第 8 位):使用 bitget 函数,循环提取每个位平面并将其存储在 bitPlanes 数组中。

创建用于显示的子图:该软件构建一个图形,设置子图以单独显示每个八位位平面,并安排主图。