使用 MATLAB 提取图像边界

matlabdata analysisprogramming

在图像中,边界是将对象与图像背景或图像内两个不同区域分隔开的元素。边界提供有关图像中对象的形状和结构的信息。

边界主要分为以下两种类型:

内边界

它是图像中对象的边界,将其与图像背景分隔开。内边界基本上是物体的轮廓,并提供有关物体形状的信息。

因此,通过提取物体的内边界,我们可以识别和分析图像中物体的形状、大小和位置。

在 MATLAB 中,我们可以通过计算原始图像和腐蚀图像之间的差异来提取图像的内边界,即

内边界 = 原始图像 – 腐蚀图像

其中,腐蚀图像是通过腐蚀缩小原始图像获得的图像。

外边界

围绕图像最外层区域或图像内特定感兴趣区域的边界称为外边界。外边界指定了图像内多个对象的轮廓或整个图像本身。

因此,外边界主要用于执行各种图像处理任务,如裁剪、更改或去除背景等。

在 MATLAB 中,可以通过计算扩张图像与原始图像之间的差异来获得图像的外边界,即

外边界 = 扩张图像 – 原始图像

其中,扩张图像是通过扩张获得的原始图像的扩展版本。

在本文中,我们将研究如何使用 MATLAB 代码提取图像的边界。以下 MATLAB 程序演示了如何提取图像的内边界和外边界。

示例

% MATLAB 程序用于提取图像的内边界
% 读取输入图像
img = imread('https://www.tutorialspoint.com/electrical_machines/images/electrical_machines_logo.jpg');
% 将输入图像转换为灰度
gray_img = rgb2gray(img);
% 指定结构元素以执行图像侵蚀
se = strel('disk', 2);
% 对灰度图像进行侵蚀
eroded_img = imerode(gray_img, se);
% 通过从灰度图像中减去侵蚀图像来提取内边界
inner_boundary = gray_img - eroded_img;
% 显示原始图像和内边界
subplot(1, 2, 1); imshow(img); title('Original Image');
subplot(1, 2, 2); imshow(inner_boundary); title('Inner Boundary');

输出

说明

此 MATLAB 代码演示了图像的内边界提取。在这个 MATLAB 程序中,我们使用"imread"函数读取输入图像,然后使用"rgb2gray"函数将其转换为灰度图像。

之后,我们创建一个结构元素"se"来执行图像侵蚀,为此我们使用"strel"函数。在这种情况下,我们创建的结构元素具有半径为 2 的圆盘形状。接下来,我们使用"imrode"函数执行图像侵蚀。由于侵蚀,图像内的区域会缩小以消除外边界。

然后,我们通过从原始图像"gray_img"中减去侵蚀图像"eroded_img"来提取内边界,并将结果存储在"inner_boundary"变量中。

最后,我们使用"imshow"函数显示原始图像和内边界。

示例

% MATLAB 程序提取图像的外边界
% 读取输入图像
img = imread('https://www.tutorialspoint.com/electrical_machines/images/electrical_machines_logo.jpg');
% 将 RGB 图像转换为灰度
gray_img = rgb2gray(img);
% 指定结构元素以执行图像的扩张
se = strel('disk', 2);
% 对图像执行扩张以扩大它
dilated_img = imdilate(gray_img, se);
% 通过计算扩张图像和原始图像之间的差异来提取外边界
outer_boundary = dilated_img - gray_img;
% 显示原始图像和外边界
subplot(1, 2, 1); imshow(img); title('Original Image');
subplot(1, 2, 2); imshow(outer_boundary); title('外边界');

输出

解释

在此 MATLAB 程序中,我们提取了图像的外边界。为此,我们首先使用"imread"函数读取图像。然后,我们使用"rgb2gray"函数将输入图像转换为灰度。接下来,我们定义一个结构元素来对图像执行扩张。之后,我们使用"imdilate"函数对图像进行扩张。

接下来,我们通过计算扩张图像"dilated_img"和原始图像"gray_img"之间的差异来提取外边界,并将结果存储在"outer_boundary"变量中。

最后,我们调用"imshow"函数来显示原始图像和外边界。

结论

这就是我们如何使用 MATLAB 编程轻松提取图像边界的方法。MATLAB 允许提取图像的内部和外部边界。为了提取内部边界,需要对图像进行侵蚀。而为了提取外部边界,我们需要对图像进行扩张。


相关文章