在 MATLAB 中使用 Otsu 方法对数字图像进行二值化

matlabdata analysisprogramming

在数字图像处理中,将彩色图像或灰度图像转换为二值图像的过程称为图像二值化。在二值图像中,图像像素使用二进制值(即 0 和 1)表示,其中 0 表示黑色像素,1 表示白色像素。

二值化是一种简化图像分析的有效技术,它还有助于提取图像的重要特征。

数字图像二值化过程

数字图像二值化过程基于使用阈值来操纵原始图像的像素以获得二值图像。

在此过程中,图像中像素值高于阈值的像素设置为 1,即白色,像素值低于阈值的像素设置为 0,即黑色。

数字图像二值化的目的

数字图像二值化可以有多种目的。下面介绍了二值化在数字图像处理中的一些常见用途 -

  • 图像分割 - 二值化根据指定的属性将原始图像划分为单独的区域,这使得图像分割过程更简单。

  • 对象检测 - 二值化还简化了对象检测和识别的过程。

  • 属性提取 - 二值化还可以应用于数字图像以提取其属性和特征,例如图案,边缘等。

  • 图像压缩 - 通过二值化可以轻松压缩数字图像,因为对二进制图像进行编码相当容易。

  • 光学字符识别 - 二值化将数字图像转换为二进制图像,可用于实现 OCR 算法来识别字符光学上。

数字图像二值化的阈值技术

根据数字图像的属性和所需的输出,以下是用于数字图像二值化的一些常见阈值技术 -

  • 全局阈值 - 当将单个阈值应用于整个图像进行二值化时,这种阈值技术称为全局阈值。

  • 自适应阈值 - 在这种阈值技术中,根据图像区域的局部属性将不同的阈值应用于图像。

  • Otsu 方法 - 这是一种阈值技术,其中自动确定最佳阈值以执行二值化。

在本文中,我们将讨论数字图像的二值化使用 MATLAB 中的 Otsu 方法。

使用 Otsu 方法对数字图像进行二值化

在 MATLAB 中,使用 Otsu 方法对数字图像进行二值化是一种自动计算最佳阈值的图像处理技术。

MATLAB 提供了一个内置函数"graythresh"来计算最佳阈值以执行数字图像的二值化。

下面解释了在 MATLAB 中使用 Otsu 方法对数字图像进行二值化的分步过程 -

  • 步骤 (1) - 读取输入图像。

  • 步骤 (2) - 将输入图像转换为灰度。

  • 步骤 (3) - 使用"graythresh"计算 Otsu 的阈值函数。

  • 步骤 (4) - 使用"imbinarize"函数对图像进行二值化。

  • 步骤 (5) - 显示输出的二值图像。

因此,使用 Otsu 方法对数字图像进行二值化是一个简单的过程。

示例

现在,让我们讨论如何使用 Otsu 方法对数字图像进行二值化的 MATLAB 程序的实现。

% 读取输入图像
img = imread('path_to_grayscale_image.jpg');

% 将输入图像转换为灰度图像
grayimg = rgb2gray(img);

% 计算 Otsu 阈值
th = graythresh(grayimg);

% 使用阈值对图像进行二值化
binaryimg = imbinarize(grayimg, th);

% 显示原始图像和二值化图像
figure;
subplot(1, 2, 1); imshow(img); title('原始图像​​');
subplot(1, 2, 2); imshow(binaryimg); title('Otsu 二值化图像');

输出

代码说明

在此 MATLAB 程序中,我们首先使用"imread"函数读取输入数字图像并将其存储在变量"img"中。然后,我们使用"rgb2gray"函数将 RGB 图像转换为灰度图像并存储在变量"grayimg"中。

接下来,我们使用"graythresh"函数计算 Otsu 阈值并将其存储在变量"th"中。之后,我们使用这个阈值"th"对图像进行二值化,为此我们使用"imbinarize"函数。

最后,我们使用"imshow"函数并排显示输入的数字图像和二值图像。

结论

在 MATLAB 中,我们可以使用内置函数"graythresh"来计算数字图像二值化的阈值。我们已经在本文的以上部分解释了这个概念。您可以使用自己的图像尝试上面给出的 MATLAB 代码,只需将"imread"函数中的图像地址替换为您图像的地址即可。


相关文章