Mahotas - 获取标签的边框
获取标签的边框是指提取带标签图像的边框像素。边框可以定义为像素位于图像边缘的区域。边框表示图像不同区域之间的过渡。
获取标签的边框涉及识别带标签图像中的边框区域并将其与背景分离。
由于带标签的图像仅由前景像素和背景像素组成,因此可以轻松识别边框,因为它们与背景区域相邻。
在 Mahotas 中获取标签的边框
在 Mahotas 中,我们可以使用 mahotas.labeled.borders() 函数来获取标签的边框。它分析标记图像的相邻像素并考虑连接模式以获取边框。
mahotas.labeled.borders() 函数
mahotas.labeled.borders() 函数将标记图像作为输入并返回具有突出显示边框的图像。
在结果图像中,边框像素的值为 1 并且是前景的一部分。
语法
以下是 mahotas − 中 borders() 函数的基本语法
mahotas.labeled.borders(labeled, Bc={3x3 cross}, out={np.zeros(labeled.shape,
bool)})
其中,
labeled − 它是输入的带标签图像。
Bc(可选) − 它是用于连接的结构元素。
out(可选) −它是输出数组(默认为与标签形状相同的新数组)。
示例
在下面的示例中,我们使用 mh.labeled.borders() 函数获取标签的边框。
import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('nature.jpeg', as_grey=True)
# 应用阈值
image = image > image.mean()
# 将其转换为带标签的图像
labeled, num_objects = mh.label(image)
# 获取标签的边框
borders = mh.labeled.borders(labeled)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示带标签的图像
axes[0].imshow(labeled)
axes[0].set_title('Labeled Image')
axes[0].set_axis_off()
# 显示边框
axes[1].imshow(borders)
axes[1].set_title('Border Labels')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()
输出
以下是上述代码的输出−
使用自定义结构元素获取边框
我们还可以使用自定义结构元素获取标签的边框。结构元素是一个仅由 1 和 0 组成的数组。它用于定义相邻像素的连接结构。
连接分析中包含的像素的值为 1,而被排除的像素的值为 0。
在 mahotas 中,我们使用 mh.disk() 函数创建自定义结构元素。然后,我们将此自定义结构元素设置为 borders() 函数中的 Bc 参数,以获取标签的边框。
示例
在这里,我们使用自定义结构元素获取标签的边框。
import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sea.bmp', as_grey=True)
# 应用阈值
image = image > image.mean()
# 将其转换为带标签的图像
labeled, num_objects = mh.label(image)
# 获取标签的边框
borders = mh.labeled.borders(labeled, mh.disk(5))
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示带标签的图像
axes[0].imshow(labeled)
axes[0].set_title('Labeled Image')
axes[0].set_axis_off()
# 显示边框
axes[1].imshow(borders)
axes[1].set_title('Border Labels')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()
输出
输出上述代码如下 −

