资源简介

用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  wavelet\a.tif

     文件      61590  2011-11-24 16:10  wavelet\aaa.JPG

     文件      65536  2006-06-15 09:31  wavelet\Baboon.raw

     文件      65536  2006-07-02 20:16  wavelet\boat.raw

     文件      27307  2009-03-25 14:44  wavelet\Debug\Image.obj

     文件          0  2009-03-25 14:44  wavelet\Debug\Image.sbr

     文件      19771  2009-03-25 14:44  wavelet\Debug\MainFrm.obj

     文件          0  2009-03-25 14:44  wavelet\Debug\MainFrm.sbr

     文件     105498  2009-03-25 14:44  wavelet\Debug\StdAfx.obj

     文件    1374841  2009-03-25 14:44  wavelet\Debug\StdAfx.sbr

     文件     214016  2009-03-31 17:09  wavelet\Debug\vc60.idb

     文件     364544  2009-03-25 14:54  wavelet\Debug\vc60.pdb

     文件    4858880  2009-03-25 14:54  wavelet\Debug\WaveletDemo.bsc

     文件     135227  2009-03-25 14:54  wavelet\Debug\WaveletDemo.exe

     文件     340400  2009-03-25 14:54  wavelet\Debug\WaveletDemo.ilk

     文件      23081  2009-03-25 14:44  wavelet\Debug\WaveletDemo.obj

     文件    6936216  2009-03-25 14:44  wavelet\Debug\WaveletDemo.pch

     文件     459776  2009-03-25 14:54  wavelet\Debug\WaveletDemo.pdb

     文件       7396  2007-11-22 10:42  wavelet\Debug\WaveletDemo.res

     文件          0  2009-03-25 14:44  wavelet\Debug\WaveletDemo.sbr

     文件      14835  2009-03-25 14:44  wavelet\Debug\WaveletDemoDoc.obj

     文件          0  2009-03-25 14:44  wavelet\Debug\WaveletDemoDoc.sbr

     文件      31240  2009-03-25 14:54  wavelet\Debug\WaveletDemoView.obj

     文件          0  2009-03-25 14:54  wavelet\Debug\WaveletDemoView.sbr

     文件      12226  2007-07-19 11:19  wavelet\Image.cpp

     文件       2029  2007-07-19 11:16  wavelet\Image.h

     文件     196662  2011-11-25 08:30  wavelet\lena.bmp

     文件      26424  2007-07-16 10:20  wavelet\lena1.bmp

     文件      65536  2005-03-06 10:01  wavelet\lena1.raw

     文件       2512  2005-10-28 10:37  wavelet\MainFrm.cpp

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

评论

共有 条评论