# haart2
Haar 二维小波变换
函数库: TyWavelet
# 语法
a, h, v, d = haart2(x)
a, h, v, d = haart2(x, level)
a, h, v, d = haart2(___, integerflag)
# 说明
a, h, v, d = haart2(x) 对矩阵x进行二维Haar离散小波变换(DWT)。x是二维、三维或四维矩阵,行维和列维长度相等。如果x是4d,则维度是spatial -by- space -by- channel -by- batch。Haar变换总是沿着输入的行维和列维计算。如果x的行维和列维是2的幂,则得到Haar变换直到log2(min(size(x,1),size(x,2)))级。如果x的行维或列维是偶数,但不是2的幂,则得到Haar变换到底层log2(min(size(x,1),size(x,2))/2)。 示例
Haart2返回最粗略级别的近似系数a。Haart2还返回按级别包含水平、垂直和对角线细节系数的矩阵单元格数组。如果二维哈尔变换仅在分辨率较粗的一个层次上计算,则h、v和d是矩阵。默认级别取决于x的行数。
a, h, v, d = haart2(x, level) 获取到指定级别的 Haar 变换。示例
a, h, v, d = haart2(___, integerflag) 指定 Haar 变换如何处理整数值的数据,可使用之前的任何一种语法。示例
# 示例
二维数据的haar变换和一级细节
获取二维数据的二维Haar变换,绘制其对角线和水平一级细节。
using TyWavelet
using TyBase
using TyPlot
pkg_dir = pkgdir(TyWavelet)
source_path = pkg_dir * "/examples/Resources/xbox.mat"
y = load(source_path)
xbox = y["xbox"]
a, h, v, d = haart2(xbox)
imagesc(xbox)
figure()
subplot(2, 1, 1)
imagesc(d[1])
title("Diagonal Level 1 Details")
subplot(2, 1, 2)
imagesc(h[1])
title("Horizontal Level 1 Details")
指定分解级数下的图像haar小波变换
展示了限制二维Haar变换的最大电平对图像的影响。
加载并显示摄影师的图像。
using TyWavelet
using TyImages
pkg_dir = pkgdir(TyWavelet)
source_path = pkg_dir * "/examples/Resources/cameraman.tif"
im1 = imread(source_path)
imagesc(im1)
获得2级的二维哈尔变换,并查看2级近似。
a2, h2, v2, d2 = haart2(im1, 2)
imagesc(a2)
整数图像数据的haar小波变换
比较使用默认的"noninteger"标志和"integer"标志的二维哈尔变换结果。摄影师的图像是uint8数据,所以它的最大值是255。
计算默认Haar变换。近似细节系数在0到255的范围之外。
using TyWavelet
using TyImages
pkg_dir = pkgdir(TyWavelet)
source_path = pkg_dir * "/examples/Resources/cameraman.tif"
im1 = imread(source_path)
a, h, v, d = haart2(im1)
a
0-dimensional Array{Float64, 0}:
30393.46875
计算哈尔变换,将其限制为整数值。近似细节是一个整数,并且在原始图像数据的范围内。
a, h, v, d = haart2(im1, "integer")
a
0-dimensional Array{Int64, 0}:
119
# 输入参数
x - 输入信号矩阵
输入信号,指定为二维、三维或4d实值矩阵。如果x是4d,则维度是spatial -by- space -by- channel -by- batch。x的行和列的大小必须是偶数长度。
level - 最大层级正整数
执行最大层级的 Haar 变换,指定为正整数。
如果 x 的长度是 2 的幂,level 是一个小于或等于 log2(min(size(x,1),size(x,2))) 的正整数。
如果 x 的长度是偶数,但不是 2 的幂,则 level 是一个正整数,小于或等于 log2(min(size(x,1),size(x,2))/2)。
如果level大于1,则h、v和d是元组。如果level等于1,则h, v, d是矩阵。x的列大小必须是偶数长度。
integerflag - 整数值数据处理"noninteger"(默认)| "integer"
整数值数据处理,指定为 "noninteger" 或 "integer"。"noninteger" 在 Haar 变换中不保留整数值数据,而 "integer" 则保留了整数值。"integer" 选项只适用于输入的所有元素 x 是整数的情况。
对于整数值的输入,haart 返回整数值的小波系数。
然而,对于 "noninteger" 和 "integer",Haar 变换算法使用浮点运算。
# 输出参数
a - 近似系数标量 | 矩阵
最粗略尺度的近似系数,根据计算变换的级别,以标量或系数矩阵的形式返回。近似或缩放系数是输入的低通表示。在每个层次上,近似系数分为粗近似系数和细系数。
h - 水平细节系数 矩阵 | 元组
按级别返回的水平细节系数,作为矩阵或矩阵单元数组返回。如果level大于1,则h是元组。如果level等于1,则二维Haar变换仅在分辨率较粗的一级计算,并且h是一个矩阵。
v - 垂直细节系数 矩阵 | 元组
按级别返回的垂直细节系数,作为矩阵或矩阵单元数组返回。如果level大于1,则v是元组。如果level等于1,则二维Haar变换仅在分辨率较粗的一级计算,并且v是一个矩阵。
d - 对角线细节系数 矩阵 | 元组
按级别返回的对角线细节系数,作为矩阵或矩阵单元数组返回。如果level大于1,则d是元组。如果level等于1,则二维Haar变换仅在分辨率较粗的一级计算,并且d是一个矩阵。