资源简介
用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个文件信息
相关资源
- VC++车牌识别系统源码带可执行程序
- VC++实现ShePp_Logan模型设计
- VC++调用大漠插件按键精灵的方法及演
- VC++多文档程序可新建文本编辑器和画
- 直线段的裁剪 vc++ MFC
- vC++编程精选100
- VC++头文件库
- 网络五子棋全功能版
- 成绩查询系统VC++源代码
- VC++实现视频采集
- VC++ 图像文字提取
- VC++6.0安装包中文版
- VC++窗口和控件自适应屏幕尺寸改.ra
- devc++5.11284673
- 《深入体验VC++项目开发》源代码
- VC++6.0 安装包,及Windows10安装解决方案
- VC++6.0中文破解版
- 用opengl和VC++实现的地球仪
- 网络台球游戏的源代码(vc++)
- vc++网络游戏建模与实现-cdrom源码
- 分形算法与程序设计_VC++实现电子书源
- vc++6.0win8可用
- VC++ OPENCV CT简单重建实现及PPT
- 官网DevC++ 5.2
- vc++安装包试用win7&&win8
- VC++与JS交互源码——百度地图
- VC++下的语音识别源代码
- VC++远程桌面监控系统
- VC++深入详解(完整版)+所有源代码集
- vc2015c++安装包
评论
共有 条评论