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.stretch() 函数对图像进行拉伸伽马校正。

在伽马校正中,大于 1 的伽马值会增加图像的对比度,而小于 1 的伽马值会降低对比度。

因此,通过拉伸伽马,图像的暗区变得更暗,亮区变得更亮,从而导致不同色调和细节之间的区别更加明显。

使用 mahotas.stretch() 函数

mahotas.stretch() 函数将图像作为输入并返回图像的锐化版本作为输出。生成的图像对比度增强,细节可见性提高。

stretch() 函数确定图像中的最小和最大强度值,并将它们转换为全范围像素值(8 位图像为 0−255)。

语法

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

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

其中,

  • image − 它是输入图像。

  • arg0(可选) −它是输出的最小值(默认为 0)。

  • arg1(可选) − 它是输出的最大值(默认为 255)。

  • dtype(可选) − 它是输出图像的数据类型(默认为 uint8)。

示例

在下面的例子中,我们使用 mh.stretch() 函数增加灰度图像的对比度 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sun.png')
# 转换为灰度
gray_image = mh.colors.rgb2gray(image)
# 降低伽马值
corrected_gamma = 3.2
# 应用拉伸伽马校正图像
stretch_gamma_corrected = mh.stretch(gray_image, corrected_gamma)
# 为子图创建图形和轴
fig, axis = mtplt.subplots(1, 2)
# 显示原始图像
axes[0].imshow(gray_image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示拉伸伽马校正图像
axes[1].imshow(stretch_gamma_corrected, cmap='gray')
axes[1].set_title('Stretched伽马校正图像')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()
输出

以下是上述代码的输出 −

拉伸伽马校正

拉伸 RGB 图像的伽马校正

我们还可以使用 stretch() 函数在 mahotas 中对 RGB 图像执行拉伸伽马校正。拉伸函数中使用的伽马值决定了对比度增强的程度。

然后,我们可以将拉伸后的图像转换回 RGB 颜色空间,方法是将其乘以 255(RGB 图像的最大强度)。

示例

以下示例显示了 RGB 图像对比度的增加 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('nature.jpeg')
# 应用拉伸伽马校正
stretched_gamma_corrected = mh.stretch(image, 3)
# 将图像转换回 RGB
stretched_gamma_corrected = stretched_gamma_corrected * 255
# 创建子图以显示图像
fig, axis = mtplt.subplots(1, 2)
# 显示原始 RGB 图像
axes[0].imshow(image)
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 显示拉伸图像
axes[1].imshow(stretched_gamma_corrected)
axes[1].set_title('Stretched Gamma Corrected Image')
axes[1].set_axis_off()
# 调整间距子图
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

上述代码的输出如下 −

Stretching Gamma RGB Image

交互式拉伸伽马校正滑块

交互式拉伸伽马校正滑块是一个 GUI 元素,允许用户通过拖动滑块来调整伽马值以动态更改对比度。

  • 要在 Mahotas 中使用交互式滑块拉伸伽马校正,首先创建一个用于调整伽马值的滑块。
  • 然后,实现一个函数,在移动滑块时检索新的伽马值,并将拉伸伽马校正应用于图像。
  • 最后,将函数连接到滑块的值更改事件,以便在滑块移动时自动调用该函数。

语法

以下是创建交互式滑块的基本语法 −

from matplotlib.widgets import Slider
Slider(slider_axis, name, min_value, max_value, valint)

其中,

  • slider_axis − 它是一个定义滑块位置和尺寸的列表。

  • name − 它是滑块的名称。

  • mini_value − 它是滑块可以达到的最小值。

  • max_value − 它是滑块可以达到的最大值。

  • valint −它是滑块的起始值。

示例

在此示例中,我们使用交互式滑块 − 增加对比度

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
from matplotlib.widgets import Slider
# 加载图像
image = mh.imread('tree.tiff')
# 为绘图创建图形和轴
fig, axis = mtplt.subplots()
# 显示原始图像
axis.imshow(image)
axis.set_title('拉伸伽马校正')
axis.set_axis_off()
# 为拉伸伽马调整创建滑块
slider_axis = mtplt.axes([0.2, 0.05, 0.6, 0.03])
stretched_gamma_slider = Slider(slider_axis, 'Stretched Gamma', 0.1, 5.0,
valinit=1.0)
# 更新拉伸伽马校正并根据滑块值的变化绘制图表
def update_stretched_gamma(val):
   stretched_gamma = stretched_gamma_slider.val
   corrected_image = mh.stretch(image, stretched_gamma)
   corrected_image = corrected_image * 255
   axis.imshow(corrected_image)
   fig.canvas.draw_idle()
stretched_gamma_slider.on_changed(update_stretched_gamma)
# 显示图形
mtplt.show()

输出

产生的输出如下 −

Stretching Gamma Slider