全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1238
推到 Plurk!
推到 Facebook!

請問一下關於二維影像的DFT

缺席
sd016808
一般會員


發表:1
回覆:2
積分:0
註冊:2011-10-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-05 21:42:59 IP:140.118.xxx.xxx 訂閱
請問一下做完DFT轉換之後,是要取大小之後再回傳給像素點?還是只取實部做回傳?

另外關於exp的指數部分,我看課本上的公式,應該是長這樣子a=2*M_PI*(((u*x)/Width) ((v*y)/Height))

但我看網路上的教學,幾乎都是長這個樣子a=2*M_PI*((u*x) (v*y))/Width

我兩種都有去試過,但跑出來的影像都不正確

取前面那種,跑完整張影像會變黑的,取後面那種影像中間會有一白點,周圍都是黑底

請問一下我的程式碼是哪裡寫錯了 問題有點多 很抱歉




[cpp__fastcall ::(*)
{
GraphicsTBitmap TheBitmap*;
int ,,,,,,=;
float =,=;
Byte ptr1*;
stdcomplexdoubleB = GraphicsTBitmap =->->;
TheBitmapPixelFormatpf8bit ->();
TempBitmapPixelFormatpf8bit =->;
HeightTheBitmapHeight
//int aaa[64][64]={0};
forv0v(); =Byte) ->[];
ptrt(*TempBitmapScanLinev (=;<Widthu)
{
B_M_re0 .=;
forx0x(); (=;<Heighty)
{
//a=2*M_PI*(((u*x)/Width) ((v*y)/Height));
temppowl-, );
a2M_PI((*)(*))Width . =ptr1u**());
B_M_im([]tempsina}
}
B_M_reB_M_reWidth .=./;
ptrtu=intsqrtpowlB_M_re2 (.,));
ifptrtu<)
ptrtu=;
ifptrtu>)
ptrtu=;
} /*for(v=0;v<(Height);v )
{
ptrt=(Byte*) TempBitmap->ScanLine[v];
for(u=0;u<(Width);u )
{
if(aaa[u][v]>real_max)
{
real_max=aaa[u][v];
}
if(aaa[u][v]
{
real_min=aaa[u][v];
}
}
}
for(v=0;v<(Height);v )
{
ptrt=(Byte*) TempBitmap->ScanLine[v];
for(u=0;u<(Width);u )
{
ptrt[u]=aaa[u][v]*255/(real_max-real_min);
}
}*/
TheBitmapAssignTempBitmap ->();
delete ;
}
[code]

編輯記錄
sd016808 重新編輯於 2011-10-05 07:44:48, 註解 無‧
sd016808 重新編輯於 2011-10-05 07:47:16, 註解 無‧
sd016808 重新編輯於 2011-10-05 07:48:12, 註解 無‧
sd016808 重新編輯於 2011-10-05 07:50:08, 註解 無‧
sd016808 重新編輯於 2011-10-05 07:50:39, 註解 無‧
sd016808 重新編輯於 2011-10-05 07:52:20, 註解 無‧
sd016808
一般會員


發表:1
回覆:2
積分:0
註冊:2011-10-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-07 01:11:35 IP:59.121.xxx.xxx 訂閱
 我把scanline 改成用Canvas的方式 圖片就跑出來了 不知道為何不能用Scanline的方式

sd016808
一般會員


發表:1
回覆:2
積分:0
註冊:2011-10-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-10-07 15:56:53 IP:140.118.xxx.xxx 訂閱
我發現是我自己耍笨了 scanline跟canvas都可以用  我scanline 的ptr1部份放錯位置了...
encoref70036
一般會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-11-02 23:27:47 IP:114.26.xxx.xxx 訂閱
sd016808前輩您好
請問您為什麼要做這兩段呢.=./;
B_M_imB_M_imWidth;
公式上好像沒有再除以寬 但是好像要除影像才會正確 請問是為什麼呢?
還有前輩您用這個公式可以做得出來嗎a=2*M_PI*(((u*x)/Width) ((v*y)/Height))
我做的影像出來都不正確~
系統時間:2024-11-21 22:59:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!