WHT, SLANT, Haar

Gonzalez R. C. and Woods R. E. Digital Image Processing (Forth Edition)

基本

酉变换

一维的变换:

t=Af,f=AHt,AH=AT,AHA=I.

以及二维的变换:

T=AFBT,F=AHTB,AHA=I,BTB=I.

以一维的为例, 实际上就是

tu=x=0N1fxs(x,u)=fTsu,u=0,1,,N1,su=[s(0,u),s(1,u),,s(N1,u)]T.

A=[s0,,sN1]T.

注: 下面假设:N=2n.

WALSH-HADAMARD TRANSFORMS

s(x,u)=1N(1)i=0n1bi(x)bi(u),

注意, 这里bi(u)表示u的二进制的第i位, 比如4的二进制为100, 此时b0=0,b2=1.

变换矩阵可以通过更通俗易懂的方式搭建:

AW=1NHN,H2N=[HNHNHNHN],H2=[1111].

sequency-ordered WHT

H4=[1111111111111111].

可以发现, 第1行(u=0,1,2,3)的符号变换最快的(类似与DFT中的频率的概念), 故sequency-order, 即按照符号变换快慢的递增排列, 其公式如下:

s(x,u)=1N(1)i=0n1bi(x)pi(u),p0(u)=bn1(u),pn1i(u)=bi(u)+bi+1(u),i=0,,n2.

HW为sequency-order的, 则 HW的第u行与HW的第v行存在如下的关系:

  1. 考虑nbit的二进制, 则

u:(un1un2u0),v:(vn1vn2v0).

  1. u转换成其gray code格式

gi=uiui+1,i=0,,n2gn1=sn1.

其中表示异或操作.
3. 对g进行bit-reverse, 即gi,gn1i调换位置, 则

vi=gn1i.

举个例子, 假设n=3, u=4=(100)2, 则g=(110)2, v=(011)2=3. 即H8的第4行为H8的第3行(注意均从0开始计数).

proof:

pn1i(u)=bi(u)+bi+1(u)bi(g)=bn1i(v).

注意, 是这样的, bi+bi+1仅有(0, 1, 2)三种可能性, 而(1)1=1否则为1,而bi(g)=1恰好是bi(u)+bi+1(u)=1 (根据异或的定义可得), 故可能等价替换.

p0(u)=b0(v),

是显然的, 证毕.

下图便是按照sequency增序的表示.

SLANT TRANSFORM

ASI=1NSN,SN=[100100aNbN0aNbN000I(N/2)200I(N/2)2010010bNaN0bNaN000I(N/2)200I(N/2)2][SN/200SN/2],S2=[1111],aN=[3N24(N21)]1/2,bN=[N244(N21)]1/2.

标准正交性质是容易证明的, 需要特别注意的是, 改变换矩阵是非对称的, 所以逆变换是需要计算逆的ASI1.

Haar Transform

Haar 是一种小波变换, 这里简单写一下.

s(x,u)=1Nhu(x/N),x=0,1,,N1,u=2p+q,hu(x)={1u=0and0x<1,2p/2u>0andq/2p<(q+0.5)/2p,2p/2u>0and(q+0.5)/2p<(q+1)/2p,0otherwise.

posted @   馒头and花卷  阅读(174)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示