Re: [問題] fft和ifft已回收
※ 引述《juzn (juzn)》之銘言:
: ※ 引述《cdm3201 ()》之銘言:
: : pic1=abs(fftshfit(ifft2(Fpic)));
: 上面這行程式不正確 改成下面那樣就對了
: pic1=ifft2(ifftshift(Fpic));
: 要注意的是 做了fft2以後 如果又用fftshift
: 那要反轉換前 需要先使用 ifftshift 把資料移回正確的位置
: 然後再使用ifft2即可得回原圖。
: : 如果只是單純轉回來(沒要在頻域做處理的話)
: : Fpic = fft2(pic);
: : pic1 = ifft2(pic);
: : imshow(pic1);
: : 另外3by3的圖也太小了吧 = =
: : 只接看變數應該會比較快
: : 總之一句話,原po忘記打ifft2的"2"了
: : 另外小弟fft的觀念也是一知半解
: : pic1=abs(fftshfit(ifft2(Fpic)));
: : 這部份也是不知所云
: : 有高手可以點一下嗎? 謝謝。
: 低手試著點一下錯誤
: pic1有四個錯誤 1. fftshift拼錯
: 2.應該用的是 ifftshift
: 3.應該先做ifftshift再做ifft2
: 4.abs是多餘的
小的還是不明白啊...
1. 我把某張灰階圖 (jpeg) 讀入成 of_r
2. 嘗試做 fft 後再做 inverse fft 看會不會變回原圖 (of_r)
.a. iffr = ifft2(fft2(of_r)); imshow(iffr); % fft 後直接 ifft
結果沒變回原圖, 變成全白
.b. iffr = ifft2(fftshift(fft2(of_r))); imshow(iffr); % shift 一下
結果沒變回原圖, 變成黑白相間的點格狀圖
.c. iffr = real(ifft2(fftshift(fft2(of_r)))); imshow(iffr); % .b. 取個實部吧
結果沒變回原圖, 變成同 .b. 的圖
.d. iffr = real(ifft2(fft2(of_r))); imshow(iffr);...
% 不 fftshift 了, 直接 ifft2 後取實部
結果沒變回原圖, 變成同 .a. 的圖
.e. iffr = real(ifft2(ifftshift(fftshift(fft2(of_r))))); imshow (iffr);...
% 取完 fft2 後再 fftshift 後再 ifftshift 再 ifft2 後取實部
結果沒變回原圖, 變成同 .a. 的圖
.f. iffr = ifft2(ifftshift(fftshift(fft2(of_r)))); imshow (iffr);...
% 同 .e., 不過最後不取實部了
結果沒變回原圖, 變成同 .a. 的圖
.g. iffr = ifft(ifftshift(fftshift(fft(of_r)))); imshow (iffr); ...
% 改用 fft() 與 ifft() 取代 fft2() 與 ifft2()
結果沒變回原圖,變成同 .a. 的圖
.h. iffr = real(ifft(ifftshift(fftshift(fft(of_r))))); imshow (iffr);...
% 把 .g. 取個實部吧
結果沒變回原圖, 變成同 .a. 的圖
.i. iffr = ifft(fft(of_r)); imshow (iffr);
結果變成 .a. 的圖
.j. iffr = real(ifft(fft(of_r))); imshow (iffr);
結果變成 .a. 的圖
以上試了 .a. ~ .j. 共十種方法, 都沒有辦法讓 iffr 看起來跟 of_r 一樣啊...
of_r 是個 1360 X 1234 的灰階 jpg 圖檔.
請高手幫忙解開我的盲點啊...thanks a lot.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.35.16.198
→
05/01 22:34, , 1F
05/01 22:34, 1F
→
05/01 22:34, , 2F
05/01 22:34, 2F
推
05/01 23:45, , 3F
05/01 23:45, 3F
→
05/05 00:56, , 4F
05/05 00:56, 4F
討論串 (同標題文章)