線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:974
推到 Plurk!
推到 Facebook!

2維DFT問題

尚未結案
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-11-04 22:01:31 IP:114.26.xxx.xxx 訂閱
您好 我照著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]=(int)b;//re0平方 re1平方開根號
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]
但是做出來的影像都沒有變化 請問是為什麼呢 麻煩大俠了
影像如下
原始圖:

改變後:



編輯記錄
encoref70036 重新編輯於 2011-11-07 05:06:16, 註解 無‧
encoref70036 重新編輯於 2011-11-07 05:06:52, 註解 無‧
系統時間:2024-05-02 5:44:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!