2維DFT問題 |
尚未結案
|
encoref70036
一般會員 發表:29 回覆:47 積分:15 註冊:2011-05-18 發送簡訊給我 |
您好 我照著sd016808前輩寫的DFT程式做2維DFT 但是沒有成功 麻煩各位前輩幫我看一下 感恩~
M-1 N-1 我是用這個公式:F(u,v)=希格馬希格馬f(x,y)(cos(ux/M)-jsin(vy/N)) x=0 y=0 程式碼如下: #define pi 3.1415926535 [code cpp] TMDIChild *Child; Child = (TMDIChild *)ActiveMDIChild; Graphics::TBitmap *Fbmp = new Graphics::TBitmap(); Graphics::TBitmap *fbmp = new Graphics::TBitmap(); Fbmp->Assign(Child->Image1->Picture); Fbmp->PixelFormat=pf32bit; fbmp->Assign(Child->Image1->Picture); fbmp->PixelFormat=pf32bit; int M=fbmp->Width; int N=fbmp->Height; Byte *Fptr,*fptr; float a,re0,re1,re2,im0,im1,im2,center=0,b; int max=0,min=0; for(int v=0;v Fptr=(Byte*)Fbmp->ScanLine[v]; for(int u=0;u re0=0; im0=0; for(int y=0;y fptr=(Byte*)fbmp->ScanLine[y]; for(int x=0;x center=powl(-1,x y);//讓原點在圖中心 a=2*pi*((u*x)/M (v*y)/N); re0 =(fptr[4*x]*center*cos(a)); im0 =(fptr[4*x]*center*sin(a)); } } b=(sqrt(powl(re0,2) powl(im0,2)))/3.4;//除3.4因為我有先抓最大值,除3.4把所有值控制在255以內 if(b>max) max=b; if(b Fptr[4*u 1]=(int)b; Fptr[4*u 2]=(int)b; } } Child->Image1->Picture->Assign(Fbmp); ShowMessage("Max: " IntToStr(max) "Min: " IntToStr(min)); delete Fbmp; delete fbmp; [/code] 因為我開的影像是灰階的所以我就只做fptr[4*x] 但是做出來的影像都沒有變化 請問是為什麼呢 麻煩大俠了 影像如下 原始圖: 改變後: 編輯記錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |