ImageVerifierCode 换一换
格式:DOC , 页数:131 ,大小:707.50KB ,
资源ID:4199512      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4199512.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(数字图像处理C语言程序实例.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数字图像处理C语言程序实例.doc

1、附录一、快速付里哀变换与反变换程序实例#include #include #define pi (double)3.14159265359/*复数定义*/typedef structdouble re;double im;COMPLEX;/*复数加运算*/COMPLEX Add(COMPLEX c1, COMPLEX c2)COMPLEX c;c.re=c1.re+c2.re;c.im=c1.im+c2.im;return c;/*复数减运算*/COMPLEX Sub(COMPLEX c1, COMPLEX c2)COMPLEX c;c.re=c1.re-c2.re;c.im=c1.im-c2

2、.im;return c;/*复数乘运算*/COMPLEX Mul(COMPLEX c1, COMPLEX c2)COMPLEX c;c.re=c1.re*c2.re-c1.im*c2.im;c.im=c1.re*c2.im+c2.re*c1.im;return c;/*快速付里哀变换TD为时域值,FD为频域值,power为2的幂数*/void FFT(COMPLEX * TD, COMPLEX * FD, int power)int count;int i,j,k,bfsize,p;double angle;COMPLEX *W,*X1,*X2,*X;/*计算付里哀变换点数*/count=1

3、power;/*分配运算所需存储器*/W=(COMPLEX *)malloc(sizeof(COMPLEX)*count/2);X1=(COMPLEX *)malloc(sizeof(COMPLEX)*count);X2=(COMPLEX *)malloc(sizeof(COMPLEX)*count);/*计算加权系数*/for(i=0;icount/2;i+)angle=-i*pi*2/count;Wi.re=cos(angle);Wi.im=sin(angle);/*将时域点写入存储器*/memcpy(X1,TD,sizeof(COMPLEX)*count);/*蝶形运算*/for(k=0

4、;kpower;k+)for(j=0;j1k;j+)bfsize=1power-k;for(i=0;ibfsize/2;i+)p=j*bfsize;X2i+p=Add(X1i+p,X1i+p+bfsize/2);X2i+p+bfsize/2=Mul(Sub(X1i+p,X1i+p+bfsize/2),Wi*(1k);X=X1;X1=X2;X2=X;/*重新排序*/for(j=0;jcount;j+)p=0;for(i=0;ipower;i+)if (j&(1i) p+=1power-i-1;FDj=X1p;/*释放存储器*/free(W);free(X1);free(X2);/*快速付里哀反变

5、换,利用快速付里哀变换FD为频域值,TD为时域值,power为2的幂数*/void IFFT(COMPLEX *FD, COMPLEX *TD, int power)int i,count;COMPLEX *x;/*计算付里哀反变换点数*/count=1power;/*分配运算所需存储器*/x=(COMPLEX *)malloc(sizeof(COMPLEX)*count);/*将频域点写入存储器*/memcpy(x,FD,sizeof(COMPLEX)*count);/*求频域点的共轭*/for(i=0;icount;i+)xi.im=-xi.im;/*调用快速付里哀变换*/FFT(x,TD

6、,power);/*求时域点的共轭*/for(i=0;icount;i+)TDi.re/=count;TDi.im=-TDi.im/count;/*释放存储器*/free(x);附录二、快速余弦变换与反变换程序实例(利用2N点付里哀变换实现快速余弦变换)/*快速离散余弦变换,利用快速付里哀变换f为时域值,F为变换域值,power为2的幂数*/void DCT(double *f, double *F, int power)int i,count;COMPLEX *X;double s;/*计算离散余弦变换点数*/count=1power;/*分配运算所需存储器*/X=(COMPLEX *)ma

7、lloc(sizeof(COMPLEX)*count*2);/*延拓*/memset(X,0,sizeof(COMPLEX)*count*2);/*将时域点写入存储器*/for(i=0;icount;i+)Xi.re=fi;/*调用快速付里哀变换*/FFT(X,X,power+1);/*调整系数*/s=1/sqrt(count);F0=X0.re*s;s*=sqrt(2);for(i=1;icount;i+)Fi=(Xi.re*cos(i*pi/(count*2)+Xi.im*sin(i*pi/(count*2)*s;/*释放存储器*/free(X);/*快速离散余弦反变换,利用快速付里哀反变

8、换F为变换域值,f为时域值,power为2的幂数*/void IDCT(double *F, double *f, int power)int i,count;COMPLEX *X;double s;/*计算离散余弦反变换点数*/count=1power;/*分配运算所需存储器*/X=(COMPLEX *)malloc(sizeof(COMPLEX)*count*2);/*延拓*/memset(X,0,sizeof(COMPLEX)*count*2);/*调整频域点并写入存储器*/for(i=0;icount;i+)Xi.re=Fi*cos(i*pi/(count*2);Xi.im=Fi*si

9、n(i*pi/(count*2);/*调用快速付里哀反变换*/IFFT(X,X,power+1);/*调整系数*/s=1/sqrt(count);for(i=0;icount;i+)fi=(1-sqrt(2)*s*F0+sqrt(2)*s*Xi.re*count*2;/*释放存储器*/free(X);附录三、快速Walsh-Hadamard变换与反变换程序实例/*快速沃尔什-哈达玛变换f为时域值,F为变换域值,power为2的幂数*/void WALh(double *f, double *W, int power)int count;int i,j,k,bfsize,p;double *X1

10、,*X2,*X;/*计算快速沃尔什变换点数*/count=1power;/*分配运算所需存储器*/X1=(double *)malloc(sizeof(double)*count);X2=(double *)malloc(sizeof(double)*count);/*将时域点写入存储器*/memcpy(X1,f,sizeof(double)*count);/*蝶形运算*/for(k=0;kpower;k+)for(j=0;j1k;j+)bfsize=1power-k;for(i=0;ibfsize/2;i+)p=j*bfsize;X2i+p=X1i+p+X1i+p+bfsize/2;X2i+

11、p+bfsize/2=X1i+p-X1i+p+bfsize/2;X=X1;X1=X2;X2=X;/*调整系数*/for(i=0;icount;i+)Wi=X1i/count;/*释放存储器*/free(X1);free(X2);/*快速沃尔什-哈达玛反变换,利用快速沃尔什-哈达玛变换F为变换域值,f为时域值,power为2的幂数*/void IWALh(double *W, double *f, int power)int i,count;count=1power;/*调用快速沃尔什-哈达玛变换*/WALh(W,f,power);/*调整系数*/for(i=0;icount;i+)fi*=co

12、unt;附录四、二维小波分解与重构程序实例/ *(基于Windows的二维小波分解与重构BC+4。5)*/#include #include #include #include #include #include #include #include #include #include #include #include #include stdio.h#include stdlib.h#include bmpview.h#define PI 3.1415926#define SIZE 256#define DD 13float hDD=-0.00332761,0.00569794,0.0196

13、637,-0.0482603,-0.0485391, 0.292562,0.564406,0.292562,-0.0485391,-0.0482602,-0.0196637, 0.00569794,-0.0033276;float gDD=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 hiDD,giDD;int wavelet_direction=1;int

14、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 *imgSIZE,*imgxSIZE,*imgySIZE;/*for evolution agents*/int AgentN

15、um,ActiveAgent;int SolutionX1000,SolutionY1000;int SearchNum,AgentLife;int Agent10002;int isAgentAlive1000;int SearchTime;unsigned short Image3232;#define MAXAPPNAME 20static const char AppName = Image Processing;/ TBmpViewWindow, a Bitmap displaying window derived from TClipboardViewer to/ facilita

16、te 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

17、(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 |

18、 WS_OVERLAPPEDWINDOW, Attr.X = 100; Attr.Y = 100; Attr.W = 300; Attr.H = 400;/ Destroy window. SubWinPtrType is set to 0 to indicate that the window/ has be closed./TSubWindow:TSubWindow() SubWinPtr = 0;voidTSubWindow:Paint(TDC& dc, bool, TRect&)class TBmpViewWindow : virtual public TWindow, public

19、TClipboardViewer public: char FileNameMAXPATH; 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 *f256,*g256; TBmpViewWindow();TBmpViewWindow(); void ShowSubWi

20、ndow(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); void CeAutoClipView(TCommandEnabler& ce); /* Image Processing*/ void CmWavele

21、t(); 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)

22、; 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

23、_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, CeAutoClipV

24、iew),/*Image Processing*/ EV_COMMAND(CM_WAVELET,CmWavelet), EV_COMMAND(CM_AGENT,CmAgent),/*/ EV_WM_SIZE, EV_WM_PALETTECHANGED, EV_WM_QUERYNEWPALETTE, EV_WM_SETFOCUS, EV_WM_DRAWCLIPBOARD, EV_WM_DESTROY,END_RESPONSE_TABLE;/*agent search*/*小波变换菜单Wavelet*/*原图象存在lena.bmp*/*运行后,分解图象存在lenawt.bmp*/*重建图象存在le

25、naiwt.bmp*/void TBmpViewWindow:CmAgent() char ss5; int i,j,k,x,y; AgentNum=5;ActiveAgent=5;SearchNum=0; AgentLife=2; SearchTime=0; for(i=0;iAgentNum;i+)Agenti0=5*i+1;Agenti1=5*i+1;isAgentAlivei=1;/MessageBox(ss,ss,MB_OK);if(pMemDC)for(x=0;x32;x+) for(y=0;yGetPixel(x,y);/ imgij=fij; while(1)MessageBo

26、x(ss,ss,MB_OK); if(ActiveAgent=0)break; for( i=0;iSetPixel(x,y, (unsigned char)Imagexy); AdjustScroller();SearchNum+=1;/*judge direction*/ if(x+1)=0 & Imagex-1y=0) x=x-1;Agenti0=x; elseif(y-1)=0&Imagexy-1=0)y=y-1;Agenti1=y; else if(y+1)32&Imagexy+1=0)y=y+1;Agenti1=y;else isAgentAlivei=0; ActiveAgent

27、-=1;else /*judge direction*/ if(x+1)=0 & Imagex-1y=0) x=x-1;Agenti0=x; elseif(y-1)=0&Imagexy-1=0)y=y-1;Agenti1=y; else if(y+1)GetName(), MB_OK);CloseWindow(0); mfile=fopen(lenawt.bmp,wb); if(!mfile) MessageBox(Cannot open file lenawt.raw, GetApplication()-GetName(), MB_OK);CloseWindow(0); outputfile

28、=fopen(lenaiwt.bmp,wb); if(!outputfile) MessageBox(Cannot open file lenawt.raw, GetApplication()-GetName(), MB_OK);CloseWindow(0); for(i=0;iGetName(), MB_OK);CloseWindow(0);if(imgyi=(float far*)farmalloc(SIZE*sizeof(float)=NULL) MessageBox(Cannot malloc memory for displaying bitmap file, GetApplicat

29、ion()-GetName(), MB_OK);CloseWindow(0);if(imgi=(float far*)farmalloc(SIZE*sizeof(float)=NULL) MessageBox(Cannot malloc memory for displaying bitmap file, GetApplication()-GetName(), MB_OK);CloseWindow(0); /read input file fread(buf1,1,1078,inputfile);for(i=0;iSIZE;i+) fread(buf,1,SIZE,inputfile); fo

30、r(j=0;jSIZE;j+) imgij=(float)(bufj)-128.0; fclose(inputfile);/start wt. coef(); xs=SIZE; ys=SIZE; wt(xs,ys,SIZE,SIZE); xs=xs/2;ys=ys/2; wt(xs,ys,SIZE,SIZE); xs=xs/2;ys=ys/2; wt(xs,ys,SIZE,SIZE);/*write the wt result file*/ fwrite(buf1,1,1078,mfile); for(i=0;iSIZE;i+) for(j=0;jSIZE;j+) bufj=(unsigned

31、 char)(s(imgij)+128); imgij=(float)bufj-128.0; fwrite(buf,1,SIZE,mfile); fclose(mfile);/*start inverse wt.*/iwt(xs,ys,SIZE,SIZE);xs=2*xs;ys=2*ys;iwt(xs,ys,SIZE,SIZE);xs=2*xs;ys=2*ys;iwt(xs,ys,SIZE,SIZE); fwrite(buf1,1,1078,outputfile); for(i=0;iSIZE;i+) for(j=0;jSIZE;j+) bufj=(unsigned char)(s(imgij

32、)+128); fwrite(buf,1,SIZE,outputfile); fclose(outputfile);/* LoadBitmapFile(lenawt.bmp); SetCaption(strlwr(lenawt.bmp); LoadBitmapFile(lenaiwt.bmp); SetCaption(strlwr(lenaiwt.bmp); */ for(i=0;i=SIZE-1;i+) farfree(imgyi); farfree(imgxi); farfree(imgi); if(wavelet_direction=1)wavelet_direction=0; else

33、 wavelet_direction=1;/Edge Process/int a(int x,int xsize) if(x=xsize)x=xsize*2-x-2; return(x); /Threshold/int s(float x) if(x127)return(127); if(x-128)return(-128); return(x); /Set Inverse Filter Coefficients/void coef() int i; for(i=0;iDD;i+) hii=hDD-1-i;gii=gDD-1-i; /*二维小波分解*/void wt(int xs,int ys

34、,long xsize,long ysize) int i,j,k,n; float temp1,temp2; float bufferxSIZE,bufferySIZE; for(n=0;nys;n+) for(i=0;ixs;i+=2) temp1=0; temp2=0; for(j=-(DD-1)/2;j=(DD-1)/2;j+) temp1=temp1+hj+(DD-1)/2*imgna(i+j,xs); for(j=-(DD-1)/2+1;j=(DD-1)/2+1;j+) temp2=temp2+gj+(DD-1)/2-1*imgna(i+j,xs); bufferxi/2=temp

35、1; bufferxi/2+xs/2=temp2; for(k=0;kxs;k+)imgnk=bufferxk; /*Filter in the vertical direction*/ for(n=0;nxs;n+) for(i=0;iys;i+=2) temp1=0; temp2=0; for(j=-(DD-1)/2;j=(DD-1)/2;j+) temp1=temp1+hj+(DD-1)/2*imga(i+j,ys)n; for(j=-(DD-1)/2+1;j=(DD-1)/2+1;j+) temp2=temp2+gj+(DD-1)/2-1*imga(i+j,ys)n; bufferyi/2=temp1; bufferyi/2+ys/2=temp2; for(k=0;kys;k+)imgkn=bufferyk; /*二维小波重构*/void iwt(int xs,int ys,long xsi

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服