Re: [問題] fft和ifft已回收

看板MATLAB作者 (夢王子)時間14年前 (2010/05/01 21:16), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《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
自問自答一下...會不會是沒轉成 double 再除以 255 的關
05/01 22:34, 1F

05/01 22:34, , 2F
係啊...
05/01 22:34, 2F

05/01 23:45, , 3F
是的 要用imshow還要轉回uint8
05/01 23:45, 3F

05/05 00:56, , 4F
imshow(a,[]);
05/05 00:56, 4F
文章代碼(AID): #1Bt2ckJH (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Bt2ckJH (MATLAB)