Mahotas 教程

Mahotas - 主页 Mahotas - 简介 Mahotas - 计算机视觉 Mahotas - 历史 Mahotas - 功能 Mahotas - 安装

Mahotas 处理图像

Mahotas - 处理图像 Mahotas - 加载图像 Mahotas - 将图像加载为灰色 Mahotas - 显示图像 Mahotas - 显示图像形状 Mahotas - 保存图像 Mahotas - 图像的质心 Mahotas - 图像的卷积 Mahotas - 创建 RGB 图像 Mahotas - 图像的欧拉数 Mahotas - 图像中的零分数 Mahotas - 获取图像矩 Mahotas - 图像中的局部最大值 Mahotas - 图像椭圆轴 Mahotas - 图像拉伸 RGB

Mahotas 颜色空间转换

Mahotas - 颜色空间转换 Mahotas - RGB 到灰度转换 Mahotas - RGB 到 LAB 转换 Mahotas - RGB 转棕褐色 Mahotas - RGB 到 XYZ 转换 Mahotas - XYZ 到 LAB 转换 Mahotas - XYZ 到 RGB 转换 Mahotas - 增加伽马校正 Mahotas - 拉伸伽马校正

Mahotas 标记图像函数

Mahotas - 标记图像函数 Mahotas - 标记图像 Mahotas - 过滤区域 Mahotas - 边界像素

Mahotas - 形态学操作

Mahotas - 形态运算符 Mahotas - 查找图像平均值 Mahotas - 裁剪图像 Mahotas - 图像偏心率 Mahotas - 叠加图像 Mahotas - 图像圆度 Mahotas - 调整图像大小 Mahotas - 图像直方图 Mahotas - 扩大图像 Mahotas - 腐蚀图像 Mahotas - 分水岭 Mahotas - 图像的开运算过程 Mahotas - 图像的闭合过程 Mahotas - 填补图像中的空洞 Mahotas - 条件性膨胀图像 Mahotas - 条件腐蚀图像 Mahotas - 图像的条件分水岭 Mahotas - 图像中的局部最小值 Mahotas - 图像的区域最大值 Mahotas - 图像的区域最小值

Mahotas - 高级概念

Mahotas - 图像阈值 Mahotas - 设置阈值 Mahotas - 软阈值 Mahotas - Bernsen 局部阈值 Mahotas - 小波变换 Mahotas - 制作图像小波中心 Mahotas - 距离变换 Mahotas - 多边形实用程序 Mahotas - 局部二元模式 Mahotas - 阈值邻接统计 Mahotas - Haralic 特征 Mahotas - 标记区域的权重 Mahotas - Zernike 特征 Mahotas - Zernike 矩 Mahotas - 等级过滤器 Mahotas - 2D 拉普拉斯过滤器 Mahotas - 多数过滤器 Mahotas - 均值滤波器 Mahotas - 中值滤波器 Mahotas - Otsu 方法 Mahotas - 高斯滤波 Mahotas - 命中与未命中变换 Mahotas - 标记最大值数组 Mahotas - 图像平均值 Mahotas - SURF 密集点 Mahotas - SURF 积分 Mahotas - Haar 变换 Mahotas - 突出显示图像最大值 Mahotas - 计算线性二进制模式 Mahotas - 获取标签边框 Mahotas - 逆 Haar 变换 Mahotas - Riddler-Calvard 方法 Mahotas - 标记区域的大小 Mahotas - 模板匹配 Mahotas - 加速稳健特征 Mahotas - 移除带边框的标签 Mahotas - Daubechies 小波 Mahotas - Sobel 边缘检测



Mahotas - 标记区域的大小

标记区域的大小是指标记图像不同区域中存在的像素数。标记图像是指将唯一标签(值)分配给图像的不同区域(一组像素)的图像。

通常,图像有两个主要区域,即前景和背景。

每个区域的大小取决于图像中存在的区域总数。如果存在更多区域,则每个区域的大小将更小。

相反,如果存在较少区域,则每个区域的大小将更大。

Mahotas 中标记区域的大小

在 Mahotas 中,我们可以使用 mahotas.labeled.labeled_size() 函数来计算标记图像中每个区域的大小。该函数的工作方式如下 −

  • 它首先计算图像中标记区域的数量。

  • 然后,它遍历所有标记区域并计算每个区域中存在的像素总数。

遍历完所有区域后,该函数将返回每个区域的大小。

mahotas.labeled.labeled_size() 函数

mahotas.labeled.labeled_size() 函数将标记图像作为输入并返回一个列表,其中包含每个区域的大小(以像素为单位)。

我们可以遍历值列表以获取每个区域的大小。

语法

以下是 mahotas − 中 labeled_size() 函数的基本语法

mahotas.labeled.labeled_size(labeled)

其中,

  • labeled − 它是输入的带标签图像。

示例

在下面的示例中,我们使用 mh.labeled.labeled_size() 函数查找图像的带标签区域的大小。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sea.bmp')
# 标记图像
labeled, num_objects = mh.label(image)
# 获取标记区域的大小
labeled_size = mh.labeled.labeled_size(labeled)
# 打印标记区域的大小
for i, labeled_size in enumerate(labeled_size, 1):
    print(f"区域 {i} 的大小 = {labeled_size} 像素")
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 1)
# 显示原始图像
axes.imshow(image)
axes.set_title('Labeled Image')
axes.set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图
mtplt.show()
输出

以下是上述代码的输出 −

区域 1 的大小 = 4263 像素
区域 2 的大小 = 2234457 像素

以下是获得的图像 −

标记区域

灰度图像中的大小

我们还可以找到灰度图像中标记区域的大小。灰度图像是指只有一个−颜色通道的图像,其中每个像素由一个强度值表示。

像素的强度值决定了灰色的深浅。 0 将产生黑色像素,255 将产生白色像素,而任何其他值都将产生具有中间色调的像素。

在 mahotas 中,要获取灰度图像标记区域的大小,我们首先使用 colors.rgb2gray() 函数将输入的 RGB 图像转换为灰度图像。

然后,我们标记灰度图像并遍历每个区域以计算其大小。

示例

在下面提到的示例中,我们正在寻找灰度图像标记区域的大小。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度图像
image = mh.colors.rgb2gray(image)
# 标记图像
labeled, num_objects = mh.label(image)
# 获取标记区域的大小
labeled_size = mh.labeled.labeled_size(labeled)
# 打印标记区域的大小
for i, labeled_size in enumerate(labeled_size, 1):
    print(f"区域 {i} 的大小 = {labeled_size} 像素")
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 1)
# 显示原始图像
axes.imshow(image, cmap='gray')
axes.set_title('Original Image')
axes.set_axis_off()
# 调整间距子图
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

上述代码的输出如下 −

区域 1 的大小 = 8 像素
区域 2 的大小 = 1079032 像素

生成的图像如下 −

Sizes Grayscale Image

随机布尔图像中的大小

除了灰度图像,我们还可以获取随机布尔图像中标记区域的大小。

随机布尔图像是指每个像素的值为 1 或 0 的图像,其中值为"1"的像素称为前景,值为"0"的像素称为背景。

在 mahotas 中,我们首先使用 np.zeros() 函数生成特定尺寸的随机布尔图像。

生成的随机图像最初将其所有像素值设置为 0(仅包含背景区域)。然后,我们将整数值分配给图像的几个部分以创建不同的区域。

然后,我们标记图像并遍历每个区域以获取其像素大小。

示例

在这里,我们获取随机生成的布尔图像的不同标签的大小。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 创建随机图像
image = np.zeros((10,10), bool)
# 创建区域
image[:2, :2] = 1
image[4:6, 4:6] = 1
image[8:, 8:] = 1
# 标记图像
labeled, num_objects = mh.label(image)
# 获取标记区域的大小
labeled_size = mh.labeled.labeled_size(labeled)
# 打印标记区域的大小
for i, labeled_size in enumerate(labeled_size, 1):
    print(f"区域 {i} 的大小 = {labeled_size} 像素")
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 1)
# 显示原始图像
axes.imshow(image)
axes.set_title('Original Image')
axes.set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

执行上述代码后,我们得到以下输出 −

区域 1 的大小 = 88 像素
区域 2 的大小 = 4 像素
区域 3 的大小 = 4 像素
区域 4 的大小 = 4 像素

得到的图像如下所示 −

Sizes Grayscale Image1