VC++实现小波变换图像融合


用VC++开发实现的图像融合的源代码,用小波变换实现, 代码经测试可以编译运行。
资源截图
代码片段和文件信息
// Image.cpp: implementation of the CImage class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “WaveletDemo.h“
#include “Image.h“
#include “math.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define ff(ij)  ip[(i)*lx1+(j)]
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CImage::CImage()
{

}

CImage::~CImage()
{

}
//=================================
/* 一维小波正变换*/
//**********************************************
void CImage::Waveletrow(short int * dstshort int * src int len)
{
int imid;
short int * ptr;
short int * lowf;
short int * highf;
mid=len/2;
ptr=src;
lowf=dst;
highf=dst+mid;
//左边界处理
*highf =(short int)(ptr[1]-(ptr[2]+ptr[0])/2);//预测信号高频
*lowf =(short int)(ptr[0]+(highf[0]+highf[0])/4);//进一步提升
ptr+=2;
highf++;
lowf++;
//无边界各数据开始
for(i=1;i {
*highf =(short int)(ptr[1]-(ptr[2]+ptr[0])/2);
*lowf =(short int)(ptr[0]+(highf[0]+highf[-1])/4);
ptr+=2;
highf++;
lowf++;
}
//右边界处理
*highf =(short int)(ptr[1]-(ptr[0]+ptr[0])/2);
*lowf =(short int)(ptr[0]+(highf[0]+highf[-1])/4);
}
//================================
/* 二维小波正变换*/
//* dst=图像数据首地址指针
//* jp=图像变换结果首地址指针

//int width int height int level图像宽,高,
//***************************************************
void CImage::Wavelet2d(short int * dst short int * jp int width int height int level)
{
int l1;
int ij;
int k;
short int * tmp_columin;
short int * tmp_columout;
tmp_columin=new short int[height+height];
tmp_columout=tmp_columin +height;
//小波变换开始
for(l1=0;l1 {
int w=width>>l1;
int h=height>>l1;
//首先对行进行变换
for(i=0;i {
Waveletrow(jp+i*widthdst+i*widthw);
}
//再对列进行变换
for(i=0;i {
//先取出一列数据
for(j=0;j {
tmp_columin[j]=jp[j*width+i];
}
//对一维列数据进行变换
Waveletrow(tmp_columouttmp_columinh);
//结果存放
for(j=0;j {
jp[j*width+i]=tmp_columout[j];
}
}
//列完成
//完成一层小波变换,再为下一层准备
//上一层结果作为下一层输入
for(k=0;k dst[k]=jp[k];

}
  
delete tmp_columin;
}
//==========================
//********************************************
/*小波一维逆变换*/
//*dst--行逆变换的输出
//* src--一维变换的输入系数指针
//len=一维信号的长度
void CImage::Iversewavlet1d(short int * dst short int * srcint len)
{
int imid;
short int * ptr;
short int * lowf;
short int * highf;
mid=len/2;

ptr=dst;

lowf=src;
highf=src+mid;
//逆变换左边界处理
*ptr =(short int)(lowf[0]-((highf[0]+highf[0])/4));

ptr+=2;
highf++;
lowf++;

//无边界各系数开始
for(i=0;i {
ptr[0] =(short int)(lowf[0] - ((highf[0]+highf[-1])/4));
ptr[-1] =(short int)(highf[-1] + ((ptr[0]+ptr[-2])/2));
ptr+=2;
highf++;
lowf++;
}
//右边界处理

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     179606  2011-11-24 17:15  waveleta.tif

     文件      61590  2011-11-24 16:10  waveletaaa.JPG

     文件      65536  2006-06-15 09:31  waveletBaboon.raw

     文件      65536  2006-07-02 20:16  waveletoat.raw

     文件      27307  2009-03-25 14:44  waveletDebugImage.obj

     文件          0  2009-03-25 14:44  waveletDebugImage.sbr

     文件      19771  2009-03-25 14:44  waveletDebugMainFrm.obj

     文件          0  2009-03-25 14:44  waveletDebugMainFrm.sbr

     文件     105498  2009-03-25 14:44  waveletDebugStdAfx.obj

     文件    1374841  2009-03-25 14:44  waveletDebugStdAfx.sbr

     文件     214016  2009-03-31 17:09  waveletDebugvc60.idb

     文件     364544  2009-03-25 14:54  waveletDebugvc60.pdb

     文件    4858880  2009-03-25 14:54  waveletDebugWaveletDemo.bsc

     文件     135227  2009-03-25 14:54  waveletDebugWaveletDemo.exe

     文件     340400  2009-03-25 14:54  waveletDebugWaveletDemo.ilk

     文件      23081  2009-03-25 14:44  waveletDebugWaveletDemo.obj

     文件    6936216  2009-03-25 14:44  waveletDebugWaveletDemo.pch

     文件     459776  2009-03-25 14:54  waveletDebugWaveletDemo.pdb

     文件       7396  2007-11-22 10:42  waveletDebugWaveletDemo.res

     文件          0  2009-03-25 14:44  waveletDebugWaveletDemo.sbr

     文件      14835  2009-03-25 14:44  waveletDebugWaveletDemoDoc.obj

     文件          0  2009-03-25 14:44  waveletDebugWaveletDemoDoc.sbr

     文件      31240  2009-03-25 14:54  waveletDebugWaveletDemoView.obj

     文件          0  2009-03-25 14:54  waveletDebugWaveletDemoView.sbr

     文件      12226  2007-07-19 11:19  waveletImage.cpp

     文件       2029  2007-07-19 11:16  waveletImage.h

     文件     196662  2011-11-25 08:30  waveletlena.bmp

     文件      26424  2007-07-16 10:20  waveletlena1.bmp

     文件      65536  2005-03-06 10:01  waveletlena1.raw

     文件       2512  2005-10-28 10:37  waveletMainFrm.cpp

............此处省略34个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)