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 - 图像拉伸 RGB

图像拉伸是一种通过将原始像素值映射到新值范围来增强图像对比度的技术。这通常是为了提高细节的可见性并增强图像的整体外观。

对于 RGB 图像,每个像素都有三个颜色通道&min; 红色、绿色和蓝色。 拉伸 RGB 图像涉及独立拉伸每个颜色通道的值以扩大强度范围。

Mahotas 中的图像拉伸 RGB

在 Mahotas 中,RGB 图像拉伸是通过拉伸图像的各个颜色通道(红色、绿色和蓝色)来执行的。拉伸过程涉及将原始像素强度映射到新范围以增加对比度。

拉伸各个 RGB 通道后,需要将它们组合回来以创建最终的拉伸图像。

我们可以使用 stretch() 函数和 stretch_rgb() 函数在 mahotas 中执行图像拉伸 RGB。

使用 stretch() 和 stretch_rgb() 函数

mahotas.stretch() 和 mahotas.stretch_rgb() 函数在指定的 min_value 和 max_value 之间拉伸 RGB 图像每个通道中的像素值。

值低于 min_value 的像素将设置为 min_value,值高于 max_value 的像素将设置为 max_value。拉伸在每个通道上独立执行。

语法

以下是 mahotas.stretch() 函数的基本语法 −

mahotas.stretch(img,arg0=None, arg1=None, dtype=<type 'numpy.uint8'>)

以下是 mahotas.stretch_rgb() 函数的基本语法 −

mahotas.stretch(img,arg0=None, arg1=None, dtype=<type 'numpy.uint8'>)

参数

以下是传递给 mahotas.stretch() 函数的参数 −

img − 它是输入图像。

arg0 和 arg1(可选) − 这些参数指定像素值应拉伸的范围。这些参数的解释取决于它们的值 −

  • 如果同时提供了 arg0arg1 并且不为 None,则它们表示像素值应拉伸到的最小值和最大值。 arg0 以下的像素值将设置为 arg0arg1 以上的像素值将设置为 arg1

  • 如果仅提供 arg0arg1None,则 arg0 应为长度为 2 的元组或列表,表示百分位数值。 arg0 第一个元素的值以下的像素值将设置为该值,arg0 第二个元素的值以上的像素值将设置为该值。

  • 如果 arg0arg1 均为 None,则像素值将拉伸到 dtype 参数指定的数据类型的全部范围(默认值为 numpy.uint8)。

dtype − 它指定输出图像的数据类型。默认值为 numpy.uint8,表示无符号的 8 位整数。

示例

在下面的示例中,我们使用 mahotas.stretch() 函数来拉伸图像−

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image = mh.imread('sun.png')
# 拉伸图像
stretched = mh.stretch(image, arg0=100, arg1=280)
# 创建带有子图的图形
fig, axis = plt.subplots(1, 2, figsize=(10, 5))
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示拉伸的灰度图像
axes[1].imshow(stretched, cmap='gray')
axes[1].set_title('Stretched Grayscale Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()
输出

以下是上述代码的输出 −

图像拉伸 RGB

示例

在此示例中,我们将了解如何使用 mahotas.stretch_rgb 函数拉伸图像 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as plt
image = mh.imread('nature.jpeg')
# 拉伸图像
stretched = mh.stretch_rgb(image, arg0=100, arg1=280)
# 创建带有子图的图形
fig, axis = plt.subplots(1, 2, figsize=(10, 5))
# 显示原始图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].axis('off')
# 显示拉伸的灰度图像
axes[1].imshow(stretched, cmap='gray')
axes[1].set_title('Stretched Grayscale Image')
axes[1].axis('off')
# 调整布局并显示图
plt.tight_layout()
plt.show()
输出

以下是上述代码的输出−

Image Stretch RGB1

使用百分位数值拉伸图像

要在 Mahotas 中使用百分位数值拉伸 RGB 图像,我们可以手动计算百分位数,并在每个颜色通道上单独使用拉伸函数 −

  • 首先,将 RGB 图像拆分为单独的颜色通道(红色、绿色和蓝色)。
  • 这可以通过使用 NumPy 库中的 np.split() 函数来实现。
  • 拆分图像后,使用 NumPy 的 np.percentile() 函数计算每个颜色通道所需的百分位数。
  • 获得百分位数后,使用 Mahotas 中的 stretch() 函数对每个通道进行独立处理,使用计算出的最小值和最大值。
  • 这将拉伸每个通道所需百分位数范围内的像素值。

最后,通过沿颜色通道轴连接拉伸的通道,将它们合并回 RGB 图像。生成的图像将是基于指定百分位数的拉伸 RGB 图像。

示例

在这里,我们尝试拉伸具有百分位数的图像 −

import mahotas as mh
import numpy as np
from pylab import imshow, show
image = mh.imread('nature.jpeg')
# 将 RGB 图像分割成各个通道
r, g, b = np.split(image, 3, axis=2)
# 计算每个通道的百分位数
r_min, r_max = np.percentile(r, [17, 90])
g_min, g_max = np.percentile(g, [25, 75])
b_min, b_max = np.percentile(b, [50, 99])
# 独立拉伸每个通道
stretched_r = mh.stretch(r, r_min, r_max)
stretched_g = mh.stretch(g, g_min, g_max)
stretched_b = mh.stretch(b, b_min, b_max)
# 将拉伸的通道合并回 RGB 图像
stretched_image = np.concatenate((stretched_r, stretched_g, stretched_b),
axis=2)
imshow(stretched_image)
show()

输出

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

Image Stretch RGB2