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 中叠加图像

我们可以使用 overlay() 函数在 mahotas 中叠加图像。此函数确保叠加图像与基础图像对齐,同时考虑它们的尺寸和像素值。

如果需要,它会自动调整或裁剪覆盖图像以匹配基础图像的大小。

要在 mahotas 中覆盖图像,我们需要定义覆盖图像的透明度或 alpha 值。此值决定了覆盖图像将覆盖背景图像的程度。

mahotas.overlay() 函数

在 mahotas 中,我们使用 mahotas.overlay() 函数来覆盖图像。此函数接受单通道图像作为输入并返回生成的叠加图像。

mahotas.overlay() 函数为每个像素位置选择最大像素值,从而有效地组合两个图像的视觉内容。

当叠加图像具有透明度信息(例如 alpha 通道)时,此操作特别有用,因为它允许叠加图像的透明部分显示基础图像的内容。

语法

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

mahotas.overlay(gray, red=None, green=None, blue=None, if_gray_dtype_not_uint8= 'stretch')

参数

以下是 mahotas 中 overlay() 函数接受的参数 −

  • gray − 它是将叠加颜色通道的灰度图像。它充当叠加的画布。

  • red, blue , green (可选) − 这些表示将叠加在灰度图像上的各个颜色通道。它们可以作为表示每个颜色通道强度的单独数组提供。

    如果未指定任何颜色通道(设置为 None),则生成的叠加图像将仅包含灰度信息。

  • if_gray_dtype_not_uint8(可选) − 它定义如果输入图像的数据类型不是"np.uint8",则应执行的操作。默认为拉伸。

示例

在下面的示例中,我们尝试使用二进制掩码叠加图像(像素值为 0(背景)或 1(前景) −

import numpy as np
import mahotas as mh
import matplotlib.pyplot as plt
# 加载图像
image1 = mh.imread('sea.bmp')
image2 = mh.imread('tree.tiff')
image = mh.imread('sea.bmp', as_grey=True)
# 前景图像
mask = mh.imread('tree.tiff', as_grey=True) > 0
overlay = mh.overlay(image, mask)
# 在一个图中显示所有三幅图像
plt.figure(figsize=(10, 5))
# 显示图像 1
plt.subplot(1, 3, 1)
plt.imshow(image1)
plt.title('Image 1')
plt.axis('off')
# 显示图像 2
plt.subplot(1, 3, 2)
plt.imshow(image2)
plt.title('Image 2')
plt.axis('off')
# 显示叠加图像
plt.subplot(1, 3, 3)
plt.imshow(overlay, cmap='gray')
plt.title('Overlayed Image')
plt.axis('off')
plt.tight_layout()
plt.show()

输出

获得的输出如下所示 −

Overlaying Image

将透明图像叠加在另一幅图像上

要将透明图像叠加在另一幅图像上,我们通过创建 alpha 通道来创建透明叠加层,该通道确定每个像素的透明度。我们初始化一个与背景图像形状相同的零数组,表示 alpha 通道。

对于叠加图像中非零像素,我们将透明度值设置为大于 0。

现在,我们可以通过组合背景图像、叠加图像和 alpha 通道来叠加图像。

我们将背景图像乘以 (1 − alpha) 以降低叠加图像所在位置的强度,并将叠加图像乘以 alpha 通道以控制其透明度。最后,我们将两个组件加在一起。

示例

在这里,我们尝试将透明图像叠加在另一幅图像上 −

import numpy as np
import mahotas as mh
from pylab import imshow, show
# 加载图像
image = mh.imread('tree.tiff', as_grey=True)
overlay = mh.imread('sea.bmp', as_grey=True)
# 创建透明覆盖层
alpha = np.zeros(image.shape)
alpha[overlay > 0] = 0.5 # 设置覆盖中非零像素的透明度值
# 覆盖图像
result = mh.stretch(mh.stretch(image) * (1 - alpha) + overlay * alpha)
# 显示结果
imshow(result)
show()

输出

上述代码的输出如下 −

覆盖透明图像

覆盖具有指定透明度级别的图像

要覆盖具有指定透明度级别的图像,我们需要首先定义所需覆盖图像的透明度级别。

透明度级别是介于 0.0(完全透明)和 1.0(完全不透明)之间的值。此值决定了背景图像和覆盖图像之间的混合比率。

然后使用 alpha 混合,我们可以根据定义的透明度级别将图像合并在一起。然后,我们需要通过降低覆盖图像所在区域的背景图像强度来调整背景图像强度。

为此,我们将背景图像乘以 (1 − alpha)。然后,我们通过将覆盖图像与 alpha 值相乘来控制其透明度。

然后将调整后的背景图像和具有受控透明度的覆盖图像加在一起以创建最终的覆盖图像。

示例

现在,我们尝试覆盖具有指定透明度级别的图像 −

import numpy as np
import mahotas as mh
from pylab import imshow, show
# 加载图像
image = mh.imread('tree.tiff')
overlay = mh.imread('sea.bmp')
# 定义透明度级别
alpha = 0.5
# 使用 alpha 混合和透明度级别混合图像
result = mh.stretch(mh.stretch(image) * (1 - alpha) + overlay * alpha)
# 显示结果
imshow(result)
show()

输出

以下是上述代码的输出 −

Overlaying Transparent Image1