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 中,增加伽马校正是指在更改像素亮度时调整伽马值。

伽马是一个正值,其中 −

  • 小于 1 的伽马值将使图像变亮。

  • 大于 1 的伽马值将使图像变暗。

  • 伽马值为 1 表示无校正,表示像素值与亮度之间存在线性关系。

Mahotas 中的伽马校正涉及对图像的强度值应用幂律变换。幂律变换定义如下 −

new_intensity = old_intensity^gamma

这里,

  • old_intensity − 是像素的原始强度值

  • new_intensity − 是经过伽马校正后的变换强度值。

  • 伽马 决定了对图像应用的校正程度。

在 Mahotas 中,当伽马增加时,意味着强度值被提升到更高的幂。此调整会影响图像的整体亮度。

Mahotas 不提供进行伽马校正的直接方法,但可以通过使用 mahotas 和 numpy 库来实现。

示例

在下面的例子中,我们通过降低伽马值来使灰度图像变暗 −

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
# 加载图像
image = mh.imread('sea.bmp')
# 将其转换为灰度
gray_image = mh.colors.rgb2gray(image)
# 降低伽马值
corrected_gamma = 1.5
# 更新图像以使用校正后的伽马值
gamma_correction = np.power(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(gamma_correction, cmap='gray')
axes[1].set_title('Gamma Corrected图像')
axes[1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

以下是上述代码的输出 −

Gamma Correction

使用交互式 Gamma 校正滑块

交互式 Gamma 校正滑块是一个 GUI 元素,允许用户动态调整 Gamma 值。用户可以通过拖动滑块来增加或减少 Gamma 值,从而在显示屏上提供实时反馈。

我们可以使用 mahotas 中的交互式 Gamma 校正滑块来增加 Gamma 校正,首先确定所需的 Gamma 值以增加校正。

然后,通过将像素值提升为反伽马值的幂,将幂律变换应用于图像。

语法

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

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')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 为绘图创建图形和轴
fig, axis = mtplt.subplots()
# 显示原始图像
axis.imshow(image, cmap='gray')
axis.set_title('Gamma Correction')
axis.set_axis_off()
# 为伽马调整创建滑块
slider_axis = mtplt.axes([0.2, 0.05, 0.6, 0.03])
gamma_slider = Slider(slider_axis, 'Gamma', 0.1, 5.0, valinit=1.0)
# 根据滑块值的变化更新伽马校正和绘图
def update_gamma(val):
   gamma = gamma_slider.val
   corrected_image = np.power(image, gamma)
   axis.imshow(corrected_image, cmap='gray')
   fig.canvas.draw_idle()
gamma_slider.on_changed(update_gamma)
# 显示图形
mtplt.show()

输出

上述代码的输出如下。首先,我们尝试使用滑块增加伽马校正,如下所示 −

伽马校正滑块

现在,使用滑块减少伽马校正 −

伽马校正滑块1

使用批量伽马校正

批量伽马校正将多个伽马值应用于单个图像。这有助于并排比较不同伽马值的原始图像,以查看增加伽马校正的影响。

在 Mahotas 中,我们可以通过首先迭代预定伽马值列表,使用批量伽马校正来调整图像的亮度。然后在输入图像上应用具有不同伽马值的幂律变换。

示例

现在,我们尝试使用批量伽马校正减法来增加伽马值

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
from matplotlib.widgets import Slider
# 加载图像
image = mh.imread('sun.png')
# 将其转换为灰度
image = mh.colors.rgb2gray(image)
# 定义伽马值列表
gamma_values = [0.21, 0.82, 2, 5]
# 创建子图以显示每个伽马值的图像
fig, axis = mtplt.subplots(1, len(gamma_values) + 1)
axes[0].imshow(image, cmap='gray')
axes[0].set_title('Original Image')
axes[0].set_axis_off()
# 对每个伽马值应用伽马校正
for i, gamma in enumerate(gamma_values):
   corrected_image = np.power(image, gamma)
   axes[i + 1].imshow(corrected_image, cmap='gray')
   axes[i + 1].set_title(f'Gamma={gamma}')
   axes[i + 1].set_axis_off()
# 调整子图之间的间距
mtplt.tight_layout()
# 显示图形
mtplt.show()

输出

以下是上述代码的输出 −

批量伽马校正