SSE2实现HAAR小波变换(dwt2与idwt2)

利用SSE2指令集,实现了HAAR小波变换的实时计算,参照MATLAB的dwt2和idwt2函数。该变换在图像压缩中应用,通过设定阈值使图像矩阵稀疏化,影响解压缩质量。实际实现中,可以选择浮点或整数计算以平衡速度和精度。
摘要由CSDN通过智能技术生成

wiki链接:http://en.wikipedia.org/wiki/Haar_wavelet

 

可用SSE2实现HAAR小波变换,达到实时,关于HAAR小波的介绍可参考以上维基链接

 参考MATLAB中dwt2与idwt2的函数原型,基于OpenCV的框架进行了汇编优化实现

HAAR小波也可用于图像的压缩,将CH,CV,CD中的分量值小于某一阈值则归为0,从而这三个矩阵将成为稀疏矩阵(Sparse Matrix),反变换后的图像的质量将取决于选择阈值的大小。

 

实际实现时,可选择使用浮点数(单精度或双精度)进行矩阵计算,使用整数计算能得到更快的速度但不能进行完整的压缩与解压缩。

 

附代码:

 

inline void dwt2_row(__out double* ca0,
					 __out double* ch0,
					 __out double* cv0,
					 __out double* cd0,
					 __in unsigned char* row0,
					 __in unsigned char* row1,
					 __in int col)
{
	__asm
	{
		mov			eax_ptr, ca0;
		mov			ebx_ptr, ch0;
		mov			ecx_ptr, cv0;
		mov			edx_ptr, cd0;
		mov			esi_ptr, row0;
		mov			edi_ptr, row1;
		pxor		xmm3, xmm3;
		movapd		xmm7, g_halfd;
		sub			c
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值