資源簡介
用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個文件信息
評論
共有 條評論