- 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 到 Sepia 转换
- 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 - Haralick 特征
- 标记区域的权重
- Mahotas - Zernike 特征
- Mahotas - Zernike 矩
- Mahotas - 排序滤波器
- Mahotas - 2D 拉普拉斯滤波器
- Mahotas - 多数滤波器
- Mahotas - 均值滤波器
- Mahotas - 中值滤波器
- Mahotas - Otsu 方法
- Mahotas - 高斯滤波
- Mahotas - 击中击不中变换
- Mahotas - 标记最大数组
- Mahotas - 图像平均值
- Mahotas - SURF 密集点
- Mahotas - SURF 积分图像
- Mahotas - Haar 变换
- 突出显示图像最大值
- 计算线性二值模式
- 获取标签边界
- 反转 Haar 变换
- Riddler-Calvard 方法
- 标记区域的大小
- Mahotas - 模板匹配
- 加速鲁棒特征
- 移除边界标记
- Mahotas - Daubechies 小波
- Mahotas - Sobel 边缘检测
Mahotas - Haar 变换
Haar 变换是一种用于将图像从像素强度值转换为小波系数的技术。小波系数是表示不同频率对图像贡献的数值。
在 Haar 变换中,图像被分解成一组称为 Haar 小波的正交基函数。
正交基函数指的是满足两个重要属性的数学函数:它与其他基函数垂直(或正交),并且其系数长度为 1。
基函数是由单个小波通过缩放和平移生成的。缩放是指改变小波函数的持续时间,而平移则涉及沿 x 轴移动小波函数。
Mahotas 中的 Haar 变换
在 Mahotas 中,我们可以使用 **mahotas.haar()** 函数对图像执行 Haar 变换。以下是执行图像 Haar 变换的基本方法:
**图像分割** - 第一步涉及将输入图像划分为大小相同的非重叠块。
**平均和差分** - 接下来,在每个块内计算低频系数和高频系数。低频系数表示图像的平滑全局特征,并计算为像素强度的平均值。高频系数表示图像的锐利局部特征,并通过查找相邻像素之间的差异来计算。
**下采样** - 然后对生成的低频系数和高频系数进行下采样(降级),方法是丢弃每一行和每一列中的交替值。
步骤 2 和 3 重复,直到整个图像都被转换。
mahotas.haar() 函数
mahotas.haar() 函数以灰度图像作为输入,并将小波系数作为图像返回。小波系数是数组的元组。
第一个数组包含低频系数,第二个数组包含高频系数。
语法
以下是 mahotas 中 haar() 函数的基本语法:
mahotas.haar(f, preserve_energy=True, inline=False)
其中,
**f** - 它表示输入图像。
**preserve_energy(可选)** - 它指定是否保留输出图像的能量(默认值为 True)。
**inline(可选)** - 它指定是返回新图像还是修改输入图像(默认值为 False)。
示例
在以下示例中,我们使用 mh.haar() 函数对图像应用 Haar 变换。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('sea.bmp') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying Haar transformation haar_transform = mh.haar(image) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original image axes[0].imshow(image, cmap='gray') axes[0].set_title('Original Image') axes[0].set_axis_off() # Displaying the Haar transformed image axes[1].imshow(haar_transform, cmap='gray') axes[1].set_title('Haar Transformed Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
输出
以下是上述代码的输出:
不保留能量
我们还可以对图像执行 Haar 变换而不保留能量。图像的能量指的是其亮度,当图像从一个域转换到另一个域时,它可能会发生变化。
在 mahotas 中,mh.haar() 函数的 **preserve_energy** 参数决定是否保留输出图像的能量。如果我们不想保留能量,可以将此参数设置为 False。
因此,输出图像的亮度将与输入图像的亮度不同。
如果此参数设置为 True,则输出图像和输入图像将具有相同的亮度。
示例
在下面提到的示例中,我们正在对图像执行 Haar 变换而不保留其能量。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('tree.tiff') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying Haar transformation haar_transform = mh.haar(image, preserve_energy=False) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 2) # Displaying the original image axes[0].imshow(image, cmap='gray') axes[0].set_title('Original Image') axes[0].set_axis_off() # Displaying the Haar transformed image axes[1].imshow(haar_transform, cmap='gray') axes[1].set_title('Haar Transformed Image') axes[1].set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
输出
上述代码的输出如下:
内联 Haar 变换
我们还可以对输入图像执行内联 Haar 变换。内联指的是在原始图像本身上应用变换,而无需创建新图像。
这使我们能够在对图像应用变换时节省空间。
在 mahotas 中,可以通过在 mh.haar() 函数中将 **inline** 参数设置为布尔值 True 来实现内联 Haar 变换。这样,就不需要创建新图像来存储输出。
示例
在这里,我们正在对输入图像执行内联 Haar 变换。
import mahotas as mh import numpy as np import matplotlib.pyplot as mtplt # Loading the image image = mh.imread('sun.png') # Converting it to grayscale image = mh.colors.rgb2gray(image) # Applying Haar transformation mh.haar(image, preserve_energy=False, inline=True) # Creating a figure and axes for subplots fig, axes = mtplt.subplots(1, 1) # Displaying the transformed image axes.imshow(image, cmap='gray') axes.set_title('Haar Transformed Image') axes.set_axis_off() # Adjusting spacing between subplots mtplt.tight_layout() # Showing the figures mtplt.show()
输出
执行上述代码后,我们将获得以下输出:
**注意** - 由于输入图像在转换过程中被覆盖,因此输出屏幕将仅包含上面显示的单个图像。