bfsize=1<<power-k for(i=0:i<bfsize/2:i++) p=j*bfsize: X2[i+p]=X1[i+p]+X1[i+p+bfsize/2]: X2[i+p+bfsize/2]=X1[i+p]-X1[i+p+bfsize/2]: X=X1: X1=X2 X2=X: /*调整系数* for(i=0:i<count;i++) W[i]=X1[i]/count: /释放存储器*/ free(X1); free (X2): /*快速沃尔什-哈达玛反变换,利用快速沃尔什-哈达玛变换 F为变换域值,f为时域值,power为2的幂数* void IWALh(double *W,double *f,int power) int i,count: count=1<<power /体调用快速沃尔什-哈达玛变换*/ WALh (W,f.power): /*调整系数*/ for (i=0:i<count:i++) f[i]#=count: 附录四、 二维小波分解与熏构程序实例 /林***(基于Windows的二维小波分解与重构BC+4.5)*华***/ #include <owl/owlpch.h>
{ bfsize=1<<power-k; for(i=0;i<bfsize/2;i++) { p=j*bfsize; X2[i+p]=X1[i+p]+X1[i+p+bfsize/2]; X2[i+p+bfsize/2]=X1[i+p]-X1[i+p+bfsize/2]; } } X=X1; X1=X2; X2=X; } /*调整系数*/ for(i=0;i<count;i++) { W[i]=X1[i]/count; } /*释放存储器*/ free(X1); free(X2); } /*快速沃尔什-哈达玛反变换,利用快速沃尔什-哈达玛变换 F 为变换域值,f 为时域值,power 为 2 的幂数*/ void IWALh(double *W, double *f, int power) { int i,count; count=1<<power; /*调用快速沃尔什-哈达玛变换*/ WALh(W,f,power); /*调整系数*/ for(i=0;i<count;i++) { f[i]*=count; } } 附录四、二维小波分解与重构程序实例 // *********(基于 Windows 的二维小波分解与重构 BC++4。5)**********// #include <owl/owlpch.h>
#include <owl/applicat.h> #include <owl/dc.h> #include <owl/menu.h> #include <owl/framewin.h #include <owl/scroller.h> #include <owl/opensave.h> #include <owl/clipview.h> #include〈string.h #include <alloc.h> #include <dir.h> #include <math.h> #include "stdio.h" #include "stdlib.h" #include "bmpview.h" #define PI 3.1415926 #define SIZE 256 #define DD 13 f1oath[DD]={-0.00332761,0.00569794.0.0196637,-0.0482603,-0.0485391, 0.292562,0.564406,0.292562,-0.0485391,-0.0482602,-0.0196637 0.00569794.-0.00332761· f1oatg[DD]=f0.00332761,0.00569794,-0.0196637,-0.0482603,0.0485391 0.292562,-0.564406,0.292562,0.0485391,-0.0482602,0.0196637, 0.00569794,0.0033276: float hi[DD],gi[DD]: int wavelet_direction=1; int a(int x,int xsize) //Threshold// int s(float x); //Set Inverse Filter Coefficients// oid coefo. /***avelet Transform********林/ void wt(int xs,int ys,long xsize,long ysize); //*****Inverse Wavelet Transform*****************// void iwt(int xs,int ys,long xsize,long ysize); float *img[SIZE],*imgx [SIZE],*imgy [SIZE] //**for evolution agents**// int AgentNum,ActiveAgent:
#include <owl/applicat.h> #include <owl/dc.h> #include <owl/menu.h> #include <owl/framewin.h> #include <owl/scroller.h> #include <owl/opensave.h> #include <owl/clipview.h> #include <string.h> #include <alloc.h> #include <dir.h> #include <math.h> #include "stdio.h" #include "stdlib.h" #include "bmpview.h" #define PI 3.1415926 #define SIZE 256 #define DD 13 float h[DD]={-0.00332761,0.00569794,0.0196637,-0.0482603,-0.0485391, 0.292562,0.564406,0.292562,-0.0485391,-0.0482602,-0.0196637, 0.00569794,-0.0033276}; float g[DD]={0.00332761,0.00569794,-0.0196637,-0.0482603,0.0485391, 0.292562,-0.564406,0.292562,0.0485391,-0.0482602,0.0196637, 0.00569794,0.0033276}; float hi[DD],gi[DD]; int wavelet_direction=1; int a(int x,int xsize); //Threshold// int s(float x); //Set Inverse Filter Coefficients// void coef(); //********Wavelet Transform************************// void wt(int xs,int ys,long xsize,long ysize); //*****Inverse Wavelet Transform*********************// void iwt(int xs,int ys,long xsize,long ysize); float *img[SIZE],*imgx[SIZE],*imgy[SIZE]; //****for evolution agents*****// int AgentNum,ActiveAgent;
int SolutionX[1000],SolutionY[1000]: int SearchNum,AgentLife int Agent[0][2] int isAgentAlive[1000] int SearchTime; unsigned short Image[32][32]: #define MAXAPPNAME 20 static const char AppName[]="Image Processing"; /TBmpViewindow,a Bitmap displaying window derived from TClipboardViewer PIo)sopoqdT jo /an additional base was desired. class TSubWindow public TFrameWindow public: TSubWindow(TWindow*parent): TSubWindow O: protected: void EvSize(UINT sizeType,TSize&size) (Invalidate();TFrameWindow::EvSize(sizeType,size);} void Paint(TDC&dc,bool,TRect&): DECLARE RESPONSE TABLE(TSubWindow): DEFINE_RESPONSE_TABLE1(TSubWindow,TFrameWindow) EV_WM_SIZE, END RESPONSE TABLE: //pointers to different child windows TWindow*SubWinPtr 0: TSubWindow:TSubWindow(TWindow*parent) TFrameWindow(parent) Attr.Style | WS_VISIBLE I WS_POPUP WS_OVERLAPPEDWINDOW Attr.X 100; Attr.Y =100; Attr.W=300:
int SolutionX[1000],SolutionY[1000]; int SearchNum,AgentLife; int Agent[1000][2]; int isAgentAlive[1000]; int SearchTime; unsigned short Image[32][32]; #define MAXAPPNAME 20 static const char AppName[] = "Image Processing"; // // TBmpViewWindow, a Bitmap displaying window derived from TClipboardViewer to // facilitate receiving of clipboard change notifications. Could mix it in if // an additional base was desired. // class TSubWindow : public TFrameWindow { public: TSubWindow(TWindow* parent); ~TSubWindow(); protected: void EvSize(UINT sizeType, TSize& size) {Invalidate(); TFrameWindow::EvSize(sizeType, size);} void Paint(TDC& dc, bool, TRect&); DECLARE_RESPONSE_TABLE(TSubWindow); }; DEFINE_RESPONSE_TABLE1(TSubWindow, TFrameWindow) EV_WM_SIZE, END_RESPONSE_TABLE; // pointers to different child windows. // TWindow* SubWinPtr = 0; TSubWindow::TSubWindow(TWindow* parent) : TFrameWindow(parent) { Attr.Style |= WS_VISIBLE | WS_POPUP | WS_OVERLAPPEDWINDOW, Attr.X = 100; Attr.Y = 100; Attr.W = 300;
Attr.H=400: /Destroy window.SubWinPtr[Type]is set to 0 to indicate that the window /has be closed. TSubWindow::TSubWindowO SubWinPtr 0: void TSubWindow::Paint(TDC&de,bool,TRect&) class TBmpViewWindow:virtual public TWindow,public TClipboardViewer( public char FileName [MAXPATH] TDib* Dib: TBitmap*Bitmap: TMemoryDC pMemDC: TBrush* BkgndBrush: long ROp: int PixelWidth: int PixelHeight: WORD Colors Fit: bool AutoClipView: /unsigned char far *f[256],*g[256]: void ShowSubWindow(TWindow*parent): protected: void CmFileOpen(): void CmCopy(); CmPasteO: CmFit(); void CmAutoClipview(): void CeCopy(TCommandEnabler&ce): void CePaste(TCommandEnabler&ce):
Attr.H = 400; } // // Destroy window. SubWinPtr[Type] is set to 0 to indicate that the window // has be closed. // TSubWindow::~TSubWindow() { SubWinPtr = 0; } void TSubWindow::Paint(TDC& dc, bool, TRect&) { } class TBmpViewWindow : virtual public TWindow, public TClipboardViewer { public: char FileName[MAXPATH]; TDib* Dib; TBitmap* Bitmap; TMemoryDC * pMemDC; TPalette* Palette; TBrush* BkgndBrush; long Rop; int PixelWidth; int PixelHeight; WORD Colors; bool Fit; bool AutoClipView; // unsigned char far *f[256],*g[256]; TBmpViewWindow(); ~TBmpViewWindow(); void ShowSubWindow(TWindow* parent); protected: void CmFileOpen(); void CmCopy(); void CmPaste(); void CmFit(); void CmAutoClipView(); void CeCopy(TCommandEnabler& ce); void CePaste(TCommandEnabler& ce);
void CeFit(TCommandEnabler&ce): oid CeAutoClipView(TCommandEnabler&ce) mage Processing void CmWavelet(): void CmAgent(): 厂/来率家率率球球球米率率球率球米球/ void Paint(TDC&,bool erase,TRect&): EvSiz izeType,TSize&) void EvPaletteChanged (HWND hWndPalChg): bool EvQueryNewPalette(): void EvSetFocus(HWND):/should use above when working EvDrawClipboard( EvDestroy ( bool UpdatePalette(bool alwaysRepaint): void AdjustScroller(): void bool LoadBitmapFile(const char*) bool LoadBitmapResource (WORD ResId) DECLARE RESPONSE TABLE(TBmpViewwindow) DEFINE_RESPONSE_TABLE2(TBmpViewWindow,TClipboardViewer,TWindow) EV_COMMAND(CM_FILEOPEN,CmFileOpen), EV COMMAND (CM EDITCOPY.CmCopy) EV COMMAND (CM EDITPASTE,CmPaste) EV_COMMAND(CM_FIT,CmFit) EV_COMMAND(CM_AUTOCLIPVIEW,CmAutoClipView), EV COMMAND ENABLE (CM EDITCOPY.CeCopy). EV_COMMAND_ENABLE(CM_EDITPASTE,CePaste), EV COMMAND ENABLE (CM FIT.Cefit). EV_COMMAND_ENABLE(CM_AUTOCLIPVIEW,CeAutoClipView) //家***冰Image Processing***********冰**// EV_COMMAND(CM_WAVELET,CmWavelet), EV COMMAND (CM AGENT.CmAgent). EV_WM_SIZE, EV_WM_PALETTECHANGED EV_WM_QUERYNEWPALETTE
void CeFit(TCommandEnabler& ce); void CeAutoClipView(TCommandEnabler& ce); //*** Image Processing**// void CmWavelet(); void CmAgent(); //**********************// void Paint(TDC&, bool erase, TRect&); void EvSize(UINT sizeType, TSize&); void EvPaletteChanged(HWND hWndPalChg); bool EvQueryNewPalette(); void EvSetFocus(HWND); // should use above when working void EvDrawClipboard(); void EvDestroy(); bool UpdatePalette(bool alwaysRepaint); void AdjustScroller(); void SetCaption(const char*); void SetupFromDib(TDib* dib); bool LoadBitmapFile(const char*); bool LoadBitmapResource(WORD ResId); DECLARE_RESPONSE_TABLE(TBmpViewWindow); }; DEFINE_RESPONSE_TABLE2(TBmpViewWindow, TClipboardViewer, TWindow) EV_COMMAND(CM_FILEOPEN, CmFileOpen), EV_COMMAND(CM_EDITCOPY, CmCopy), EV_COMMAND(CM_EDITPASTE, CmPaste), EV_COMMAND(CM_FIT, CmFit), EV_COMMAND(CM_AUTOCLIPVIEW, CmAutoClipView), EV_COMMAND_ENABLE(CM_EDITCOPY, CeCopy), EV_COMMAND_ENABLE(CM_EDITPASTE, CePaste), EV_COMMAND_ENABLE(CM_FIT, CeFit), EV_COMMAND_ENABLE(CM_AUTOCLIPVIEW, CeAutoClipView), //*****Image Processing***************// EV_COMMAND(CM_WAVELET,CmWavelet), EV_COMMAND(CM_AGENT,CmAgent), //***************************************// EV_WM_SIZE, EV_WM_PALETTECHANGED, EV_WM_QUERYNEWPALETTE