如何使用MATLAB查找二值图像的内部和外部骨架?
在二值图像中,内部和外部骨架用于表示图像中物体和形状的基本结构。在本文中,我将解释使用MATLAB查找二值图像内部和外部骨架的过程。
在讨论查找二值图像内部和外部骨架的过程之前,让我们首先概述这两种类型的骨架。
什么是二值图像的内部骨架?
在二值图像中,“内部骨架”表示前景物体的中心线。它基本上是二值图像中物体或形状的细化表示。
我们可以通过反复从二值形状和物体中去除像素来获得二值图像的内部骨架,从而获得其单像素宽的表示。
在各种图像处理任务中,查找二值图像的内部骨架至关重要,例如目标识别、形状分析、特征提取等等。
什么是二值图像的外部骨架?
在二值图像中,背景的骨架称为“外部骨架”。换句话说,二值图像的外部骨架就是二值图像中物体或形状之间区域的骨架。
我们可以简单地通过取二值图像的补集,然后找到补集二值图像的内部骨架来找到二值图像的外部骨架。
外部骨架表示关于二值图像中不同形状或物体之间连接的信息。
这就是关于二值图像内部和外部骨架的基本知识。这两种骨架在各种图像处理任务中都非常有用,例如模式识别、形状分析、结构分析等等。
现在让我们讨论使用MATLAB查找二值图像内部和外部骨架的过程。
在MATLAB中查找二值图像的内部骨架
在MATLAB中,我们按照以下步骤查找二值图像的内部骨架。
步骤(1) - 读取二值图像。为此,我们使用“imread”函数。
binary_img = imread(ImagePath);
步骤(2) - 查找输入二值图像的内部骨架。为此,我们使用“bwmorph”函数和“skel”选项执行形态学运算以查找图像的骨架。
interior_skeleton = bwmorph(binary_img, 'skel', Inf);
步骤(3) - 显示结果。
示例
让我们现在在MATLAB中举一个例子来理解这些步骤的实现。(此处应插入MATLAB代码示例)
% MATLAB code to find interior skeleton of binary image % Read the input image img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425236.jpg'); % Convert the input image to grayscale if required gray_img = rgb2gray(img); % Create the binary image binary_img = imbinarize(gray_img); % Find the interior skeleton of binary image interior_skeleton = bwmorph(binary_img, 'skel', Inf); % Display the binary image and its interior skeleton figure; subplot(1, 2, 1) imshow(binary_img) title('Binary Image'); subplot(1, 2, 2) imshow(interior_skeleton) title('Interior Skeleton');
输出
运行此代码时,它将生成以下输出 - (此处应插入输出图像)
解释
在这个例子中,我们已经确定了输入二值图像的内部骨架。这段代码在开头有两个额外的步骤。我们读取的是RGB图像,因此需要先将其转换为灰度图像,然后创建其二值图像。
此二值图像的内部骨架显示在标题为“内部骨架”的输出图像中。为了获得更好的结果,您可以使用不同的图像尝试此代码。如果您的输入图像已经是二值图像,则跳过转换为灰度图像和创建二值图像的步骤。
现在让我们讨论使用MATLAB查找二值图像外部骨架的过程。
在MATLAB中查找二值图像的外部骨架
在MATLAB中,需要按照以下步骤查找二值图像的外部骨架。
步骤(1) - 使用“imread”函数读取二值图像。
语法
binary_img = imread(ImagePath);
步骤(2) - 对此输入二值图像取补集。
步骤(3) - 使用“bwmorph”函数查找补集二值图像的内部骨架。输出将是二值图像的外部骨架。
语法
exterior_skeleton = bwmorph(comp_bin_img, 'skel', Inf);
步骤(4) - 显示结果。
示例
让我们在MATLAB中看一个例子来理解查找二值图像外部骨架的步骤的实现。(此处应插入MATLAB代码示例)
% MATLAB code to find exterior skeleton of binary image % Read the input image img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425236.jpg'); % Convert the input image to grayscale if required gray_img = rgb2gray(img); % Create the binary image binary_img = imbinarize(gray_img); % Complement the binary image comp_bin_img = ~binary_img; % Perform morphological operation to find exterior skeleton exterior_skeleton = bwmorph(comp_bin_img, 'skel', Inf); % Display the binary image and its exterior skeleton figure; subplot(1, 2, 1) imshow(binary_img) title('Binary Image'); subplot(1, 2, 2) imshow(exterior_skeleton) title('Exterior Skeleton');
输出
运行此代码时,它将生成以下输出 - (此处应插入输出图像)
解释
在这个例子中,我们已经获得了输入图像的外部骨架。这里的步骤与内部骨架相同。唯一的区别是我们首先计算二值图像的补集以交换黑白像素。然后,我们找到补集图像的内部骨架,这基本上就是外部骨架。
结论
总之,二值图像的内部和外部骨架是两种不同的表示,它们显示了图像中物体和形状的结构。
内部骨架表示前景物体的中心线,而外部骨架突出显示图像背景的骨架。
在本教程中,我解释了使用MATLAB查找二值图像内部和外部骨架的分步过程。我还包含示例程序,以便更好地理解步骤的实现。